@beyondcorp/beyond-ui 1.2.81 → 1.2.85

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 (60) hide show
  1. package/README.md +394 -363
  2. package/dist/components/Alert/Alert.example.js.map +1 -1
  3. package/dist/components/Auth/LoginForm.example.js.map +1 -1
  4. package/dist/components/Auth/PasswordResetForm.example.js.map +1 -1
  5. package/dist/components/Auth/PasswordResetForm.js.map +1 -1
  6. package/dist/components/Auth/ProtectedRoute.example.js.map +1 -1
  7. package/dist/components/Auth/SignupForm.example.js.map +1 -1
  8. package/dist/components/Avatar/Avatar.example.js.map +1 -1
  9. package/dist/components/Badge/Badge.example.js.map +1 -1
  10. package/dist/components/Blog/BlogShowcase.js +36 -36
  11. package/dist/components/Blog/BlogShowcase.js.map +1 -1
  12. package/dist/components/Button/Button.example.js.map +1 -1
  13. package/dist/components/Card/Card.example.js.map +1 -1
  14. package/dist/components/Card/Card.js.map +1 -1
  15. package/dist/components/Checkbox/Checkbox.example.js.map +1 -1
  16. package/dist/components/CodeHighlight/CodeHighlight.js.map +1 -1
  17. package/dist/components/ComponentShowcase/ComponentShowcase.js +54 -9
  18. package/dist/components/ComponentShowcase/ComponentShowcase.js.map +1 -1
  19. package/dist/components/ComponentShowcase/componentDocs.js +21 -21
  20. package/dist/components/ComponentShowcase/componentDocs.js.map +1 -1
  21. package/dist/components/ComponentShowcase/showcaseRegistry.js.map +1 -1
  22. package/dist/components/DashboardGrid/DashboardGrid.example.js.map +1 -1
  23. package/dist/components/DashboardGrid/DashboardGrid.js.map +1 -1
  24. package/dist/components/DashboardHeader/DashboardHeader.example.js.map +1 -1
  25. package/dist/components/DashboardLayout/DashboardLayout.example.js.map +1 -1
  26. package/dist/components/DashboardLayout/DashboardLayout.js.map +1 -1
  27. package/dist/components/DataTable/DataTable.js +2 -2
  28. package/dist/components/DataTable/DataTable.js.map +1 -1
  29. package/dist/components/Image/Image.js.map +1 -1
  30. package/dist/components/Input/Input.example.js.map +1 -1
  31. package/dist/components/Marketplace/AllProductsView.js.map +1 -1
  32. package/dist/components/Marketplace/MarketplaceComponent.js.map +1 -1
  33. package/dist/components/Marketplace/MarketplaceSidebar.js.map +1 -1
  34. package/dist/components/Marketplace/components/MarketplaceControls.js.map +1 -1
  35. package/dist/components/Marketplace/components/MarketplaceHeader.js.map +1 -1
  36. package/dist/components/Marketplace/components/ProductCard.js.map +1 -1
  37. package/dist/components/Marketplace/hooks/useScrollToTop.js.map +1 -1
  38. package/dist/components/Marketplace/utils/sanitizeProduct.js.map +1 -1
  39. package/dist/components/Modal/Modal.example.js.map +1 -1
  40. package/dist/components/Modal/Modal.js.map +1 -1
  41. package/dist/components/Navbar/Navbar.example.js.map +1 -1
  42. package/dist/components/NightModeSwitch/NightModeSwitch.js.map +1 -1
  43. package/dist/components/ProfileManagement/EditModal.js.map +1 -1
  44. package/dist/components/ProfileManagement/ProfileCard.js.map +1 -1
  45. package/dist/components/Radio/Radio.js.map +1 -1
  46. package/dist/components/Select/Select.js.map +1 -1
  47. package/dist/components/Sidebar/LogoutButton.js.map +1 -1
  48. package/dist/components/Sidebar/ProfileButton.js.map +1 -1
  49. package/dist/components/Sidebar/Sidebar.example.js.map +1 -1
  50. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  51. package/dist/components/Sidebar/SidebarHeader.js.map +1 -1
  52. package/dist/components/Skeleton/Skeleton.example.js.map +1 -1
  53. package/dist/components/Spinner/Spinner.example.js.map +1 -1
  54. package/dist/components/StatsCard/StatsCard.example.js.map +1 -1
  55. package/dist/components/Switch/Switch.example.js.map +1 -1
  56. package/dist/components/Tabs/Tabs.example.js.map +1 -1
  57. package/dist/components/Textarea/Textarea.example.js.map +1 -1
  58. package/dist/components/Toast/Toast.example.js.map +1 -1
  59. package/dist/hooks/useIntersectionObserver.js.map +1 -1
  60. package/package.json +113 -107
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nconst selectVariants = cva(\r\n \"block w-full rounded-md border bg-white px-3 py-2 text-sm ring-offset-white 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\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"border-gray-300\",\r\n error: \"border-danger-500 focus-visible:ring-danger-500\",\r\n success: \"border-success-500 focus-visible:ring-success-500\",\r\n },\r\n selectSize: {\r\n sm: \"h-8 px-2 text-xs\",\r\n md: \"h-10 px-3\",\r\n lg: \"h-12 px-4 text-base\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n selectSize: \"md\",\r\n },\r\n }\r\n);\r\n\r\nexport interface SelectOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\nexport interface SelectProps\r\n extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, \"size\">,\r\n VariantProps<typeof selectVariants> {\r\n options: SelectOption[];\r\n placeholder?: string;\r\n}\r\n\r\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\r\n ({ className, variant, selectSize, options, placeholder, ...props }, ref) => (\r\n <select\r\n className={cn(selectVariants({ variant, selectSize, className }))}\r\n ref={ref}\r\n {...props}\r\n >\r\n {placeholder && (\r\n <option value=\"\" disabled hidden>\r\n {placeholder}\r\n </option>\r\n )}\r\n {options.map(opt => (\r\n <option key={opt.value} value={opt.value}>\r\n {opt.label}\r\n </option>\r\n ))}\r\n </select>\r\n )\r\n);\r\n\r\nSelect.displayName = \"Select\";"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAIA,MAAM,cAAc,GAAG,GAAG,CACxB,wOAAwO,EACxO;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;AACD,QAAA,UAAU,EAAE;AACV,YAAA,EAAE,EAAE,kBAAkB;AACtB,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,EAAE,EAAE,qBAAqB;AAC1B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA;AACF,CAAA,CACF;MAcY,MAAM,GAAG,KAAK,CAAC,UAAU,CACpC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,MACtEA,iBACE,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,EACjE,GAAG,EAAE,GAAG,EAAA,GACJ,KAAK,aAER,WAAW,KACVC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,EAAE,EAAC,QAAQ,EAAA,IAAA,EAAC,MAAM,kBAC7B,WAAW,EAAA,CACL,CACV,EACA,OAAO,CAAC,GAAG,CAAC,GAAG,KACdA,GAAA,CAAA,QAAA,EAAA,EAAwB,KAAK,EAAE,GAAG,CAAC,KAAK,EAAA,QAAA,EACrC,GAAG,CAAC,KAAK,EAAA,EADC,GAAG,CAAC,KAAK,CAEb,CACV,CAAC,CAAA,EAAA,CACK,CACV;AAGH,MAAM,CAAC,WAAW,GAAG,QAAQ;;;;"}
1
+ {"version":3,"file":"Select.js","sources":["../../../src/components/Select/Select.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst selectVariants = cva(\n \"block w-full rounded-md border bg-white px-3 py-2 text-sm ring-offset-white 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 selectSize: {\n sm: \"h-8 px-2 text-xs\",\n md: \"h-10 px-3\",\n lg: \"h-12 px-4 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n selectSize: \"md\",\n },\n }\n);\n\nexport interface SelectOption {\n label: string;\n value: string;\n}\n\nexport interface SelectProps\n extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, \"size\">,\n VariantProps<typeof selectVariants> {\n options: SelectOption[];\n placeholder?: string;\n}\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n ({ className, variant, selectSize, options, placeholder, ...props }, ref) => (\n <select\n className={cn(selectVariants({ variant, selectSize, className }))}\n ref={ref}\n {...props}\n >\n {placeholder && (\n <option value=\"\" disabled hidden>\n {placeholder}\n </option>\n )}\n {options.map(opt => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n )\n);\n\nSelect.displayName = \"Select\";"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAIA,MAAM,cAAc,GAAG,GAAG,CACxB,wOAAwO,EACxO;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;AACD,QAAA,UAAU,EAAE;AACV,YAAA,EAAE,EAAE,kBAAkB;AACtB,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,EAAE,EAAE,qBAAqB;AAC1B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,UAAU,EAAE,IAAI;AACjB,KAAA;AACF,CAAA,CACF;MAcY,MAAM,GAAG,KAAK,CAAC,UAAU,CACpC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,MACtEA,iBACE,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,EACjE,GAAG,EAAE,GAAG,EAAA,GACJ,KAAK,aAER,WAAW,KACVC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,EAAE,EAAC,QAAQ,EAAA,IAAA,EAAC,MAAM,kBAC7B,WAAW,EAAA,CACL,CACV,EACA,OAAO,CAAC,GAAG,CAAC,GAAG,KACdA,GAAA,CAAA,QAAA,EAAA,EAAwB,KAAK,EAAE,GAAG,CAAC,KAAK,EAAA,QAAA,EACrC,GAAG,CAAC,KAAK,EAAA,EADC,GAAG,CAAC,KAAK,CAEb,CACV,CAAC,CAAA,EAAA,CACK,CACV;AAGH,MAAM,CAAC,WAAW,GAAG,QAAQ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"LogoutButton.js","sources":["../../../src/components/Sidebar/LogoutButton.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { LogOut } from \"lucide-react\";\r\nimport { Button } from \"../Button\";\r\nimport { useAuth } from \"../../contexts/AuthContext\";\r\n\r\n/**\r\n * LogoutButton\r\n * - Dual API: context-aware (uses useAuth) and stateless (accepts onLogout prop).\r\n * - If onLogout prop is provided, uses it; otherwise, falls back to useAuth.\r\n * - Theme-agnostic, reusable.\r\n */\r\nexport interface LogoutButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n onLogout?: () => void;\r\n}\r\n\r\nexport const LogoutButton = React.forwardRef<HTMLButtonElement, LogoutButtonProps>(\r\n ({ className, onLogout, ...props }, ref) => {\r\n // Only call useAuth if onLogout prop is not provided\r\n let contextLogout: (() => void) | undefined;\r\n if (!onLogout) {\r\n try {\r\n const context = useAuth();\r\n if (context.logout) {\r\n contextLogout = context.logout;\r\n }\r\n } catch {\r\n // If context is missing, contextLogout remains undefined\r\n }\r\n }\r\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n if (props.onClick) props.onClick(e);\r\n if (onLogout) {\r\n onLogout();\r\n } else if (contextLogout) {\r\n contextLogout();\r\n }\r\n };\r\n return (\r\n <Button\r\n ref={ref}\r\n variant=\"danger\"\r\n size=\"sm\"\r\n className={className}\r\n onClick={handleClick}\r\n {...props}\r\n >\r\n <LogOut className=\"h-3 w-3 mr-1\" />\r\n Logout\r\n </Button>\r\n );\r\n }\r\n);\r\n\r\nLogoutButton.displayName = \"LogoutButton\";"],"names":["_jsxs","_jsx"],"mappings":";;;;;;MAea,YAAY,GAAG,KAAK,CAAC,UAAU,CAC1C,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;;AAEzC,IAAA,IAAI,aAAuC;IAC3C,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,IAAI;AACF,YAAA,MAAM,OAAO,GAAG,OAAO,EAAE;AACzB,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,gBAAA,aAAa,GAAG,OAAO,CAAC,MAAM;YAChC;QACF;AAAE,QAAA,MAAM;;QAER;IACF;AACA,IAAA,MAAM,WAAW,GAAG,CAAC,CAAsC,KAAI;QAC7D,IAAI,KAAK,CAAC,OAAO;AAAE,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACnC,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,EAAE;QACZ;aAAO,IAAI,aAAa,EAAE;AACxB,YAAA,aAAa,EAAE;QACjB;AACF,IAAA,CAAC;AACD,IAAA,QACEA,IAAA,CAAC,MAAM,EAAA,EACL,GAAG,EAAE,GAAG,EACR,OAAO,EAAC,QAAQ,EAChB,IAAI,EAAC,IAAI,EACT,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,WAAW,EAAA,GAChB,KAAK,EAAA,QAAA,EAAA,CAETC,GAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,QAAA,CAAA,EAAA,CAE5B;AAEb,CAAC;AAGH,YAAY,CAAC,WAAW,GAAG,cAAc;;;;"}
1
+ {"version":3,"file":"LogoutButton.js","sources":["../../../src/components/Sidebar/LogoutButton.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { LogOut } from \"lucide-react\";\nimport { Button } from \"../Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\n\n/**\n * LogoutButton\n * - Dual API: context-aware (uses useAuth) and stateless (accepts onLogout prop).\n * - If onLogout prop is provided, uses it; otherwise, falls back to useAuth.\n * - Theme-agnostic, reusable.\n */\nexport interface LogoutButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n onLogout?: () => void;\n}\n\nexport const LogoutButton = React.forwardRef<HTMLButtonElement, LogoutButtonProps>(\n ({ className, onLogout, ...props }, ref) => {\n // Only call useAuth if onLogout prop is not provided\n let contextLogout: (() => void) | undefined;\n if (!onLogout) {\n try {\n const context = useAuth();\n if (context.logout) {\n contextLogout = context.logout;\n }\n } catch {\n // If context is missing, contextLogout remains undefined\n }\n }\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (props.onClick) props.onClick(e);\n if (onLogout) {\n onLogout();\n } else if (contextLogout) {\n contextLogout();\n }\n };\n return (\n <Button\n ref={ref}\n variant=\"danger\"\n size=\"sm\"\n className={className}\n onClick={handleClick}\n {...props}\n >\n <LogOut className=\"h-3 w-3 mr-1\" />\n Logout\n </Button>\n );\n }\n);\n\nLogoutButton.displayName = \"LogoutButton\";"],"names":["_jsxs","_jsx"],"mappings":";;;;;;MAea,YAAY,GAAG,KAAK,CAAC,UAAU,CAC1C,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;;AAEzC,IAAA,IAAI,aAAuC;IAC3C,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,IAAI;AACF,YAAA,MAAM,OAAO,GAAG,OAAO,EAAE;AACzB,YAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,gBAAA,aAAa,GAAG,OAAO,CAAC,MAAM;YAChC;QACF;AAAE,QAAA,MAAM;;QAER;IACF;AACA,IAAA,MAAM,WAAW,GAAG,CAAC,CAAsC,KAAI;QAC7D,IAAI,KAAK,CAAC,OAAO;AAAE,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACnC,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,EAAE;QACZ;aAAO,IAAI,aAAa,EAAE;AACxB,YAAA,aAAa,EAAE;QACjB;AACF,IAAA,CAAC;AACD,IAAA,QACEA,IAAA,CAAC,MAAM,EAAA,EACL,GAAG,EAAE,GAAG,EACR,OAAO,EAAC,QAAQ,EAChB,IAAI,EAAC,IAAI,EACT,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,WAAW,EAAA,GAChB,KAAK,EAAA,QAAA,EAAA,CAETC,GAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,QAAA,CAAA,EAAA,CAE5B;AAEb,CAAC;AAGH,YAAY,CAAC,WAAW,GAAG,cAAc;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProfileButton.js","sources":["../../../src/components/Sidebar/ProfileButton.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { User } from \"lucide-react\";\r\nimport { Button } from \"../Button\";\r\nimport { useAuth } from \"../../contexts/AuthContext\";\r\n\r\n/**\r\n * ProfileButton\r\n * - Dual API: context-aware (uses useAuth) and stateless (accepts user/onClick props).\r\n * - If user prop is provided, uses it; otherwise, falls back to useAuth.\r\n * - Theme-agnostic, reusable.\r\n */\r\nexport interface ProfileButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n user?: { name?: string; email?: string };\r\n}\r\n\r\nexport const ProfileButton = React.forwardRef<HTMLButtonElement, ProfileButtonProps>(\r\n ({ className, user, ...props }, ref) => {\r\n // Only call useAuth if user prop is not provided\r\n let displayUser = user;\r\n if (!displayUser) {\r\n try {\r\n const context = useAuth();\r\n if (context.user) {\r\n displayUser = context.user;\r\n }\r\n } catch {\r\n // If context is missing, displayUser remains undefined\r\n }\r\n }\r\n return (\r\n <Button\r\n ref={ref}\r\n variant=\"secondary\"\r\n size=\"sm\"\r\n className={className}\r\n {...props}\r\n >\r\n <User className=\"h-3 w-3 mr-1\" />\r\n Profile\r\n </Button>\r\n );\r\n }\r\n);\r\n\r\nProfileButton.displayName = \"ProfileButton\";"],"names":["_jsxs","_jsx"],"mappings":";;;;;;MAea,aAAa,GAAG,KAAK,CAAC,UAAU,CAC3C,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;;IAErC,IAAI,WAAW,GAAG,IAAI;IACtB,IAAI,CAAC,WAAW,EAAE;AAChB,QAAA,IAAI;AACF,YAAA,MAAM,OAAO,GAAG,OAAO,EAAE;AACzB,YAAA,IAAI,OAAO,CAAC,IAAI,EAAE;AAChB,gBAAA,WAAW,GAAG,OAAO,CAAC,IAAI;YAC5B;QACF;AAAE,QAAA,MAAM;;QAER;IACF;AACA,IAAA,QACEA,IAAA,CAAC,MAAM,EAAA,EACL,GAAG,EAAE,GAAG,EACR,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,IAAI,EACT,SAAS,EAAE,SAAS,EAAA,GAChB,KAAK,aAETC,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,SAAA,CAAA,EAAA,CAE1B;AAEb,CAAC;AAGH,aAAa,CAAC,WAAW,GAAG,eAAe;;;;"}
1
+ {"version":3,"file":"ProfileButton.js","sources":["../../../src/components/Sidebar/ProfileButton.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { User } from \"lucide-react\";\nimport { Button } from \"../Button\";\nimport { useAuth } from \"../../contexts/AuthContext\";\n\n/**\n * ProfileButton\n * - Dual API: context-aware (uses useAuth) and stateless (accepts user/onClick props).\n * - If user prop is provided, uses it; otherwise, falls back to useAuth.\n * - Theme-agnostic, reusable.\n */\nexport interface ProfileButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n user?: { name?: string; email?: string };\n}\n\nexport const ProfileButton = React.forwardRef<HTMLButtonElement, ProfileButtonProps>(\n ({ className, user, ...props }, ref) => {\n // Only call useAuth if user prop is not provided\n let displayUser = user;\n if (!displayUser) {\n try {\n const context = useAuth();\n if (context.user) {\n displayUser = context.user;\n }\n } catch {\n // If context is missing, displayUser remains undefined\n }\n }\n return (\n <Button\n ref={ref}\n variant=\"secondary\"\n size=\"sm\"\n className={className}\n {...props}\n >\n <User className=\"h-3 w-3 mr-1\" />\n Profile\n </Button>\n );\n }\n);\n\nProfileButton.displayName = \"ProfileButton\";"],"names":["_jsxs","_jsx"],"mappings":";;;;;;MAea,aAAa,GAAG,KAAK,CAAC,UAAU,CAC3C,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;;IAErC,IAAI,WAAW,GAAG,IAAI;IACtB,IAAI,CAAC,WAAW,EAAE;AAChB,QAAA,IAAI;AACF,YAAA,MAAM,OAAO,GAAG,OAAO,EAAE;AACzB,YAAA,IAAI,OAAO,CAAC,IAAI,EAAE;AAChB,gBAAA,WAAW,GAAG,OAAO,CAAC,IAAI;YAC5B;QACF;AAAE,QAAA,MAAM;;QAER;IACF;AACA,IAAA,QACEA,IAAA,CAAC,MAAM,EAAA,EACL,GAAG,EAAE,GAAG,EACR,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,IAAI,EACT,SAAS,EAAE,SAAS,EAAA,GAChB,KAAK,aAETC,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,SAAA,CAAA,EAAA,CAE1B;AAEb,CAAC;AAGH,aAAa,CAAC,WAAW,GAAG,eAAe;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.example.js","sources":["../../../src/components/Sidebar/Sidebar.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Sidebar } from \"./Sidebar\";\r\nimport type { MenuItem } from \"./Sidebar\";\r\n\r\nconst demoMenu: MenuItem[] = [\r\n {\r\n id: \"dashboard\",\r\n label: \"Dashboard\",\r\n icon: <span>D</span>,\r\n href: \"#\"\r\n },\r\n {\r\n id: \"settings\",\r\n label: \"Settings\",\r\n icon: <span>S</span>,\r\n href: \"#\"\r\n }\r\n];\r\n\r\nexport const SidebarExample: React.FC = () => (\r\n <Sidebar menuItems={demoMenu} />\r\n);"],"names":["_jsx"],"mappings":";;;AAIA,MAAM,QAAQ,GAAe;AAC3B,IAAA;AACE,QAAA,EAAE,EAAE,WAAW;AACf,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,IAAI,EAAEA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,GAAA,EAAA,CAAc;AACpB,QAAA,IAAI,EAAE;AACP,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,UAAU;AACd,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,IAAI,EAAEA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,GAAA,EAAA,CAAc;AACpB,QAAA,IAAI,EAAE;AACP;CACF;AAEM,MAAM,cAAc,GAAa,OACtCA,GAAA,CAAC,OAAO,IAAC,SAAS,EAAE,QAAQ,EAAA,CAAI;;;;"}
1
+ {"version":3,"file":"Sidebar.example.js","sources":["../../../src/components/Sidebar/Sidebar.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Sidebar } from \"./Sidebar\";\nimport type { MenuItem } from \"./Sidebar\";\n\nconst demoMenu: MenuItem[] = [\n {\n id: \"dashboard\",\n label: \"Dashboard\",\n icon: <span>D</span>,\n href: \"#\"\n },\n {\n id: \"settings\",\n label: \"Settings\",\n icon: <span>S</span>,\n href: \"#\"\n }\n];\n\nexport const SidebarExample: React.FC = () => (\n <Sidebar menuItems={demoMenu} />\n);"],"names":["_jsx"],"mappings":";;;AAIA,MAAM,QAAQ,GAAe;AAC3B,IAAA;AACE,QAAA,EAAE,EAAE,WAAW;AACf,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,IAAI,EAAEA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,GAAA,EAAA,CAAc;AACpB,QAAA,IAAI,EAAE;AACP,KAAA;AACD,IAAA;AACE,QAAA,EAAE,EAAE,UAAU;AACd,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,IAAI,EAAEA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,GAAA,EAAA,CAAc;AACpB,QAAA,IAAI,EAAE;AACP;CACF;AAEM,MAAM,cAAc,GAAa,OACtCA,GAAA,CAAC,OAAO,IAAC,SAAS,EAAE,QAAQ,EAAA,CAAI;;;;"}
@@ -1 +1 @@
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 onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;\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 onClick\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 <div\r\n className={cn(\r\n \"rounded-lg transition-colors\",\r\n onClick && \"cursor-pointer hover:bg-primary-50 focus:bg-primary-100 outline-none ring-2 ring-transparent focus:ring-primary-300\"\r\n )}\r\n tabIndex={onClick ? 0 : undefined}\r\n role={onClick ? \"button\" : undefined}\r\n aria-label={onClick ? \"View profile\" : undefined}\r\n onClick={onClick}\r\n onKeyDown={onClick ? (e) => { if (e.key === \"Enter\" || e.key === \" \") onClick(e as any); } : undefined}\r\n >\r\n <Avatar size={collapsedAvatarSize}>\r\n <AvatarImage src={avatarUrl} />\r\n <AvatarFallback>{avatarFallback}</AvatarFallback>\r\n </Avatar>\r\n </div>\r\n </div>\r\n ) : (\r\n <div className=\"space-y-3\">\r\n <div\r\n className={cn(\r\n \"flex items-center space-x-3 rounded-lg transition-colors\",\r\n onClick && \"cursor-pointer hover:bg-primary-50 focus:bg-primary-100 outline-none ring-2 ring-transparent focus:ring-primary-300\"\r\n )}\r\n tabIndex={onClick ? 0 : undefined}\r\n role={onClick ? \"button\" : undefined}\r\n aria-label={onClick ? \"View profile\" : undefined}\r\n onClick={onClick}\r\n onKeyDown={onClick ? (e) => { if (e.key === \"Enter\" || e.key === \" \") onClick(e as any); } : undefined}\r\n >\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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"}
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 +1 @@
1
- {"version":3,"file":"SidebarHeader.js","sources":["../../../src/components/Sidebar/SidebarHeader.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\n/**\r\n * SidebarHeader\r\n * - Reusable header for Sidebar and other layouts.\r\n * - Accepts dynamic title and letter for branding.\r\n * - Uses theme tokens (bg-primary-600, text-white, etc.) for theme-agnostic design.\r\n * - Allows className override for further customization.\r\n *\r\n * @example\r\n * <SidebarHeader title=\"Admin Panel\" letter=\"A\" />\r\n */\r\nexport interface SidebarHeaderProps {\r\n /** Main title text (default: \"Beyond\") */\r\n title?: string;\r\n /** Letter/initial in colored box (default: \"B\") */\r\n letter?: string;\r\n /** Optional className for root element */\r\n className?: string;\r\n}\r\n\r\nexport const SidebarHeader: React.FC<SidebarHeaderProps> = ({\r\n title = \"Beyond\",\r\n letter = \"B\",\r\n className,\r\n}) => (\r\n <div className={cn(\"flex items-center space-x-2\", className)}>\r\n <div className=\"w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center\">\r\n <span className=\"text-white font-bold text-sm\">{letter}</span>\r\n </div>\r\n <span className=\"font-bold text-xl text-gray-900\">{title}</span>\r\n </div>\r\n);\r\n\r\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\">{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 +1 @@
1
- {"version":3,"file":"Skeleton.example.js","sources":["../../../src/components/Skeleton/Skeleton.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Skeleton } from \"./Skeleton\";\r\n\r\nexport const SkeletonExample: React.FC = () => (\r\n <div className=\"space-y-4 max-w-md\">\r\n <Skeleton className=\"h-8 w-1/2\" />\r\n <Skeleton className=\"h-4 w-3/4\" />\r\n <div className=\"flex gap-2\">\r\n <Skeleton className=\"h-8 w-8 rounded-full\" />\r\n <Skeleton className=\"h-8 w-32\" />\r\n </div>\r\n <Skeleton className=\"h-24 w-full\" />\r\n </div>\r\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,eAAe,GAAa,OACvCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,CACjCC,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,WAAW,EAAA,CAAG,EAClCA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,WAAW,EAAA,CAAG,EAClCD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,YAAY,EAAA,QAAA,EAAA,CACzBC,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,sBAAsB,EAAA,CAAG,EAC7CA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,UAAU,EAAA,CAAG,CAAA,EAAA,CAC7B,EACNA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,aAAa,EAAA,CAAG,CAAA,EAAA,CAChC;;;;"}
1
+ {"version":3,"file":"Skeleton.example.js","sources":["../../../src/components/Skeleton/Skeleton.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Skeleton } from \"./Skeleton\";\n\nexport const SkeletonExample: React.FC = () => (\n <div className=\"space-y-4 max-w-md\">\n <Skeleton className=\"h-8 w-1/2\" />\n <Skeleton className=\"h-4 w-3/4\" />\n <div className=\"flex gap-2\">\n <Skeleton className=\"h-8 w-8 rounded-full\" />\n <Skeleton className=\"h-8 w-32\" />\n </div>\n <Skeleton className=\"h-24 w-full\" />\n </div>\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,eAAe,GAAa,OACvCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,CACjCC,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,WAAW,EAAA,CAAG,EAClCA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,WAAW,EAAA,CAAG,EAClCD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,YAAY,EAAA,QAAA,EAAA,CACzBC,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,sBAAsB,EAAA,CAAG,EAC7CA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,UAAU,EAAA,CAAG,CAAA,EAAA,CAC7B,EACNA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,aAAa,EAAA,CAAG,CAAA,EAAA,CAChC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner.example.js","sources":["../../../src/components/Spinner/Spinner.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Spinner } from \"./Spinner\";\r\nimport { Button } from \"../Button\";\r\n\r\nexport const SpinnerExample: React.FC = () => (\r\n <div className=\"space-y-4\">\r\n <Spinner />\r\n <div className=\"flex gap-2 items-center\">\r\n <Spinner /> <span>Loading data...</span>\r\n </div>\r\n <Button variant=\"primary\" disabled>\r\n <Spinner className=\"mr-2 h-4 w-4\" /> Processing\r\n </Button>\r\n </div>\r\n);"],"names":["_jsxs","_jsx"],"mappings":";;;;MAIa,cAAc,GAAa,OACtCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,GAAA,CAAC,OAAO,EAAA,EAAA,CAAG,EACXD,cAAK,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACtCC,GAAA,CAAC,OAAO,KAAG,EAAA,GAAA,EAACA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,CAA4B,IACpC,EACND,IAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,mBAChCC,GAAA,CAAC,OAAO,IAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,aAAA,CAAA,EAAA,CAC7B,CAAA,EAAA,CACL;;;;"}
1
+ {"version":3,"file":"Spinner.example.js","sources":["../../../src/components/Spinner/Spinner.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Spinner } from \"./Spinner\";\nimport { Button } from \"../Button\";\n\nexport const SpinnerExample: React.FC = () => (\n <div className=\"space-y-4\">\n <Spinner />\n <div className=\"flex gap-2 items-center\">\n <Spinner /> <span>Loading data...</span>\n </div>\n <Button variant=\"primary\" disabled>\n <Spinner className=\"mr-2 h-4 w-4\" /> Processing\n </Button>\n </div>\n);"],"names":["_jsxs","_jsx"],"mappings":";;;;MAIa,cAAc,GAAa,OACtCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,GAAA,CAAC,OAAO,EAAA,EAAA,CAAG,EACXD,cAAK,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACtCC,GAAA,CAAC,OAAO,KAAG,EAAA,GAAA,EAACA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,CAA4B,IACpC,EACND,IAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,mBAChCC,GAAA,CAAC,OAAO,IAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,aAAA,CAAA,EAAA,CAC7B,CAAA,EAAA,CACL;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"StatsCard.example.js","sources":["../../../src/components/StatsCard/StatsCard.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { StatsCard } from \"./StatsCard\";\r\nimport { BarChart3 } from \"lucide-react\";\r\n\r\nexport const StatsCardExample: React.FC = () => (\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n <StatsCard\r\n title=\"Total Users\"\r\n value=\"2,543\"\r\n trend={{\r\n direction: \"up\",\r\n value: \"+12%\",\r\n label: \"from last month\"\r\n }}\r\n icon={<BarChart3 className=\"h-6 w-6 text-primary-600\" />}\r\n />\r\n <StatsCard\r\n variant=\"gradient\"\r\n color=\"success\"\r\n title=\"Revenue\"\r\n value=\"$45,231\"\r\n trend={{\r\n direction: \"up\",\r\n value: \"+8.2%\",\r\n label: \"from last month\"\r\n }}\r\n icon={<BarChart3 className=\"h-6 w-6\" />}\r\n />\r\n </div>\r\n);"],"names":["_jsxs","_jsx"],"mappings":";;;;AAIO,MAAM,gBAAgB,GAAa,OACxCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uCAAuC,aACpDC,GAAA,CAAC,SAAS,EAAA,EACR,KAAK,EAAC,aAAa,EACnB,KAAK,EAAC,OAAO,EACb,KAAK,EAAE;AACL,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,KAAK,EAAE;AACR,aAAA,EACD,IAAI,EAAEA,GAAA,CAAC,SAAS,EAAA,EAAC,SAAS,EAAC,0BAA0B,EAAA,CAAG,EAAA,CACxD,EACFA,GAAA,CAAC,SAAS,EAAA,EACR,OAAO,EAAC,UAAU,EAClB,KAAK,EAAC,SAAS,EACf,KAAK,EAAC,SAAS,EACf,KAAK,EAAC,SAAS,EACf,KAAK,EAAE;AACL,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,KAAK,EAAE;AACR,aAAA,EACD,IAAI,EAAEA,GAAA,CAAC,SAAS,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EAAA,CACvC,CAAA,EAAA,CACE;;;;"}
1
+ {"version":3,"file":"StatsCard.example.js","sources":["../../../src/components/StatsCard/StatsCard.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { StatsCard } from \"./StatsCard\";\nimport { BarChart3 } from \"lucide-react\";\n\nexport const StatsCardExample: React.FC = () => (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <StatsCard\n title=\"Total Users\"\n value=\"2,543\"\n trend={{\n direction: \"up\",\n value: \"+12%\",\n label: \"from last month\"\n }}\n icon={<BarChart3 className=\"h-6 w-6 text-primary-600\" />}\n />\n <StatsCard\n variant=\"gradient\"\n color=\"success\"\n title=\"Revenue\"\n value=\"$45,231\"\n trend={{\n direction: \"up\",\n value: \"+8.2%\",\n label: \"from last month\"\n }}\n icon={<BarChart3 className=\"h-6 w-6\" />}\n />\n </div>\n);"],"names":["_jsxs","_jsx"],"mappings":";;;;AAIO,MAAM,gBAAgB,GAAa,OACxCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uCAAuC,aACpDC,GAAA,CAAC,SAAS,EAAA,EACR,KAAK,EAAC,aAAa,EACnB,KAAK,EAAC,OAAO,EACb,KAAK,EAAE;AACL,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,KAAK,EAAE;AACR,aAAA,EACD,IAAI,EAAEA,GAAA,CAAC,SAAS,EAAA,EAAC,SAAS,EAAC,0BAA0B,EAAA,CAAG,EAAA,CACxD,EACFA,GAAA,CAAC,SAAS,EAAA,EACR,OAAO,EAAC,UAAU,EAClB,KAAK,EAAC,SAAS,EACf,KAAK,EAAC,SAAS,EACf,KAAK,EAAC,SAAS,EACf,KAAK,EAAE;AACL,gBAAA,SAAS,EAAE,IAAI;AACf,gBAAA,KAAK,EAAE,OAAO;AACd,gBAAA,KAAK,EAAE;AACR,aAAA,EACD,IAAI,EAAEA,GAAA,CAAC,SAAS,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EAAA,CACvC,CAAA,EAAA,CACE;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.example.js","sources":["../../../src/components/Switch/Switch.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Switch } from \"./Switch\";\r\n\r\nexport const SwitchExample: React.FC = () => (\r\n <div className=\"space-y-2\">\r\n <label className=\"flex items-center gap-2\">\r\n <Switch /> <span>Default</span>\r\n </label>\r\n <label className=\"flex items-center gap-2\">\r\n <Switch checked /> <span>Checked</span>\r\n </label>\r\n <label className=\"flex items-center gap-2\">\r\n <Switch disabled /> <span>Disabled</span>\r\n </label>\r\n <label className=\"flex items-center gap-2\">\r\n <Switch checked disabled /> <span>Checked & Disabled</span>\r\n </label>\r\n </div>\r\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,aAAa,GAAa,OACrCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBA,gBAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,MAAM,EAAA,EAAA,CAAG,EAAA,GAAA,EAACA,oCAAoB,CAAA,EAAA,CACzB,EACRD,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,MAAM,IAAC,OAAO,EAAA,IAAA,EAAA,CAAG,EAAA,GAAA,EAACA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAoB,CAAA,EAAA,CACjC,EACRD,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,MAAM,EAAA,EAAC,QAAQ,EAAA,IAAA,EAAA,CAAG,EAAA,GAAA,EAACA,qCAAqB,CAAA,EAAA,CACnC,EACRD,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAA,IAAA,EAAC,QAAQ,SAAG,EAAA,GAAA,EAACA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,CAA+B,CAAA,EAAA,CACrD,CAAA,EAAA,CACJ;;;;"}
1
+ {"version":3,"file":"Switch.example.js","sources":["../../../src/components/Switch/Switch.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Switch } from \"./Switch\";\n\nexport const SwitchExample: React.FC = () => (\n <div className=\"space-y-2\">\n <label className=\"flex items-center gap-2\">\n <Switch /> <span>Default</span>\n </label>\n <label className=\"flex items-center gap-2\">\n <Switch checked /> <span>Checked</span>\n </label>\n <label className=\"flex items-center gap-2\">\n <Switch disabled /> <span>Disabled</span>\n </label>\n <label className=\"flex items-center gap-2\">\n <Switch checked disabled /> <span>Checked & Disabled</span>\n </label>\n </div>\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,aAAa,GAAa,OACrCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBA,gBAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,MAAM,EAAA,EAAA,CAAG,EAAA,GAAA,EAACA,oCAAoB,CAAA,EAAA,CACzB,EACRD,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,MAAM,IAAC,OAAO,EAAA,IAAA,EAAA,CAAG,EAAA,GAAA,EAACA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAoB,CAAA,EAAA,CACjC,EACRD,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,MAAM,EAAA,EAAC,QAAQ,EAAA,IAAA,EAAA,CAAG,EAAA,GAAA,EAACA,qCAAqB,CAAA,EAAA,CACnC,EACRD,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAA,IAAA,EAAC,QAAQ,SAAG,EAAA,GAAA,EAACA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,CAA+B,CAAA,EAAA,CACrD,CAAA,EAAA,CACJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.example.js","sources":["../../../src/components/Tabs/Tabs.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from \"./Tabs\";\r\n\r\nexport const TabsExample: React.FC = () => {\r\n const [activeTab, setActiveTab] = React.useState(\"tab-1\");\r\n return (\r\n <Tabs value={activeTab} onValueChange={setActiveTab}>\r\n <TabsList>\r\n <TabsTrigger value=\"tab-1\">Tab One</TabsTrigger>\r\n <TabsTrigger value=\"tab-2\">Tab Two</TabsTrigger>\r\n <TabsTrigger value=\"tab-3\">Tab Three</TabsTrigger>\r\n </TabsList>\r\n <TabsContent value=\"tab-1\">\r\n <span className=\"block p-4\">Content for Tab One</span>\r\n </TabsContent>\r\n <TabsContent value=\"tab-2\">\r\n <span className=\"block p-4\">Content for Tab Two</span>\r\n </TabsContent>\r\n <TabsContent value=\"tab-3\">\r\n <span className=\"block p-4\">Content for Tab Three</span>\r\n </TabsContent>\r\n </Tabs>\r\n );\r\n};"],"names":["_jsxs","_jsx"],"mappings":";;;;AAGO,MAAM,WAAW,GAAa,MAAK;AACxC,IAAA,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;AACzD,IAAA,QACEA,IAAA,CAAC,IAAI,EAAA,EAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAA,QAAA,EAAA,CACjDA,IAAA,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,CACPC,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,wBAAsB,EAChDA,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,EAAA,QAAA,EAAA,SAAA,EAAA,CAAsB,EAChDA,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,CAAwB,IACzC,EACXA,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,YACxBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,qBAAA,EAAA,CAA2B,EAAA,CAC1C,EACdA,IAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,YACxBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,WAAW,oCAA2B,EAAA,CAC1C,EACdA,IAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,EAAA,QAAA,EACxBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,WAAW,sCAA6B,EAAA,CAC5C,CAAA,EAAA,CACT;AAEX;;;;"}
1
+ {"version":3,"file":"Tabs.example.js","sources":["../../../src/components/Tabs/Tabs.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from \"./Tabs\";\n\nexport const TabsExample: React.FC = () => {\n const [activeTab, setActiveTab] = React.useState(\"tab-1\");\n return (\n <Tabs value={activeTab} onValueChange={setActiveTab}>\n <TabsList>\n <TabsTrigger value=\"tab-1\">Tab One</TabsTrigger>\n <TabsTrigger value=\"tab-2\">Tab Two</TabsTrigger>\n <TabsTrigger value=\"tab-3\">Tab Three</TabsTrigger>\n </TabsList>\n <TabsContent value=\"tab-1\">\n <span className=\"block p-4\">Content for Tab One</span>\n </TabsContent>\n <TabsContent value=\"tab-2\">\n <span className=\"block p-4\">Content for Tab Two</span>\n </TabsContent>\n <TabsContent value=\"tab-3\">\n <span className=\"block p-4\">Content for Tab Three</span>\n </TabsContent>\n </Tabs>\n );\n};"],"names":["_jsxs","_jsx"],"mappings":";;;;AAGO,MAAM,WAAW,GAAa,MAAK;AACxC,IAAA,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;AACzD,IAAA,QACEA,IAAA,CAAC,IAAI,EAAA,EAAC,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAA,QAAA,EAAA,CACjDA,IAAA,CAAC,QAAQ,EAAA,EAAA,QAAA,EAAA,CACPC,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,wBAAsB,EAChDA,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,EAAA,QAAA,EAAA,SAAA,EAAA,CAAsB,EAChDA,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,CAAwB,IACzC,EACXA,GAAA,CAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,YACxBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,qBAAA,EAAA,CAA2B,EAAA,CAC1C,EACdA,IAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,YACxBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,WAAW,oCAA2B,EAAA,CAC1C,EACdA,IAAC,WAAW,EAAA,EAAC,KAAK,EAAC,OAAO,EAAA,QAAA,EACxBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,WAAW,sCAA6B,EAAA,CAC5C,CAAA,EAAA,CACT;AAEX;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.example.js","sources":["../../../src/components/Textarea/Textarea.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Textarea } from \"./Textarea\";\r\n\r\nexport const TextareaExample: React.FC = () => (\r\n <div className=\"space-y-4 max-w-md\">\r\n <Textarea placeholder=\"Default textarea\" />\r\n <Textarea placeholder=\"Success state\" variant=\"success\" />\r\n <Textarea placeholder=\"Error state\" variant=\"error\" />\r\n <div className=\"space-y-2\">\r\n <Textarea placeholder=\"Small (default)\" />\r\n <Textarea placeholder=\"Disabled\" disabled />\r\n </div>\r\n </div>\r\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,eAAe,GAAa,OACvCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,CACjCC,IAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,kBAAkB,EAAA,CAAG,EAC3CA,GAAA,CAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,eAAe,EAAC,OAAO,EAAC,SAAS,EAAA,CAAG,EAC1DA,GAAA,CAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,aAAa,EAAC,OAAO,EAAC,OAAO,EAAA,CAAG,EACtDD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,IAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,iBAAiB,EAAA,CAAG,EAC1CA,GAAA,CAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,UAAU,EAAC,QAAQ,EAAA,IAAA,EAAA,CAAG,CAAA,EAAA,CACxC,CAAA,EAAA,CACF;;;;"}
1
+ {"version":3,"file":"Textarea.example.js","sources":["../../../src/components/Textarea/Textarea.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Textarea } from \"./Textarea\";\n\nexport const TextareaExample: React.FC = () => (\n <div className=\"space-y-4 max-w-md\">\n <Textarea placeholder=\"Default textarea\" />\n <Textarea placeholder=\"Success state\" variant=\"success\" />\n <Textarea placeholder=\"Error state\" variant=\"error\" />\n <div className=\"space-y-2\">\n <Textarea placeholder=\"Small (default)\" />\n <Textarea placeholder=\"Disabled\" disabled />\n </div>\n </div>\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,eAAe,GAAa,OACvCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,CACjCC,IAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,kBAAkB,EAAA,CAAG,EAC3CA,GAAA,CAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,eAAe,EAAC,OAAO,EAAC,SAAS,EAAA,CAAG,EAC1DA,GAAA,CAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,aAAa,EAAC,OAAO,EAAC,OAAO,EAAA,CAAG,EACtDD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,IAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,iBAAiB,EAAA,CAAG,EAC1CA,GAAA,CAAC,QAAQ,EAAA,EAAC,WAAW,EAAC,UAAU,EAAC,QAAQ,EAAA,IAAA,EAAA,CAAG,CAAA,EAAA,CACxC,CAAA,EAAA,CACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.example.js","sources":["../../../src/components/Toast/Toast.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Toast, showToast } from \"./Toast\";\r\nimport { Button } from \"../Button\";\r\n\r\nexport const ToastExample: React.FC = () => (\r\n <>\r\n <Button onClick={() => showToast.success(\"This is a toast notification!\")}>\r\n Show Toast\r\n </Button>\r\n <Toast />\r\n </>\r\n);"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;AAIO,MAAM,YAAY,GAAa,OACpCA,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACEC,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,MAAM,SAAS,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAAA,QAAA,EAAA,YAAA,EAAA,CAEhE,EACTA,GAAA,CAAC,KAAK,EAAA,EAAA,CAAG,CAAA,EAAA,CACR;;;;"}
1
+ {"version":3,"file":"Toast.example.js","sources":["../../../src/components/Toast/Toast.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Toast, showToast } from \"./Toast\";\nimport { Button } from \"../Button\";\n\nexport const ToastExample: React.FC = () => (\n <>\n <Button onClick={() => showToast.success(\"This is a toast notification!\")}>\n Show Toast\n </Button>\n <Toast />\n </>\n);"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;AAIO,MAAM,YAAY,GAAa,OACpCA,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACEC,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,MAAM,SAAS,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAAA,QAAA,EAAA,YAAA,EAAA,CAEhE,EACTA,GAAA,CAAC,KAAK,EAAA,EAAA,CAAG,CAAA,EAAA,CACR;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIntersectionObserver.js","sources":["../../src/hooks/useIntersectionObserver.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\r\n\r\nexport interface IntersectionOptions extends IntersectionObserverInit {\r\n freezeOnceVisible?: boolean;\r\n}\r\n\r\n/**\r\n * useIntersectionObserver\r\n * Returns true if the element is in the viewport.\r\n * Usage: const [ref, inView] = useIntersectionObserver(options);\r\n */\r\nexport function useIntersectionObserver<T extends HTMLElement = HTMLElement>(\r\n options?: IntersectionOptions\r\n): [React.RefObject<T>, boolean] {\r\n const [inView, setInView] = useState(false);\r\n const ref = useState<React.RefObject<T>>(() => ({ current: null }))[0];\r\n\r\n useEffect(() => {\r\n const node = ref.current;\r\n if (!node || typeof window === \"undefined\" || !(\"IntersectionObserver\" in window)) {\r\n setInView(true); // Fallback: always load if no observer\r\n return;\r\n }\r\n\r\n let frozen = false;\r\n const observer = new IntersectionObserver(\r\n ([entry]) => {\r\n if (entry.isIntersecting) {\r\n setInView(true);\r\n if (options?.freezeOnceVisible) {\r\n frozen = true;\r\n observer.disconnect();\r\n }\r\n } else if (!frozen) {\r\n setInView(false);\r\n }\r\n },\r\n options\r\n );\r\n\r\n observer.observe(node);\r\n\r\n return () => {\r\n observer.disconnect();\r\n };\r\n }, [ref, options]);\r\n\r\n return [ref, inView];\r\n}"],"names":[],"mappings":";;AAMA;;;;AAIG;AACG,SAAU,uBAAuB,CACrC,OAA6B,EAAA;IAE7B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC3C,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAqB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtE,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO;AACxB,QAAA,IAAI,CAAC,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,EAAE,sBAAsB,IAAI,MAAM,CAAC,EAAE;AACjF,YAAA,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB;QACF;QAEA,IAAI,MAAM,GAAG,KAAK;QAClB,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CACvC,CAAC,CAAC,KAAK,CAAC,KAAI;AACV,YAAA,IAAI,KAAK,CAAC,cAAc,EAAE;gBACxB,SAAS,CAAC,IAAI,CAAC;AACf,gBAAA,IAAI,OAAO,EAAE,iBAAiB,EAAE;oBAC9B,MAAM,GAAG,IAAI;oBACb,QAAQ,CAAC,UAAU,EAAE;gBACvB;YACF;iBAAO,IAAI,CAAC,MAAM,EAAE;gBAClB,SAAS,CAAC,KAAK,CAAC;YAClB;QACF,CAAC,EACD,OAAO,CACR;AAED,QAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AAEtB,QAAA,OAAO,MAAK;YACV,QAAQ,CAAC,UAAU,EAAE;AACvB,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAElB,IAAA,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;AACtB;;;;"}
1
+ {"version":3,"file":"useIntersectionObserver.js","sources":["../../src/hooks/useIntersectionObserver.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nexport interface IntersectionOptions extends IntersectionObserverInit {\n freezeOnceVisible?: boolean;\n}\n\n/**\n * useIntersectionObserver\n * Returns true if the element is in the viewport.\n * Usage: const [ref, inView] = useIntersectionObserver(options);\n */\nexport function useIntersectionObserver<T extends HTMLElement = HTMLElement>(\n options?: IntersectionOptions\n): [React.RefObject<T>, boolean] {\n const [inView, setInView] = useState(false);\n const ref = useState<React.RefObject<T>>(() => ({ current: null }))[0];\n\n useEffect(() => {\n const node = ref.current;\n if (!node || typeof window === \"undefined\" || !(\"IntersectionObserver\" in window)) {\n setInView(true); // Fallback: always load if no observer\n return;\n }\n\n let frozen = false;\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setInView(true);\n if (options?.freezeOnceVisible) {\n frozen = true;\n observer.disconnect();\n }\n } else if (!frozen) {\n setInView(false);\n }\n },\n options\n );\n\n observer.observe(node);\n\n return () => {\n observer.disconnect();\n };\n }, [ref, options]);\n\n return [ref, inView];\n}"],"names":[],"mappings":";;AAMA;;;;AAIG;AACG,SAAU,uBAAuB,CACrC,OAA6B,EAAA;IAE7B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC3C,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAqB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtE,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO;AACxB,QAAA,IAAI,CAAC,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,EAAE,sBAAsB,IAAI,MAAM,CAAC,EAAE;AACjF,YAAA,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB;QACF;QAEA,IAAI,MAAM,GAAG,KAAK;QAClB,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CACvC,CAAC,CAAC,KAAK,CAAC,KAAI;AACV,YAAA,IAAI,KAAK,CAAC,cAAc,EAAE;gBACxB,SAAS,CAAC,IAAI,CAAC;AACf,gBAAA,IAAI,OAAO,EAAE,iBAAiB,EAAE;oBAC9B,MAAM,GAAG,IAAI;oBACb,QAAQ,CAAC,UAAU,EAAE;gBACvB;YACF;iBAAO,IAAI,CAAC,MAAM,EAAE;gBAClB,SAAS,CAAC,KAAK,CAAC;YAClB;QACF,CAAC,EACD,OAAO,CACR;AAED,QAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AAEtB,QAAA,OAAO,MAAK;YACV,QAAQ,CAAC,UAAU,EAAE;AACvB,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAElB,IAAA,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;AACtB;;;;"}
package/package.json CHANGED
@@ -1,107 +1,113 @@
1
- {
2
- "name": "@beyondcorp/beyond-ui",
3
- "version": "1.2.81",
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-markdown": "^10.1.0",
61
- "react-router-dom": "^7.9.1",
62
- "react-syntax-highlighter": "^15.6.6",
63
- "recharts": "^2.8.0",
64
- "remark-gfm": "^4.0.1",
65
- "tailwind-merge": "^2.2.0",
66
- "zod": "^4.1.8"
67
- },
68
- "devDependencies": {
69
- "@eslint/js": "^9.9.1",
70
- "@rollup/plugin-commonjs": "^28.0.6",
71
- "@rollup/plugin-json": "^6.1.0",
72
- "@rollup/plugin-node-resolve": "^16.0.1",
73
- "@rollup/plugin-typescript": "^12.1.4",
74
- "@storybook/addon-actions": "^7.6.6",
75
- "@storybook/addon-controls": "^7.6.6",
76
- "@storybook/addon-docs": "^7.6.6",
77
- "@storybook/addon-essentials": "^7.6.6",
78
- "@storybook/blocks": "^7.6.6",
79
- "@storybook/react": "^7.6.6",
80
- "@storybook/react-vite": "^7.6.6",
81
- "@testing-library/jest-dom": "^6.1.6",
82
- "@testing-library/react": "^14.1.2",
83
- "@testing-library/user-event": "^14.5.1",
84
- "@types/jest": "^30.0.0",
85
- "@types/js-cookie": "^3.0.6",
86
- "@types/react": "^18.3.5",
87
- "@types/react-dom": "^18.3.0",
88
- "@types/react-syntax-highlighter": "^15.5.13",
89
- "@vitejs/plugin-react": "^4.3.1",
90
- "autoprefixer": "^10.4.18",
91
- "eslint": "^9.9.1",
92
- "eslint-plugin-react-hooks": "^5.1.0-rc.0",
93
- "eslint-plugin-react-refresh": "^0.4.11",
94
- "globals": "^15.9.0",
95
- "jest": "^29.7.0",
96
- "jest-environment-jsdom": "^29.7.0",
97
- "postcss": "^8.4.35",
98
- "rollup": "^4.50.1",
99
- "storybook": "^7.6.6",
100
- "tailwindcss": "^3.4.1",
101
- "tsup": "^7.2.0",
102
- "typescript": "^5.9.2",
103
- "typescript-eslint": "^8.3.0",
104
- "vite": "^5.4.2",
105
- "vite-plugin-dts": "^3.9.1"
106
- }
107
- }
1
+ {
2
+ "name": "@beyondcorp/beyond-ui",
3
+ "version": "1.2.85",
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-markdown": "^10.1.0",
61
+ "react-router-dom": "^7.9.1",
62
+ "react-syntax-highlighter": "^15.6.6",
63
+ "recharts": "^2.8.0",
64
+ "remark-gfm": "^4.0.1",
65
+ "tailwind-merge": "^2.2.0",
66
+ "zod": "^4.1.8"
67
+ },
68
+ "devDependencies": {
69
+ "@eslint/js": "^9.9.1",
70
+ "@rollup/plugin-commonjs": "^28.0.6",
71
+ "@rollup/plugin-json": "^6.1.0",
72
+ "@rollup/plugin-node-resolve": "^16.0.1",
73
+ "@rollup/plugin-typescript": "^12.1.4",
74
+ "@storybook/addon-actions": "^7.6.6",
75
+ "@storybook/addon-controls": "^7.6.6",
76
+ "@storybook/addon-docs": "^7.6.6",
77
+ "@storybook/addon-essentials": "^7.6.6",
78
+ "@storybook/addon-links": "^7.6.24",
79
+ "@storybook/blocks": "^7.6.6",
80
+ "@storybook/react": "^7.6.6",
81
+ "@storybook/react-vite": "^7.6.6",
82
+ "@testing-library/jest-dom": "^6.1.6",
83
+ "@testing-library/react": "^14.1.2",
84
+ "@testing-library/user-event": "^14.5.1",
85
+ "@types/jest": "^30.0.0",
86
+ "@types/js-cookie": "^3.0.6",
87
+ "@types/react": "^18.3.5",
88
+ "@types/react-dom": "^18.3.0",
89
+ "@types/react-syntax-highlighter": "^15.5.13",
90
+ "@vitejs/plugin-react": "^4.3.1",
91
+ "autoprefixer": "^10.4.18",
92
+ "eslint": "^9.9.1",
93
+ "eslint-plugin-react-hooks": "^5.1.0-rc.0",
94
+ "eslint-plugin-react-refresh": "^0.4.11",
95
+ "globals": "^15.9.0",
96
+ "jest": "^29.7.0",
97
+ "jest-environment-jsdom": "^29.7.0",
98
+ "postcss": "^8.4.35",
99
+ "rollup": "^4.50.1",
100
+ "storybook": "^7.6.6",
101
+ "tailwindcss": "^3.4.1",
102
+ "tsup": "^7.2.0",
103
+ "typescript": "^5.9.2",
104
+ "typescript-eslint": "^8.3.0",
105
+ "vite": "^5.4.2",
106
+ "vite-plugin-dts": "^3.9.1",
107
+ "browserslist": "^4.24.0"
108
+ },
109
+ "engines": {
110
+ "node": ">=18.0.0",
111
+ "npm": ">=9.0.0"
112
+ }
113
+ }