@beyondcorp/beyond-ui 1.0.99 → 1.1.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.
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { type MenuItem } from "../Sidebar";
2
+ import { type MenuItem, type SidebarProfileSectionProps } from "../Sidebar";
3
3
  import { type BreadcrumbItem } from "../DashboardHeader";
4
4
  /**
5
5
  * DashboardLayoutProps
@@ -31,6 +31,8 @@ interface DashboardLayoutProps {
31
31
  profileButtonProps?: import("../Sidebar/ProfileButton").ProfileButtonProps;
32
32
  /** Props for LogoutButton in Sidebar */
33
33
  logoutButtonProps?: import("../Sidebar/LogoutButton").LogoutButtonProps;
34
+ /** Props for Sidebar profile section (avatar, name, email, etc.) */
35
+ profileSectionProps?: SidebarProfileSectionProps;
34
36
  }
35
37
  declare const DashboardLayout: React.ForwardRefExoticComponent<DashboardLayoutProps & React.RefAttributes<HTMLDivElement>>;
36
38
  export { DashboardLayout };
@@ -4,7 +4,7 @@ import { cn } from '../../utils/cn.js';
4
4
  import { Sidebar } from '../Sidebar/Sidebar.js';
5
5
  import { DashboardHeader } from '../DashboardHeader/DashboardHeader.js';
6
6
 
7
- const DashboardLayout = React.forwardRef(({ children, className, sidebarMenuItems, activeSidebarItem, breadcrumbs, onSidebarItemClick, showSearch, searchPlaceholder, onSearchChange, sidebarTitle, sidebarTitleLetter, sidebarHeaderClassName, profileButtonProps, logoutButtonProps, ...props }, ref) => {
7
+ const DashboardLayout = React.forwardRef(({ children, className, sidebarMenuItems, activeSidebarItem, breadcrumbs, onSidebarItemClick, showSearch, searchPlaceholder, onSearchChange, sidebarTitle, sidebarTitleLetter, sidebarHeaderClassName, profileButtonProps, logoutButtonProps, profileSectionProps, ...props }, ref) => {
8
8
  const [sidebarCollapsed, setSidebarCollapsed] = React.useState(false);
9
9
  const toggleSidebar = () => {
10
10
  setSidebarCollapsed(prev => !prev);
@@ -17,7 +17,7 @@ const DashboardLayout = React.forwardRef(({ children, className, sidebarMenuItem
17
17
  height: "100vh",
18
18
  width: sidebarCollapsed ? "4rem" : "18rem", // Tailwind: w-16 or w-72
19
19
  transition: "width 0.3s",
20
- }, profileButtonProps: profileButtonProps, logoutButtonProps: logoutButtonProps }), jsx(DashboardHeader, { sidebarCollapsed: sidebarCollapsed, onMenuToggle: toggleSidebar, breadcrumbs: breadcrumbs, showSearch: showSearch, searchPlaceholder: searchPlaceholder, onSearchChange: onSearchChange, style: {
20
+ }, profileButtonProps: profileButtonProps, logoutButtonProps: logoutButtonProps, profileSectionProps: profileSectionProps }), jsx(DashboardHeader, { sidebarCollapsed: sidebarCollapsed, onMenuToggle: toggleSidebar, breadcrumbs: breadcrumbs, showSearch: showSearch, searchPlaceholder: searchPlaceholder, onSearchChange: onSearchChange, style: {
21
21
  zIndex: 30,
22
22
  position: "fixed",
23
23
  top: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardLayout.js","sources":["../../../src/components/DashboardLayout/DashboardLayout.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { Sidebar, type MenuItem } from \"../Sidebar\";\r\nimport { DashboardHeader, type BreadcrumbItem } from \"../DashboardHeader\";\r\n\r\n/**\r\n * DashboardLayoutProps\r\n * - sidebarTitle: Title text for Sidebar header (default: \"Beyond\")\r\n * - sidebarTitleLetter: Letter/initial for Sidebar header (default: \"B\")\r\n * - sidebarHeaderClassName: Optional className for SidebarHeader\r\n *\r\n * These props are forwarded to Sidebar for dynamic header branding.\r\n */\r\ninterface DashboardLayoutProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n sidebarMenuItems?: MenuItem[];\r\n activeSidebarItem?: string;\r\n breadcrumbs?: BreadcrumbItem[];\r\n onSidebarItemClick?: (itemId: string) => void;\r\n showSearch?: boolean;\r\n searchPlaceholder?: string;\r\n onSearchChange?: (value: string) => void;\r\n sidebarClassName?: string;\r\n disableSidebarMargin?: boolean;\r\n /** Sidebar header title (default: \"Beyond\") */\r\n sidebarTitle?: string;\r\n /** Sidebar header letter (default: \"B\") */\r\n sidebarTitleLetter?: string;\r\n /** Optional className for SidebarHeader */\r\n sidebarHeaderClassName?: string;\r\n /** Props for ProfileButton in Sidebar */\r\n profileButtonProps?: import(\"../Sidebar/ProfileButton\").ProfileButtonProps;\r\n /** Props for LogoutButton in Sidebar */\r\n logoutButtonProps?: import(\"../Sidebar/LogoutButton\").LogoutButtonProps;\r\n}\r\n\r\nconst DashboardLayout = React.forwardRef<HTMLDivElement, DashboardLayoutProps>(\r\n ({\r\n children,\r\n className,\r\n sidebarMenuItems,\r\n activeSidebarItem,\r\n breadcrumbs,\r\n onSidebarItemClick,\r\n showSearch,\r\n searchPlaceholder,\r\n onSearchChange,\r\n sidebarTitle,\r\n sidebarTitleLetter,\r\n sidebarHeaderClassName,\r\n profileButtonProps,\r\n logoutButtonProps,\r\n ...props\r\n }, ref) => {\r\n const [sidebarCollapsed, setSidebarCollapsed] = React.useState(false);\r\n\r\n const toggleSidebar = () => {\r\n setSidebarCollapsed(prev => !prev);\r\n };\r\n\r\n return (\r\n <div ref={ref} className={cn(\"bg-gray-50 w-full h-screen overflow-hidden\", className)} {...props}>\r\n {/* Fixed Sidebar */}\r\n <Sidebar\r\n collapsed={sidebarCollapsed}\r\n onToggle={toggleSidebar}\r\n menuItems={sidebarMenuItems}\r\n activeItem={activeSidebarItem}\r\n onItemClick={onSidebarItemClick}\r\n className={props.sidebarClassName}\r\n title={sidebarTitle}\r\n titleLetter={sidebarTitleLetter}\r\n headerClassName={sidebarHeaderClassName}\r\n style={{\r\n zIndex: 50,\r\n position: \"fixed\",\r\n left: 0,\r\n top: 0,\r\n height: \"100vh\",\r\n width: sidebarCollapsed ? \"4rem\" : \"18rem\", // Tailwind: w-16 or w-72\r\n transition: \"width 0.3s\",\r\n }}\r\n profileButtonProps={profileButtonProps}\r\n logoutButtonProps={logoutButtonProps}\r\n />\r\n\r\n {/* Fixed Header */}\r\n <DashboardHeader\r\n sidebarCollapsed={sidebarCollapsed}\r\n onMenuToggle={toggleSidebar}\r\n breadcrumbs={breadcrumbs}\r\n showSearch={showSearch}\r\n searchPlaceholder={searchPlaceholder}\r\n onSearchChange={onSearchChange}\r\n style={{\r\n zIndex: 30,\r\n position: \"fixed\",\r\n top: 0,\r\n left: sidebarCollapsed ? \"4rem\" : \"18rem\",\r\n right: 0,\r\n width: `calc(100% - ${sidebarCollapsed ? \"4rem\" : \"18rem\"})`,\r\n transition: \"left 0.3s, width 0.3s\",\r\n }}\r\n />\r\n\r\n {/* Main Content Area (scrollable) */}\r\n <div\r\n className={cn(\r\n \"relative w-full h-full\",\r\n props.disableSidebarMargin ? \"\" : \"\"\r\n )}\r\n style={{\r\n marginLeft: sidebarCollapsed ? \"4rem\" : \"18rem\",\r\n marginTop: \"4.5rem\", // Header height (py-4 + border)\r\n height: \"calc(100vh - 4.5rem)\",\r\n overflowY: \"auto\",\r\n transition: \"margin-left 0.3s\",\r\n }}\r\n >\r\n <main className=\"p-10 w-[90vw]\">\r\n {children}\r\n </main>\r\n </div>\r\n\r\n {/* Mobile Overlay */}\r\n {!sidebarCollapsed && (\r\n <div\r\n className=\"fixed inset-0 bg-black bg-opacity-50 z-40 md:hidden\"\r\n onClick={toggleSidebar}\r\n />\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nDashboardLayout.displayName = \"DashboardLayout\";\r\n\r\nexport { DashboardLayout };"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"DashboardLayout.js","sources":["../../../src/components/DashboardLayout/DashboardLayout.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { Sidebar, type MenuItem, type SidebarProfileSectionProps } from \"../Sidebar\";\r\nimport { DashboardHeader, type BreadcrumbItem } from \"../DashboardHeader\";\r\n\r\n/**\r\n * DashboardLayoutProps\r\n * - sidebarTitle: Title text for Sidebar header (default: \"Beyond\")\r\n * - sidebarTitleLetter: Letter/initial for Sidebar header (default: \"B\")\r\n * - sidebarHeaderClassName: Optional className for SidebarHeader\r\n *\r\n * These props are forwarded to Sidebar for dynamic header branding.\r\n */\r\ninterface DashboardLayoutProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n sidebarMenuItems?: MenuItem[];\r\n activeSidebarItem?: string;\r\n breadcrumbs?: BreadcrumbItem[];\r\n onSidebarItemClick?: (itemId: string) => void;\r\n showSearch?: boolean;\r\n searchPlaceholder?: string;\r\n onSearchChange?: (value: string) => void;\r\n sidebarClassName?: string;\r\n disableSidebarMargin?: boolean;\r\n /** Sidebar header title (default: \"Beyond\") */\r\n sidebarTitle?: string;\r\n /** Sidebar header letter (default: \"B\") */\r\n sidebarTitleLetter?: string;\r\n /** Optional className for SidebarHeader */\r\n sidebarHeaderClassName?: string;\r\n /** Props for ProfileButton in Sidebar */\r\n profileButtonProps?: import(\"../Sidebar/ProfileButton\").ProfileButtonProps;\r\n /** Props for LogoutButton in Sidebar */\r\n logoutButtonProps?: import(\"../Sidebar/LogoutButton\").LogoutButtonProps;\r\n /** Props for Sidebar profile section (avatar, name, email, etc.) */\r\n profileSectionProps?: SidebarProfileSectionProps;\r\n}\r\n\r\nconst DashboardLayout = React.forwardRef<HTMLDivElement, DashboardLayoutProps>(\r\n ({\r\n children,\r\n className,\r\n sidebarMenuItems,\r\n activeSidebarItem,\r\n breadcrumbs,\r\n onSidebarItemClick,\r\n showSearch,\r\n searchPlaceholder,\r\n onSearchChange,\r\n sidebarTitle,\r\n sidebarTitleLetter,\r\n sidebarHeaderClassName,\r\n profileButtonProps,\r\n logoutButtonProps,\r\n profileSectionProps,\r\n ...props\r\n }, ref) => {\r\n const [sidebarCollapsed, setSidebarCollapsed] = React.useState(false);\r\n\r\n const toggleSidebar = () => {\r\n setSidebarCollapsed(prev => !prev);\r\n };\r\n\r\n return (\r\n <div ref={ref} className={cn(\"bg-gray-50 w-full h-screen overflow-hidden\", className)} {...props}>\r\n {/* Fixed Sidebar */}\r\n <Sidebar\r\n collapsed={sidebarCollapsed}\r\n onToggle={toggleSidebar}\r\n menuItems={sidebarMenuItems}\r\n activeItem={activeSidebarItem}\r\n onItemClick={onSidebarItemClick}\r\n className={props.sidebarClassName}\r\n title={sidebarTitle}\r\n titleLetter={sidebarTitleLetter}\r\n headerClassName={sidebarHeaderClassName}\r\n style={{\r\n zIndex: 50,\r\n position: \"fixed\",\r\n left: 0,\r\n top: 0,\r\n height: \"100vh\",\r\n width: sidebarCollapsed ? \"4rem\" : \"18rem\", // Tailwind: w-16 or w-72\r\n transition: \"width 0.3s\",\r\n }}\r\n profileButtonProps={profileButtonProps}\r\n logoutButtonProps={logoutButtonProps}\r\n profileSectionProps={profileSectionProps}\r\n />\r\n\r\n {/* Fixed Header */}\r\n <DashboardHeader\r\n sidebarCollapsed={sidebarCollapsed}\r\n onMenuToggle={toggleSidebar}\r\n breadcrumbs={breadcrumbs}\r\n showSearch={showSearch}\r\n searchPlaceholder={searchPlaceholder}\r\n onSearchChange={onSearchChange}\r\n style={{\r\n zIndex: 30,\r\n position: \"fixed\",\r\n top: 0,\r\n left: sidebarCollapsed ? \"4rem\" : \"18rem\",\r\n right: 0,\r\n width: `calc(100% - ${sidebarCollapsed ? \"4rem\" : \"18rem\"})`,\r\n transition: \"left 0.3s, width 0.3s\",\r\n }}\r\n />\r\n\r\n {/* Main Content Area (scrollable) */}\r\n <div\r\n className={cn(\r\n \"relative w-full h-full\",\r\n props.disableSidebarMargin ? \"\" : \"\"\r\n )}\r\n style={{\r\n marginLeft: sidebarCollapsed ? \"4rem\" : \"18rem\",\r\n marginTop: \"4.5rem\", // Header height (py-4 + border)\r\n height: \"calc(100vh - 4.5rem)\",\r\n overflowY: \"auto\",\r\n transition: \"margin-left 0.3s\",\r\n }}\r\n >\r\n <main className=\"p-10 w-[90vw]\">\r\n {children}\r\n </main>\r\n </div>\r\n\r\n {/* Mobile Overlay */}\r\n {!sidebarCollapsed && (\r\n <div\r\n className=\"fixed inset-0 bg-black bg-opacity-50 z-40 md:hidden\"\r\n onClick={toggleSidebar}\r\n />\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nDashboardLayout.displayName = \"DashboardLayout\";\r\n\r\nexport { DashboardLayout };"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -11,24 +11,13 @@ interface MenuItem {
11
11
  badge?: string;
12
12
  children?: MenuItem[];
13
13
  }
14
- /**
15
- * SidebarProps
16
- * - title: The main title text in the sidebar header (default: "Beyond").
17
- * - titleLetter: The single letter/initial in the colored box (default: "B").
18
- * - headerClassName: Optional className for SidebarHeader for further customization.
19
- *
20
- * These props allow consumers to fully customize the Sidebar header section.
21
- * If not provided, the default branding is preserved for backward compatibility.
22
- */
23
- /**
24
- * Profile section data for Sidebar.
25
- * If not provided, defaults are used.
26
- */
27
- export interface SidebarProfile {
28
- avatarSrc?: string;
14
+ export interface SidebarProfileSectionProps {
15
+ avatarUrl?: string;
29
16
  name?: string;
30
17
  email?: string;
31
18
  avatarFallback?: string;
19
+ collapsedAvatarSize?: "sm" | "md" | "lg";
20
+ expandedAvatarSize?: "sm" | "md" | "lg";
32
21
  }
33
22
  interface SidebarProps extends VariantProps<typeof sidebarVariants> {
34
23
  className?: string;
@@ -47,8 +36,8 @@ interface SidebarProps extends VariantProps<typeof sidebarVariants> {
47
36
  profileButtonProps?: import("./ProfileButton").ProfileButtonProps;
48
37
  /** Props for LogoutButton (stateless usage) */
49
38
  logoutButtonProps?: import("./LogoutButton").LogoutButtonProps;
50
- /** Profile section data (avatar, name, email, fallback) */
51
- profile?: SidebarProfile;
39
+ /** Dynamic profile section props */
40
+ profileSectionProps?: SidebarProfileSectionProps;
52
41
  }
53
42
  declare const Sidebar: React.ForwardRefExoticComponent<SidebarProps & React.RefAttributes<HTMLDivElement>>;
54
43
  export { Sidebar, sidebarVariants, type MenuItem };
@@ -91,7 +91,7 @@ const defaultMenuItems = [
91
91
  href: "/settings",
92
92
  },
93
93
  ];
94
- const Sidebar = React.forwardRef(({ className, collapsed = false, onToggle, menuItems = defaultMenuItems, activeItem = "dashboard", onItemClick, title = "Beyond", titleLetter = "B", headerClassName, profileButtonProps, logoutButtonProps, profile, ...props }, ref) => {
94
+ const Sidebar = React.forwardRef(({ className, collapsed = false, onToggle, menuItems = defaultMenuItems, activeItem = "dashboard", onItemClick, title = "Beyond", titleLetter = "B", headerClassName, profileButtonProps, logoutButtonProps, profileSectionProps, ...props }, ref) => {
95
95
  const [expandedItems, setExpandedItems] = React.useState([]);
96
96
  const toggleExpanded = (itemId) => {
97
97
  setExpandedItems(prev => prev.includes(itemId)
@@ -112,9 +112,9 @@ const Sidebar = React.forwardRef(({ className, collapsed = false, onToggle, menu
112
112
  const hasChildren = item.children && item.children.length > 0;
113
113
  return (jsxs("div", { children: [jsx("button", { onClick: () => handleItemClick(item), className: cn(menuItemVariants({ active: isActive, collapsed }), level > 0 && "ml-4 pl-8", "relative"), children: jsxs("div", { className: "flex items-center min-w-0 flex-1", children: [jsx("div", { className: "flex-shrink-0", children: item.icon }), !collapsed && (jsxs(Fragment, { children: [jsx("span", { className: "ml-3 truncate", children: item.label }), item.badge && (jsx(Badge, { variant: "danger", className: "ml-auto text-xs", children: item.badge })), hasChildren && (jsx(ChevronDown, { className: cn("ml-auto h-4 w-4 transition-transform duration-200", isExpanded && "rotate-180") }))] }))] }) }), hasChildren && !collapsed && isExpanded && (jsx("div", { className: "mt-1 space-y-1", children: item.children?.map(child => renderMenuItem(child, level + 1)) }))] }, item.id));
114
114
  };
115
- 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: jsxs(Avatar, { size: "sm", children: [jsx(AvatarImage, { src: profile?.avatarSrc || "https://images.pexels.com/photos/774909/pexels-photo-774909.jpeg?auto=compress&cs=tinysrgb&w=64" }), jsx(AvatarFallback, { children: profile?.avatarFallback || "JD" })] }) })) : (jsxs("div", { className: "space-y-3", children: [jsxs("div", { className: "flex items-center space-x-3", children: [jsxs(Avatar, { size: "sm", children: [jsx(AvatarImage, { src: profile?.avatarSrc || "https://images.pexels.com/photos/774909/pexels-photo-774909.jpeg?auto=compress&cs=tinysrgb&w=64" }), jsx(AvatarFallback, { children: profile?.avatarFallback || "JD" })] }), jsxs("div", { className: "flex-1 min-w-0", children: [jsx("p", { className: "text-sm font-medium text-gray-900 truncate", children: profile?.name || "John Doe" }), jsx("p", { className: "text-xs text-gray-500 truncate", children: profile?.email || "john@company.com" })] })] }), jsxs("div", { className: "flex space-x-2", children: [jsx(ProfileButton, { className: "flex-1", ...profileButtonProps, user: profile
116
- ? { name: profile.name, email: profile.email }
117
- : profileButtonProps?.user }), jsx(LogoutButton, { className: "flex-1", ...logoutButtonProps })] })] })) })] }));
115
+ // Profile section props with fallbacks
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" } = 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: jsxs(Avatar, { size: collapsedAvatarSize, children: [jsx(AvatarImage, { src: avatarUrl }), jsx(AvatarFallback, { children: avatarFallback })] }) })) : (jsxs("div", { className: "space-y-3", children: [jsxs("div", { className: "flex items-center space-x-3", 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 })] })] })) })] }));
118
118
  });
119
119
  Sidebar.displayName = "Sidebar";
120
120
 
@@ -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\n/**\n * SidebarProps\n * - title: The main title text in the sidebar header (default: \"Beyond\").\n * - titleLetter: The single letter/initial in the colored box (default: \"B\").\n * - headerClassName: Optional className for SidebarHeader for further customization.\n *\n * These props allow consumers to fully customize the Sidebar header section.\n * If not provided, the default branding is preserved for backward compatibility.\n */\n/**\n * Profile section data for Sidebar.\n * If not provided, defaults are used.\n */\nexport interface SidebarProfile {\n avatarSrc?: string;\n name?: string;\n email?: string;\n avatarFallback?: string;\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 /** Profile section data (avatar, name, email, fallback) */\n profile?: SidebarProfile;\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 profile,\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 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 {/*\n Sidebar Header\n - Uses SidebarHeader for dynamic branding.\n - Props: title, titleLetter, headerClassName.\n - If not provided, defaults to \"Beyond\" and \"B\" for backward compatibility.\n */}\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 <Avatar size=\"sm\">\n <AvatarImage src={profile?.avatarSrc || \"https://images.pexels.com/photos/774909/pexels-photo-774909.jpeg?auto=compress&cs=tinysrgb&w=64\"} />\n <AvatarFallback>\n {profile?.avatarFallback || \"JD\"}\n </AvatarFallback>\n </Avatar>\n </div>\n ) : (\n <div className=\"space-y-3\">\n <div className=\"flex items-center space-x-3\">\n <Avatar size=\"sm\">\n <AvatarImage src={profile?.avatarSrc || \"https://images.pexels.com/photos/774909/pexels-photo-774909.jpeg?auto=compress&cs=tinysrgb&w=64\"} />\n <AvatarFallback>\n {profile?.avatarFallback || \"JD\"}\n </AvatarFallback>\n </Avatar>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium text-gray-900 truncate\">\n {profile?.name || \"John Doe\"}\n </p>\n <p className=\"text-xs text-gray-500 truncate\">\n {profile?.email || \"john@company.com\"}\n </p>\n </div>\n </div>\n <div className=\"flex space-x-2\">\n {/* Reusable, theme-agnostic profile/logout buttons */}\n <ProfileButton\n className=\"flex-1\"\n {...profileButtonProps}\n user={\n profile\n ? { name: profile.name, email: profile.email }\n : profileButtonProps?.user\n }\n />\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\";\r\nimport { \r\n ChevronLeft, \r\n ChevronRight, \r\n ChevronDown, \r\n Home, \r\n BarChart3, \r\n Users, \r\n Settings, \r\n FileText, \r\n Calendar, \r\n Mail, \r\n Bell,\r\n LogOut,\r\n User\r\n} from \"lucide-react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { Avatar, AvatarImage, AvatarFallback } from \"../Avatar\";\r\nimport { Badge } from \"../Badge\";\r\nimport { ProfileButton } from \"./ProfileButton\";\r\nimport { LogoutButton } from \"./LogoutButton\";\r\n\r\nconst sidebarVariants = cva(\r\n \"fixed left-0 top-0 z-40 h-screen bg-white border-r border-gray-200 transition-all duration-300 ease-in-out\",\r\n {\r\n variants: {\r\n collapsed: {\r\n false: \"w-72\",\r\n true: \"w-16\",\r\n },\r\n },\r\n defaultVariants: {\r\n collapsed: false,\r\n },\r\n }\r\n);\r\n\r\nconst menuItemVariants = cva(\r\n \"flex items-center w-full px-3 py-2.5 text-sm font-medium rounded-lg transition-all duration-200 group\",\r\n {\r\n variants: {\r\n active: {\r\n true: \"bg-primary-50 text-primary-700 border-r-2 border-primary-600\",\r\n false: \"text-gray-700 hover:bg-gray-50 hover:text-gray-900\",\r\n },\r\n collapsed: {\r\n true: \"justify-center px-2\",\r\n false: \"justify-start\",\r\n },\r\n },\r\n defaultVariants: {\r\n active: false,\r\n collapsed: false,\r\n },\r\n }\r\n);\r\n\r\ninterface MenuItem {\r\n id: string;\r\n label: string;\r\n icon: React.ReactNode;\r\n href?: string;\r\n badge?: string;\r\n children?: MenuItem[];\r\n}\r\n\r\nimport { SidebarHeader } from \"./SidebarHeader\";\r\n\r\nexport interface SidebarProfileSectionProps {\r\n avatarUrl?: string;\r\n name?: string;\r\n email?: string;\r\n avatarFallback?: string;\r\n collapsedAvatarSize?: \"sm\" | \"md\" | \"lg\";\r\n expandedAvatarSize?: \"sm\" | \"md\" | \"lg\";\r\n}\r\n\r\ninterface SidebarProps extends VariantProps<typeof sidebarVariants> {\r\n className?: string;\r\n onToggle?: () => void;\r\n menuItems?: MenuItem[];\r\n activeItem?: string;\r\n onItemClick?: (itemId: string) => void;\r\n /** Sidebar header title (default: \"Beyond\") */\r\n title?: string;\r\n /** Sidebar header letter (default: \"B\") */\r\n titleLetter?: string;\r\n /** Optional className for SidebarHeader */\r\n headerClassName?: string;\r\n style?: React.CSSProperties;\r\n /** Props for ProfileButton (stateless usage) */\r\n profileButtonProps?: import(\"./ProfileButton\").ProfileButtonProps;\r\n /** Props for LogoutButton (stateless usage) */\r\n logoutButtonProps?: import(\"./LogoutButton\").LogoutButtonProps;\r\n /** Dynamic profile section props */\r\n profileSectionProps?: SidebarProfileSectionProps;\r\n}\r\n\r\nconst defaultMenuItems: MenuItem[] = [\r\n {\r\n id: \"dashboard\",\r\n label: \"Dashboard\",\r\n icon: <Home className=\"h-5 w-5\" />,\r\n href: \"/dashboard\",\r\n },\r\n {\r\n id: \"analytics\",\r\n label: \"Analytics\",\r\n icon: <BarChart3 className=\"h-5 w-5\" />,\r\n href: \"/analytics\",\r\n badge: \"New\",\r\n },\r\n {\r\n id: \"users\",\r\n label: \"Users\",\r\n icon: <Users className=\"h-5 w-5\" />,\r\n children: [\r\n { id: \"all-users\", label: \"All Users\", icon: <Users className=\"h-4 w-4\" /> },\r\n { id: \"user-roles\", label: \"User Roles\", icon: <Settings className=\"h-4 w-4\" /> },\r\n ],\r\n },\r\n {\r\n id: \"reports\",\r\n label: \"Reports\",\r\n icon: <FileText className=\"h-5 w-5\" />,\r\n href: \"/reports\",\r\n },\r\n {\r\n id: \"calendar\",\r\n label: \"Calendar\",\r\n icon: <Calendar className=\"h-5 w-5\" />,\r\n href: \"/calendar\",\r\n },\r\n {\r\n id: \"messages\",\r\n label: \"Messages\",\r\n icon: <Mail className=\"h-5 w-5\" />,\r\n href: \"/messages\",\r\n badge: \"3\",\r\n },\r\n {\r\n id: \"notifications\",\r\n label: \"Notifications\",\r\n icon: <Bell className=\"h-5 w-5\" />,\r\n href: \"/notifications\",\r\n },\r\n {\r\n id: \"settings\",\r\n label: \"Settings\",\r\n icon: <Settings className=\"h-5 w-5\" />,\r\n href: \"/settings\",\r\n },\r\n];\r\n\r\nconst Sidebar = React.forwardRef<HTMLDivElement, SidebarProps>(\r\n ({\r\n className,\r\n collapsed = false,\r\n onToggle,\r\n menuItems = defaultMenuItems,\r\n activeItem = \"dashboard\",\r\n onItemClick,\r\n title = \"Beyond\",\r\n titleLetter = \"B\",\r\n headerClassName,\r\n profileButtonProps,\r\n logoutButtonProps,\r\n profileSectionProps,\r\n ...props\r\n }, ref) => {\r\n const [expandedItems, setExpandedItems] = React.useState<string[]>([]);\r\n\r\n const toggleExpanded = (itemId: string) => {\r\n setExpandedItems(prev => \r\n prev.includes(itemId) \r\n ? prev.filter(id => id !== itemId)\r\n : [...prev, itemId]\r\n );\r\n };\r\n\r\n const handleItemClick = (item: MenuItem) => {\r\n if (item.children) {\r\n toggleExpanded(item.id);\r\n } else {\r\n onItemClick?.(item.id);\r\n }\r\n };\r\n\r\n const renderMenuItem = (item: MenuItem, level = 0) => {\r\n const isActive = activeItem === item.id;\r\n const isExpanded = expandedItems.includes(item.id);\r\n const hasChildren = item.children && item.children.length > 0;\r\n\r\n return (\r\n <div key={item.id}>\r\n <button\r\n onClick={() => handleItemClick(item)}\r\n className={cn(\r\n menuItemVariants({ active: isActive, collapsed }),\r\n level > 0 && \"ml-4 pl-8\",\r\n \"relative\"\r\n )}\r\n >\r\n <div className=\"flex items-center min-w-0 flex-1\">\r\n <div className=\"flex-shrink-0\">\r\n {item.icon}\r\n </div>\r\n {!collapsed && (\r\n <>\r\n <span className=\"ml-3 truncate\">{item.label}</span>\r\n {item.badge && (\r\n <Badge variant=\"danger\" className=\"ml-auto text-xs\">\r\n {item.badge}\r\n </Badge>\r\n )}\r\n {hasChildren && (\r\n <ChevronDown \r\n className={cn(\r\n \"ml-auto h-4 w-4 transition-transform duration-200\",\r\n isExpanded && \"rotate-180\"\r\n )}\r\n />\r\n )}\r\n </>\r\n )}\r\n </div>\r\n </button>\r\n \r\n {hasChildren && !collapsed && isExpanded && (\r\n <div className=\"mt-1 space-y-1\">\r\n {item.children?.map(child => renderMenuItem(child, level + 1))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n // Profile section props with fallbacks\r\n const {\r\n avatarUrl = \"https://images.pexels.com/photos/774909/pexels-photo-774909.jpeg?auto=compress&cs=tinysrgb&w=64\",\r\n name = \"John Doe\",\r\n email = \"john@company.com\",\r\n avatarFallback = \"JD\",\r\n collapsedAvatarSize = \"sm\",\r\n expandedAvatarSize = \"sm\"\r\n } = profileSectionProps || {};\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cn(\r\n \"flex flex-col h-screen\",\r\n sidebarVariants({ collapsed }),\r\n className\r\n )}\r\n style={props.style}\r\n {...props}\r\n >\r\n {/* Sidebar Header */}\r\n <div className=\"flex items-center justify-between p-4 border-b border-gray-200\">\r\n {!collapsed && (\r\n <SidebarHeader\r\n title={title}\r\n letter={titleLetter}\r\n className={headerClassName}\r\n />\r\n )}\r\n <button\r\n onClick={onToggle}\r\n className=\"p-1.5 rounded-lg hover:bg-gray-100 transition-colors\"\r\n >\r\n {collapsed ? (\r\n <ChevronRight className=\"h-4 w-4 text-gray-600\" />\r\n ) : (\r\n <ChevronLeft className=\"h-4 w-4 text-gray-600\" />\r\n )}\r\n </button>\r\n </div>\r\n\r\n {/* Navigation Menu */}\r\n <nav className=\"flex-1 px-4 py-6 space-y-2 overflow-y-auto\">\r\n {menuItems.map(item => renderMenuItem(item))}\r\n </nav>\r\n\r\n {/* User Profile Section */}\r\n <div className=\"border-t border-gray-200 p-4\">\r\n {collapsed ? (\r\n <div className=\"flex justify-center\">\r\n <Avatar size={collapsedAvatarSize}>\r\n <AvatarImage src={avatarUrl} />\r\n <AvatarFallback>{avatarFallback}</AvatarFallback>\r\n </Avatar>\r\n </div>\r\n ) : (\r\n <div className=\"space-y-3\">\r\n <div className=\"flex items-center space-x-3\">\r\n <Avatar size={expandedAvatarSize}>\r\n <AvatarImage src={avatarUrl} />\r\n <AvatarFallback>{avatarFallback}</AvatarFallback>\r\n </Avatar>\r\n <div className=\"flex-1 min-w-0\">\r\n <p className=\"text-sm font-medium text-gray-900 truncate\">\r\n {name}\r\n </p>\r\n <p className=\"text-xs text-gray-500 truncate\">\r\n {email}\r\n </p>\r\n </div>\r\n </div>\r\n <div className=\"flex space-x-2\">\r\n {/* Reusable, theme-agnostic profile/logout buttons */}\r\n <ProfileButton className=\"flex-1\" {...profileButtonProps} />\r\n <LogoutButton className=\"flex-1\" {...logoutButtonProps} />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nSidebar.displayName = \"Sidebar\";\r\n\r\nexport { Sidebar, sidebarVariants, type MenuItem };"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
package/package.json CHANGED
@@ -1,101 +1,101 @@
1
- {
2
- "name": "@beyondcorp/beyond-ui",
3
- "version": "1.0.99",
4
- "description": "A comprehensive React UI component library built with TypeScript, TailwindCSS, and CVA",
5
- "type": "module",
6
- "main": "dist/index.js",
7
- "module": "dist/index.js",
8
- "types": "dist/index.d.ts",
9
- "files": [
10
- "dist/index.js",
11
- "dist/index.d.ts",
12
- "dist/styles.css",
13
- "dist/components/**/*",
14
- "dist/contexts/**/*",
15
- "dist/services/**/*",
16
- "dist/hooks/**/*",
17
- "dist/utils/**/*",
18
- "dist/theme/**/*"
19
- ],
20
- "scripts": {
21
- "dev": "vite",
22
- "build": "npm run build:css && tsc && vite build",
23
- "build:css": "tailwindcss -i ./src/styles/lib.css -o ./dist/styles.css --content \"./dist/components/**/*.{js,jsx}\" --minify",
24
- "build:lib": "rollup -c && tsc --project tsconfig.build.json --emitDeclarationOnly && npm run build:css",
25
- "lint": "eslint .",
26
- "preview": "vite preview",
27
- "storybook": "storybook dev -p 6006",
28
- "build-storybook": "storybook build",
29
- "test": "jest",
30
- "test:watch": "jest --watch",
31
- "test:coverage": "jest --coverage",
32
- "prepublishOnly": "npm run build:lib"
33
- },
34
- "keywords": [
35
- "react",
36
- "ui",
37
- "components",
38
- "tailwindcss",
39
- "typescript",
40
- "design-system"
41
- ],
42
- "author": "Beyond Corp",
43
- "license": "MIT",
44
- "peerDependencies": {
45
- "react": ">=18.0.0",
46
- "react-dom": ">=18.0.0",
47
- "tailwindcss": ">=3.0.0"
48
- },
49
- "dependencies": {
50
- "@hookform/resolvers": "^5.2.2",
51
- "@radix-ui/react-slot": "^1.0.2",
52
- "@types/prismjs": "^1.26.5",
53
- "class-variance-authority": "^0.7.0",
54
- "clsx": "^2.0.0",
55
- "js-cookie": "^3.0.5",
56
- "lucide-react": "^0.344.0",
57
- "prismjs": "^1.30.0",
58
- "react-hook-form": "^7.62.0",
59
- "react-hot-toast": "^2.4.1",
60
- "react-router-dom": "^7.9.1",
61
- "recharts": "^2.8.0",
62
- "tailwind-merge": "^2.2.0",
63
- "zod": "^4.1.8"
64
- },
65
- "devDependencies": {
66
- "@eslint/js": "^9.9.1",
67
- "@rollup/plugin-commonjs": "^28.0.6",
68
- "@rollup/plugin-node-resolve": "^16.0.1",
69
- "@rollup/plugin-typescript": "^12.1.4",
70
- "@storybook/addon-actions": "^7.6.6",
71
- "@storybook/addon-controls": "^7.6.6",
72
- "@storybook/addon-docs": "^7.6.6",
73
- "@storybook/addon-essentials": "^7.6.6",
74
- "@storybook/blocks": "^7.6.6",
75
- "@storybook/react": "^7.6.6",
76
- "@storybook/react-vite": "^7.6.6",
77
- "@testing-library/jest-dom": "^6.1.6",
78
- "@testing-library/react": "^14.1.2",
79
- "@testing-library/user-event": "^14.5.1",
80
- "@types/js-cookie": "^3.0.6",
81
- "@types/react": "^18.3.5",
82
- "@types/react-dom": "^18.3.0",
83
- "@vitejs/plugin-react": "^4.3.1",
84
- "autoprefixer": "^10.4.18",
85
- "eslint": "^9.9.1",
86
- "eslint-plugin-react-hooks": "^5.1.0-rc.0",
87
- "eslint-plugin-react-refresh": "^0.4.11",
88
- "globals": "^15.9.0",
89
- "jest": "^29.7.0",
90
- "jest-environment-jsdom": "^29.7.0",
91
- "postcss": "^8.4.35",
92
- "rollup": "^4.50.1",
93
- "storybook": "^7.6.6",
94
- "tailwindcss": "^3.4.1",
95
- "tsup": "^7.2.0",
96
- "typescript": "^5.9.2",
97
- "typescript-eslint": "^8.3.0",
98
- "vite": "^5.4.2",
99
- "vite-plugin-dts": "^3.9.1"
100
- }
101
- }
1
+ {
2
+ "name": "@beyondcorp/beyond-ui",
3
+ "version": "1.1.03",
4
+ "description": "A comprehensive React UI component library built with TypeScript, TailwindCSS, and CVA",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "files": [
10
+ "dist/index.js",
11
+ "dist/index.d.ts",
12
+ "dist/styles.css",
13
+ "dist/components/**/*",
14
+ "dist/contexts/**/*",
15
+ "dist/services/**/*",
16
+ "dist/hooks/**/*",
17
+ "dist/utils/**/*",
18
+ "dist/theme/**/*"
19
+ ],
20
+ "scripts": {
21
+ "dev": "vite",
22
+ "build": "npm run build:css && tsc && vite build",
23
+ "build:css": "tailwindcss -i ./src/styles/lib.css -o ./dist/styles.css --content \"./dist/components/**/*.{js,jsx}\" --minify",
24
+ "build:lib": "rollup -c && tsc --project tsconfig.build.json --emitDeclarationOnly && npm run build:css",
25
+ "lint": "eslint .",
26
+ "preview": "vite preview",
27
+ "storybook": "storybook dev -p 6006",
28
+ "build-storybook": "storybook build",
29
+ "test": "jest",
30
+ "test:watch": "jest --watch",
31
+ "test:coverage": "jest --coverage",
32
+ "prepublishOnly": "npm run build:lib"
33
+ },
34
+ "keywords": [
35
+ "react",
36
+ "ui",
37
+ "components",
38
+ "tailwindcss",
39
+ "typescript",
40
+ "design-system"
41
+ ],
42
+ "author": "Beyond Corp",
43
+ "license": "MIT",
44
+ "peerDependencies": {
45
+ "react": ">=18.0.0",
46
+ "react-dom": ">=18.0.0",
47
+ "tailwindcss": ">=3.0.0"
48
+ },
49
+ "dependencies": {
50
+ "@hookform/resolvers": "^5.2.2",
51
+ "@radix-ui/react-slot": "^1.0.2",
52
+ "@types/prismjs": "^1.26.5",
53
+ "class-variance-authority": "^0.7.0",
54
+ "clsx": "^2.0.0",
55
+ "js-cookie": "^3.0.5",
56
+ "lucide-react": "^0.344.0",
57
+ "prismjs": "^1.30.0",
58
+ "react-hook-form": "^7.62.0",
59
+ "react-hot-toast": "^2.4.1",
60
+ "react-router-dom": "^7.9.1",
61
+ "recharts": "^2.8.0",
62
+ "tailwind-merge": "^2.2.0",
63
+ "zod": "^4.1.8"
64
+ },
65
+ "devDependencies": {
66
+ "@eslint/js": "^9.9.1",
67
+ "@rollup/plugin-commonjs": "^28.0.6",
68
+ "@rollup/plugin-node-resolve": "^16.0.1",
69
+ "@rollup/plugin-typescript": "^12.1.4",
70
+ "@storybook/addon-actions": "^7.6.6",
71
+ "@storybook/addon-controls": "^7.6.6",
72
+ "@storybook/addon-docs": "^7.6.6",
73
+ "@storybook/addon-essentials": "^7.6.6",
74
+ "@storybook/blocks": "^7.6.6",
75
+ "@storybook/react": "^7.6.6",
76
+ "@storybook/react-vite": "^7.6.6",
77
+ "@testing-library/jest-dom": "^6.1.6",
78
+ "@testing-library/react": "^14.1.2",
79
+ "@testing-library/user-event": "^14.5.1",
80
+ "@types/js-cookie": "^3.0.6",
81
+ "@types/react": "^18.3.5",
82
+ "@types/react-dom": "^18.3.0",
83
+ "@vitejs/plugin-react": "^4.3.1",
84
+ "autoprefixer": "^10.4.18",
85
+ "eslint": "^9.9.1",
86
+ "eslint-plugin-react-hooks": "^5.1.0-rc.0",
87
+ "eslint-plugin-react-refresh": "^0.4.11",
88
+ "globals": "^15.9.0",
89
+ "jest": "^29.7.0",
90
+ "jest-environment-jsdom": "^29.7.0",
91
+ "postcss": "^8.4.35",
92
+ "rollup": "^4.50.1",
93
+ "storybook": "^7.6.6",
94
+ "tailwindcss": "^3.4.1",
95
+ "tsup": "^7.2.0",
96
+ "typescript": "^5.9.2",
97
+ "typescript-eslint": "^8.3.0",
98
+ "vite": "^5.4.2",
99
+ "vite-plugin-dts": "^3.9.1"
100
+ }
101
+ }