@beyondcorp/beyond-ui 1.0.18 → 1.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +117 -9
- package/dist/components/Alert/Alert.example.d.ts +2 -0
- package/dist/components/Alert/Alert.example.js +7 -0
- package/dist/components/Alert/Alert.example.js.map +1 -0
- package/dist/components/Auth/AuthShowcase.d.ts +5 -0
- package/dist/components/Auth/AuthShowcase.js +105 -0
- package/dist/components/Auth/AuthShowcase.js.map +1 -0
- package/dist/components/Auth/LoginForm.d.ts +12 -0
- package/dist/components/Auth/LoginForm.example.d.ts +2 -0
- package/dist/components/Auth/LoginForm.example.js +9 -0
- package/dist/components/Auth/LoginForm.example.js.map +1 -0
- package/dist/components/Auth/LoginForm.js +48 -0
- package/dist/components/Auth/LoginForm.js.map +1 -0
- package/dist/components/Auth/PasswordResetForm.d.ts +9 -0
- package/dist/components/Auth/PasswordResetForm.example.d.ts +2 -0
- package/dist/components/Auth/PasswordResetForm.example.js +20 -0
- package/dist/components/Auth/PasswordResetForm.example.js.map +1 -0
- package/dist/components/Auth/PasswordResetForm.js +30 -0
- package/dist/components/Auth/PasswordResetForm.js.map +1 -0
- package/dist/components/Auth/ProtectedRoute.d.ts +14 -0
- package/dist/components/Auth/ProtectedRoute.example.d.ts +7 -0
- package/dist/components/Auth/ProtectedRoute.example.js +16 -0
- package/dist/components/Auth/ProtectedRoute.example.js.map +1 -0
- package/dist/components/Auth/ProtectedRoute.js +33 -0
- package/dist/components/Auth/ProtectedRoute.js.map +1 -0
- package/dist/components/Auth/SignupForm.d.ts +11 -0
- package/dist/components/Auth/SignupForm.example.d.ts +2 -0
- package/dist/components/Auth/SignupForm.example.js +9 -0
- package/dist/components/Auth/SignupForm.example.js.map +1 -0
- package/dist/components/Auth/SignupForm.js +59 -0
- package/dist/components/Auth/SignupForm.js.map +1 -0
- package/dist/components/Avatar/Avatar.example.d.ts +2 -0
- package/dist/components/Avatar/Avatar.example.js +7 -0
- package/dist/components/Avatar/Avatar.example.js.map +1 -0
- package/dist/components/Badge/Badge.example.d.ts +2 -0
- package/dist/components/Badge/Badge.example.js +7 -0
- package/dist/components/Badge/Badge.example.js.map +1 -0
- package/dist/components/Button/Button.example.d.ts +2 -0
- package/dist/components/Button/Button.example.js +7 -0
- package/dist/components/Button/Button.example.js.map +1 -0
- package/dist/components/Card/Card.example.d.ts +2 -0
- package/dist/components/Card/Card.example.js +7 -0
- package/dist/components/Card/Card.example.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.example.d.ts +2 -0
- package/dist/components/Checkbox/Checkbox.example.js +7 -0
- package/dist/components/Checkbox/Checkbox.example.js.map +1 -0
- package/dist/components/ComponentShowcase/ComponentShowcase.js +34 -435
- package/dist/components/ComponentShowcase/ComponentShowcase.js.map +1 -1
- package/dist/components/ComponentShowcase/componentDocs.d.ts +225 -0
- package/dist/components/ComponentShowcase/componentDocs.js +205 -0
- package/dist/components/ComponentShowcase/componentDocs.js.map +1 -0
- package/dist/components/ComponentShowcase/showcaseRegistry.d.ts +1 -0
- package/dist/components/ComponentShowcase/showcaseRegistry.js +64 -0
- package/dist/components/ComponentShowcase/showcaseRegistry.js.map +1 -0
- package/dist/components/DashboardGrid/DashboardGrid.example.d.ts +2 -0
- package/dist/components/DashboardGrid/DashboardGrid.example.js +7 -0
- package/dist/components/DashboardGrid/DashboardGrid.example.js.map +1 -0
- package/dist/components/DashboardHeader/DashboardHeader.example.d.ts +2 -0
- package/dist/components/DashboardHeader/DashboardHeader.example.js +7 -0
- package/dist/components/DashboardHeader/DashboardHeader.example.js.map +1 -0
- package/dist/components/DashboardLayout/DashboardLayout.example.d.ts +2 -0
- package/dist/components/DashboardLayout/DashboardLayout.example.js +7 -0
- package/dist/components/DashboardLayout/DashboardLayout.example.js.map +1 -0
- package/dist/components/Input/Input.example.d.ts +2 -0
- package/dist/components/Input/Input.example.js +7 -0
- package/dist/components/Input/Input.example.js.map +1 -0
- package/dist/components/Modal/Modal.example.d.ts +2 -0
- package/dist/components/Modal/Modal.example.js +12 -0
- package/dist/components/Modal/Modal.example.js.map +1 -0
- package/dist/components/Navbar/Navbar.d.ts +1 -1
- package/dist/components/Navbar/Navbar.example.d.ts +2 -0
- package/dist/components/Navbar/Navbar.example.js +7 -0
- package/dist/components/Navbar/Navbar.example.js.map +1 -0
- package/dist/components/Sidebar/Sidebar.example.d.ts +2 -0
- package/dist/components/Sidebar/Sidebar.example.js +21 -0
- package/dist/components/Sidebar/Sidebar.example.js.map +1 -0
- package/dist/components/Skeleton/Skeleton.example.d.ts +2 -0
- package/dist/components/Skeleton/Skeleton.example.js +7 -0
- package/dist/components/Skeleton/Skeleton.example.js.map +1 -0
- package/dist/components/Spinner/Spinner.example.d.ts +2 -0
- package/dist/components/Spinner/Spinner.example.js +8 -0
- package/dist/components/Spinner/Spinner.example.js.map +1 -0
- package/dist/components/StatsCard/StatsCard.example.d.ts +2 -0
- package/dist/components/StatsCard/StatsCard.example.js +16 -0
- package/dist/components/StatsCard/StatsCard.example.js.map +1 -0
- package/dist/components/Switch/Switch.example.d.ts +2 -0
- package/dist/components/Switch/Switch.example.js +7 -0
- package/dist/components/Switch/Switch.example.js.map +1 -0
- package/dist/components/Tabs/Tabs.example.d.ts +2 -0
- package/dist/components/Tabs/Tabs.example.js +11 -0
- package/dist/components/Tabs/Tabs.example.js.map +1 -0
- package/dist/components/Textarea/Textarea.example.d.ts +2 -0
- package/dist/components/Textarea/Textarea.example.js +7 -0
- package/dist/components/Textarea/Textarea.example.js.map +1 -0
- package/dist/components/Toast/Toast.example.d.ts +2 -0
- package/dist/components/Toast/Toast.example.js +8 -0
- package/dist/components/Toast/Toast.example.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/utils/validation.d.ts +21 -0
- package/dist/utils/validation.js +65 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +9 -3
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { useAuth } from '../../contexts/AuthContext.js';
|
|
3
|
+
import { Spinner } from '../Spinner/Spinner.js';
|
|
4
|
+
import { useLocation, Navigate } from '../../node_modules/react-router/dist/development/chunk-B7RQU5TL.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* ProtectedRoute component that handles authentication and role-based access control
|
|
8
|
+
*/
|
|
9
|
+
const ProtectedRoute = ({ children, requiredRole, fallback, redirectTo = '/login', }) => {
|
|
10
|
+
const { user, isAuthenticated, isLoading } = useAuth();
|
|
11
|
+
const location = useLocation();
|
|
12
|
+
// Show loading spinner while checking authentication
|
|
13
|
+
if (isLoading) {
|
|
14
|
+
return (jsx("div", { className: "flex items-center justify-center min-h-screen", children: jsxs("div", { className: "text-center", children: [jsx(Spinner, { size: "lg", className: "mb-4" }), jsx("p", { className: "text-gray-600", children: "Checking authentication..." })] }) }));
|
|
15
|
+
}
|
|
16
|
+
// Redirect to login if not authenticated
|
|
17
|
+
if (!isAuthenticated || !user) {
|
|
18
|
+
return (jsx(Navigate, { to: redirectTo, state: { from: location }, replace: true }));
|
|
19
|
+
}
|
|
20
|
+
// Check role-based access if required
|
|
21
|
+
if (requiredRole && user.role !== requiredRole) {
|
|
22
|
+
// Show fallback component or redirect to unauthorized page
|
|
23
|
+
if (fallback) {
|
|
24
|
+
return jsx(Fragment, { children: fallback });
|
|
25
|
+
}
|
|
26
|
+
return (jsx("div", { className: "flex items-center justify-center min-h-screen", children: jsxs("div", { className: "text-center max-w-md mx-auto p-8", children: [jsx("div", { className: "w-16 h-16 bg-danger-100 rounded-full flex items-center justify-center mx-auto mb-4", children: jsx("svg", { className: "w-8 h-8 text-danger-600", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z" }) }) }), jsx("h2", { className: "text-2xl font-bold text-gray-900 mb-2", children: "Access Denied" }), jsxs("p", { className: "text-gray-600 mb-6", children: ["You don't have permission to access this page. Required role: ", requiredRole] }), jsx("button", { onClick: () => window.history.back(), className: "text-primary-600 hover:text-primary-500 font-medium", children: "Go Back" })] }) }));
|
|
27
|
+
}
|
|
28
|
+
// Render protected content
|
|
29
|
+
return jsx(Fragment, { children: children });
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export { ProtectedRoute };
|
|
33
|
+
//# sourceMappingURL=ProtectedRoute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProtectedRoute.js","sources":["../../../src/components/Auth/ProtectedRoute.tsx"],"sourcesContent":["import React from 'react';\nimport { Navigate, useLocation } from 'react-router-dom';\nimport { useAuth } from '../../contexts/AuthContext';\nimport { Spinner } from '../Spinner';\nimport type { ProtectedRouteProps } from '../../types/auth';\n\n/**\n * ProtectedRoute component that handles authentication and role-based access control\n */\nexport const ProtectedRoute: React.FC<ProtectedRouteProps> = ({\n children,\n requiredRole,\n fallback,\n redirectTo = '/login',\n}) => {\n const { user, isAuthenticated, isLoading } = useAuth();\n const location = useLocation();\n\n // Show loading spinner while checking authentication\n if (isLoading) {\n return (\n <div className=\"flex items-center justify-center min-h-screen\">\n <div className=\"text-center\">\n <Spinner size=\"lg\" className=\"mb-4\" />\n <p className=\"text-gray-600\">Checking authentication...</p>\n </div>\n </div>\n );\n }\n\n // Redirect to login if not authenticated\n if (!isAuthenticated || !user) {\n return (\n <Navigate\n to={redirectTo}\n state={{ from: location }}\n replace\n />\n );\n }\n\n // Check role-based access if required\n if (requiredRole && user.role !== requiredRole) {\n // Show fallback component or redirect to unauthorized page\n if (fallback) {\n return <>{fallback}</>;\n }\n\n return (\n <div className=\"flex items-center justify-center min-h-screen\">\n <div className=\"text-center max-w-md mx-auto p-8\">\n <div className=\"w-16 h-16 bg-danger-100 rounded-full flex items-center justify-center mx-auto mb-4\">\n <svg\n className=\"w-8 h-8 text-danger-600\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z\"\n />\n </svg>\n </div>\n <h2 className=\"text-2xl font-bold text-gray-900 mb-2\">\n Access Denied\n </h2>\n <p className=\"text-gray-600 mb-6\">\n You don't have permission to access this page. Required role: {requiredRole}\n </p>\n <button\n onClick={() => window.history.back()}\n className=\"text-primary-600 hover:text-primary-500 font-medium\"\n >\n Go Back\n </button>\n </div>\n </div>\n );\n }\n\n // Render protected content\n return <>{children}</>;\n};\n\n/**\n * Hook to check if user has required role\n */\nexport const useRequireRole = (requiredRole: string): boolean => {\n const { user, isAuthenticated } = useAuth();\n return isAuthenticated && user?.role === requiredRole;\n};\n\n/**\n * Higher-order component for role-based access control\n */\nexport const withRoleProtection = <P extends object>(\n Component: React.ComponentType<P>,\n requiredRole: string,\n fallback?: React.ReactNode\n) => {\n return (props: P) => (\n <ProtectedRoute requiredRole={requiredRole as any} fallback={fallback}>\n <Component {...props} />\n </ProtectedRoute>\n );\n};"],"names":["_jsx","_jsxs","_Fragment"],"mappings":";;;;;AAMA;;AAEG;AACI,MAAM,cAAc,GAAkC,CAAC,EAC5D,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,UAAU,GAAG,QAAQ,GACtB,KAAI;IACH,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE;AACtD,IAAA,MAAM,QAAQ,GAAG,WAAW,EAAE;;IAG9B,IAAI,SAAS,EAAE;AACb,QAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+CAA+C,EAAA,QAAA,EAC5DC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,aAAa,EAAA,QAAA,EAAA,CAC1BD,GAAA,CAAC,OAAO,EAAA,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,MAAM,GAAG,EACtCA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,4BAAA,EAAA,CAA+B,CAAA,EAAA,CACvD,EAAA,CACF;IAEV;;AAGA,IAAA,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,EAAE;AAC7B,QAAA,QACEA,GAAA,CAAC,QAAQ,IACP,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EACzB,OAAO,EAAA,IAAA,EAAA,CACP;IAEN;;IAGA,IAAI,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE;;QAE9C,IAAI,QAAQ,EAAE;YACZ,OAAOA,GAAA,CAAAE,QAAA,EAAA,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAI;QACxB;AAEA,QAAA,QACEF,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+CAA+C,EAAA,QAAA,EAC5DC,cAAK,SAAS,EAAC,kCAAkC,EAAA,QAAA,EAAA,CAC/CD,aAAK,SAAS,EAAC,oFAAoF,EAAA,QAAA,EACjGA,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,yBAAyB,EACnC,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,OAAO,EAAC,WAAW,EAAA,QAAA,EAEnBA,GAAA,CAAA,MAAA,EAAA,EACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,WAAW,EAAE,CAAC,EACd,CAAC,EAAC,2IAA2I,EAAA,CAC7I,EAAA,CACE,GACF,EACNA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,uCAAuC,8BAEhD,EACLC,IAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,oBAAoB,+EACgC,YAAY,CAAA,EAAA,CACzE,EACJD,GAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EACpC,SAAS,EAAC,qDAAqD,wBAGxD,CAAA,EAAA,CACL,EAAA,CACF;IAEV;;IAGA,OAAOA,GAAA,CAAAE,QAAA,EAAA,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAI;AACxB;;;;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface SignupFormProps {
|
|
3
|
+
className?: string;
|
|
4
|
+
onSuccess?: () => void;
|
|
5
|
+
onLoginClick?: () => void;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* SignupForm component with real-time validation and password strength indicator
|
|
9
|
+
*/
|
|
10
|
+
export declare const SignupForm: React.FC<SignupFormProps>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { SignupForm } from './SignupForm.js';
|
|
3
|
+
import { Card, CardHeader, CardTitle, CardContent } from '../Card/Card.js';
|
|
4
|
+
import { AuthProvider } from '../../contexts/AuthContext.js';
|
|
5
|
+
|
|
6
|
+
const SignupFormExample = () => (jsx(AuthProvider, { children: jsx("div", { className: "flex items-center justify-center min-h-[400px] bg-background", children: jsxs(Card, { className: "w-full max-w-md", children: [jsx(CardHeader, { children: jsx(CardTitle, { children: "Sign Up" }) }), jsx(CardContent, { children: jsx(SignupForm, {}) })] }) }) }));
|
|
7
|
+
|
|
8
|
+
export { SignupFormExample };
|
|
9
|
+
//# sourceMappingURL=SignupForm.example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignupForm.example.js","sources":["../../../src/components/Auth/SignupForm.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { SignupForm } from \"./SignupForm\";\r\nimport { Card, CardHeader, CardTitle, CardContent } from \"../Card\";\r\nimport { AuthProvider } from \"../../contexts/AuthContext\";\r\n\r\nexport const SignupFormExample: React.FC = () => (\r\n <AuthProvider>\r\n <div className=\"flex items-center justify-center min-h-[400px] bg-background\">\r\n <Card className=\"w-full max-w-md\">\r\n <CardHeader>\r\n <CardTitle>Sign Up</CardTitle>\r\n </CardHeader>\r\n <CardContent>\r\n <SignupForm />\r\n </CardContent>\r\n </Card>\r\n </div>\r\n </AuthProvider>\r\n);"],"names":["_jsx","_jsxs"],"mappings":";;;;;AAKO,MAAM,iBAAiB,GAAa,OACzCA,GAAA,CAAC,YAAY,EAAA,EAAA,QAAA,EACXA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,8DAA8D,YAC3EC,IAAA,CAAC,IAAI,IAAC,SAAS,EAAC,iBAAiB,EAAA,QAAA,EAAA,CAC/BD,IAAC,UAAU,EAAA,EAAA,QAAA,EACTA,IAAC,SAAS,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAoB,GACnB,EACbA,GAAA,CAAC,WAAW,EAAA,EAAA,QAAA,EACVA,GAAA,CAAC,UAAU,EAAA,EAAA,CAAG,EAAA,CACF,IACT,EAAA,CACH,EAAA,CACO;;;;"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { useForm } from '../../node_modules/react-hook-form/dist/index.esm.js';
|
|
4
|
+
import { zodResolver as a } from '../../node_modules/@hookform/resolvers/zod/dist/zod.js';
|
|
5
|
+
import { AlertCircle, User, Mail, Lock, EyeOff, Eye } from 'lucide-react';
|
|
6
|
+
import { cn } from '../../utils/cn.js';
|
|
7
|
+
import { Button } from '../Button/Button.js';
|
|
8
|
+
import { Input } from '../Input/Input.js';
|
|
9
|
+
import { Checkbox } from '../Checkbox/Checkbox.js';
|
|
10
|
+
import { Alert, AlertDescription } from '../Alert/Alert.js';
|
|
11
|
+
import { Spinner } from '../Spinner/Spinner.js';
|
|
12
|
+
import { Badge } from '../Badge/Badge.js';
|
|
13
|
+
import { useAuth } from '../../contexts/AuthContext.js';
|
|
14
|
+
import { calculatePasswordStrength, signupSchema } from '../../utils/validation.js';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* SignupForm component with real-time validation and password strength indicator
|
|
18
|
+
*/
|
|
19
|
+
const SignupForm = ({ className, onSuccess, onLoginClick, }) => {
|
|
20
|
+
const { signup, isLoading, error, clearError } = useAuth();
|
|
21
|
+
const [showPassword, setShowPassword] = useState(false);
|
|
22
|
+
const [showConfirmPassword, setShowConfirmPassword] = useState(false);
|
|
23
|
+
const { register, handleSubmit, watch, formState: { errors, isSubmitting }, reset, } = useForm({
|
|
24
|
+
resolver: a(signupSchema),
|
|
25
|
+
defaultValues: {
|
|
26
|
+
name: '',
|
|
27
|
+
email: '',
|
|
28
|
+
password: '',
|
|
29
|
+
confirmPassword: '',
|
|
30
|
+
acceptTerms: false,
|
|
31
|
+
},
|
|
32
|
+
mode: 'onChange',
|
|
33
|
+
});
|
|
34
|
+
const password = watch('password');
|
|
35
|
+
const passwordStrength = password ? calculatePasswordStrength(password) : null;
|
|
36
|
+
const onSubmit = async (data) => {
|
|
37
|
+
try {
|
|
38
|
+
clearError();
|
|
39
|
+
await signup(data);
|
|
40
|
+
reset();
|
|
41
|
+
onSuccess?.();
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
// Error is handled by the auth context
|
|
45
|
+
console.error('Signup failed:', error);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const togglePasswordVisibility = () => {
|
|
49
|
+
setShowPassword(prev => !prev);
|
|
50
|
+
};
|
|
51
|
+
const toggleConfirmPasswordVisibility = () => {
|
|
52
|
+
setShowConfirmPassword(prev => !prev);
|
|
53
|
+
};
|
|
54
|
+
return (jsx("div", { className: cn('w-full max-w-md mx-auto', className), children: jsxs("div", { className: "bg-white rounded-lg shadow-lg p-8", children: [jsxs("div", { className: "text-center mb-8", children: [jsx("h1", { className: "text-2xl font-bold text-gray-900 mb-2", children: "Create Account" }), jsx("p", { className: "text-gray-600", children: "Join us today and get started" })] }), error && (jsxs(Alert, { variant: "danger", className: "mb-6", children: [jsx(AlertCircle, { className: "h-4 w-4" }), jsx(AlertDescription, { children: error })] })), jsxs("form", { onSubmit: handleSubmit(onSubmit), className: "space-y-6", children: [jsxs("div", { children: [jsx("label", { htmlFor: "name", className: "block text-sm font-medium text-gray-700 mb-2", children: "Full Name" }), jsxs("div", { className: "relative", children: [jsx(User, { className: "absolute left-3 top-1/2 transform -translate-y-1/2 h-5 w-5 text-gray-400" }), jsx(Input, { id: "name", type: "text", placeholder: "Enter your full name", className: cn('pl-10', errors.name && 'border-danger-500 focus:ring-danger-500'), "aria-invalid": errors.name ? 'true' : 'false', "aria-describedby": errors.name ? 'name-error' : undefined, ...register('name') })] }), errors.name && (jsx("p", { id: "name-error", className: "mt-1 text-sm text-danger-600", role: "alert", children: errors.name.message }))] }), jsxs("div", { children: [jsx("label", { htmlFor: "email", className: "block text-sm font-medium text-gray-700 mb-2", children: "Email Address" }), jsxs("div", { className: "relative", children: [jsx(Mail, { className: "absolute left-3 top-1/2 transform -translate-y-1/2 h-5 w-5 text-gray-400" }), jsx(Input, { id: "email", type: "email", placeholder: "Enter your email", className: cn('pl-10', errors.email && 'border-danger-500 focus:ring-danger-500'), "aria-invalid": errors.email ? 'true' : 'false', "aria-describedby": errors.email ? 'email-error' : undefined, ...register('email') })] }), errors.email && (jsx("p", { id: "email-error", className: "mt-1 text-sm text-danger-600", role: "alert", children: errors.email.message }))] }), jsxs("div", { children: [jsx("label", { htmlFor: "password", className: "block text-sm font-medium text-gray-700 mb-2", children: "Password" }), jsxs("div", { className: "relative", children: [jsx(Lock, { className: "absolute left-3 top-1/2 transform -translate-y-1/2 h-5 w-5 text-gray-400" }), jsx(Input, { id: "password", type: showPassword ? 'text' : 'password', placeholder: "Create a strong password", className: cn('pl-10 pr-10', errors.password && 'border-danger-500 focus:ring-danger-500'), "aria-invalid": errors.password ? 'true' : 'false', "aria-describedby": errors.password ? 'password-error password-strength' : 'password-strength', ...register('password') }), jsx("button", { type: "button", onClick: togglePasswordVisibility, className: "absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600", "aria-label": showPassword ? 'Hide password' : 'Show password', children: showPassword ? (jsx(EyeOff, { className: "h-5 w-5" })) : (jsx(Eye, { className: "h-5 w-5" })) })] }), password && passwordStrength && (jsxs("div", { id: "password-strength", className: "mt-2", children: [jsxs("div", { className: "flex items-center justify-between mb-1", children: [jsx("span", { className: "text-xs text-gray-600", children: "Password strength:" }), jsx(Badge, { variant: passwordStrength.color === 'success' ? 'success' :
|
|
55
|
+
passwordStrength.color === 'warning' ? 'warning' : 'danger', className: "text-xs", children: passwordStrength.label })] }), jsx("div", { className: "w-full bg-gray-200 rounded-full h-2", children: jsx("div", { className: cn('h-2 rounded-full transition-all duration-300', passwordStrength.color === 'success' && 'bg-success-500', passwordStrength.color === 'warning' && 'bg-warning-500', passwordStrength.color === 'danger' && 'bg-danger-500'), style: { width: `${(passwordStrength.score / 6) * 100}%` } }) })] })), errors.password && (jsx("p", { id: "password-error", className: "mt-1 text-sm text-danger-600", role: "alert", children: errors.password.message }))] }), jsxs("div", { children: [jsx("label", { htmlFor: "confirmPassword", className: "block text-sm font-medium text-gray-700 mb-2", children: "Confirm Password" }), jsxs("div", { className: "relative", children: [jsx(Lock, { className: "absolute left-3 top-1/2 transform -translate-y-1/2 h-5 w-5 text-gray-400" }), jsx(Input, { id: "confirmPassword", type: showConfirmPassword ? 'text' : 'password', placeholder: "Confirm your password", className: cn('pl-10 pr-10', errors.confirmPassword && 'border-danger-500 focus:ring-danger-500'), "aria-invalid": errors.confirmPassword ? 'true' : 'false', "aria-describedby": errors.confirmPassword ? 'confirm-password-error' : undefined, ...register('confirmPassword') }), jsx("button", { type: "button", onClick: toggleConfirmPasswordVisibility, className: "absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600", "aria-label": showConfirmPassword ? 'Hide password' : 'Show password', children: showConfirmPassword ? (jsx(EyeOff, { className: "h-5 w-5" })) : (jsx(Eye, { className: "h-5 w-5" })) })] }), errors.confirmPassword && (jsx("p", { id: "confirm-password-error", className: "mt-1 text-sm text-danger-600", role: "alert", children: errors.confirmPassword.message }))] }), jsxs("div", { children: [jsxs("label", { className: "flex items-start", children: [jsx(Checkbox, { className: "mt-1", ...register('acceptTerms'), "aria-invalid": errors.acceptTerms ? 'true' : 'false', "aria-describedby": errors.acceptTerms ? 'terms-error' : undefined }), jsxs("span", { className: "ml-2 text-sm text-gray-600", children: ["I agree to the", ' ', jsx("a", { href: "#", className: "text-primary-600 hover:text-primary-500 font-medium", children: "Terms of Service" }), ' ', "and", ' ', jsx("a", { href: "#", className: "text-primary-600 hover:text-primary-500 font-medium", children: "Privacy Policy" })] })] }), errors.acceptTerms && (jsx("p", { id: "terms-error", className: "mt-1 text-sm text-danger-600", role: "alert", children: errors.acceptTerms.message }))] }), jsx(Button, { type: "submit", variant: "primary", className: "w-full", disabled: isSubmitting || isLoading, children: isSubmitting || isLoading ? (jsxs(Fragment, { children: [jsx(Spinner, { size: "sm", className: "mr-2" }), "Creating account..."] })) : ('Create Account') })] }), jsx("div", { className: "mt-6 text-center", children: jsxs("p", { className: "text-sm text-gray-600", children: ["Already have an account?", ' ', jsx("button", { type: "button", onClick: onLoginClick, className: "text-primary-600 hover:text-primary-500 font-medium", children: "Sign in" })] }) })] }) }));
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export { SignupForm };
|
|
59
|
+
//# sourceMappingURL=SignupForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignupForm.js","sources":["../../../src/components/Auth/SignupForm.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { Eye, EyeOff, Mail, Lock, User, AlertCircle, Check } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Button } from '../Button';\nimport { Input } from '../Input';\nimport { Checkbox } from '../Checkbox';\nimport { Alert, AlertDescription } from '../Alert';\nimport { Spinner } from '../Spinner';\nimport { Badge } from '../Badge';\nimport { useAuth } from '../../contexts/AuthContext';\nimport { signupSchema, type SignupFormData, calculatePasswordStrength } from '../../utils/validation';\n\ninterface SignupFormProps {\n className?: string;\n onSuccess?: () => void;\n onLoginClick?: () => void;\n}\n\n/**\n * SignupForm component with real-time validation and password strength indicator\n */\nexport const SignupForm: React.FC<SignupFormProps> = ({\n className,\n onSuccess,\n onLoginClick,\n}) => {\n const { signup, isLoading, error, clearError } = useAuth();\n const [showPassword, setShowPassword] = useState(false);\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\n\n const {\n register,\n handleSubmit,\n watch,\n formState: { errors, isSubmitting },\n reset,\n } = useForm<SignupFormData>({\n resolver: zodResolver(signupSchema),\n defaultValues: {\n name: '',\n email: '',\n password: '',\n confirmPassword: '',\n acceptTerms: false,\n },\n mode: 'onChange',\n });\n\n const password = watch('password');\n const passwordStrength = password ? calculatePasswordStrength(password) : null;\n\n const onSubmit = async (data: SignupFormData) => {\n try {\n clearError();\n await signup(data);\n reset();\n onSuccess?.();\n } catch (error) {\n // Error is handled by the auth context\n console.error('Signup failed:', error);\n }\n };\n\n const togglePasswordVisibility = () => {\n setShowPassword(prev => !prev);\n };\n\n const toggleConfirmPasswordVisibility = () => {\n setShowConfirmPassword(prev => !prev);\n };\n\n return (\n <div className={cn('w-full max-w-md mx-auto', className)}>\n <div className=\"bg-white rounded-lg shadow-lg p-8\">\n {/* Header */}\n <div className=\"text-center mb-8\">\n <h1 className=\"text-2xl font-bold text-gray-900 mb-2\">\n Create Account\n </h1>\n <p className=\"text-gray-600\">\n Join us today and get started\n </p>\n </div>\n\n {/* Error Alert */}\n {error && (\n <Alert variant=\"danger\" className=\"mb-6\">\n <AlertCircle className=\"h-4 w-4\" />\n <AlertDescription>{error}</AlertDescription>\n </Alert>\n )}\n\n {/* Signup Form */}\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-6\">\n {/* Name Field */}\n <div>\n <label\n htmlFor=\"name\"\n className=\"block text-sm font-medium text-gray-700 mb-2\"\n >\n Full Name\n </label>\n <div className=\"relative\">\n <User className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-5 w-5 text-gray-400\" />\n <Input\n id=\"name\"\n type=\"text\"\n placeholder=\"Enter your full name\"\n className={cn(\n 'pl-10',\n errors.name && 'border-danger-500 focus:ring-danger-500'\n )}\n aria-invalid={errors.name ? 'true' : 'false'}\n aria-describedby={errors.name ? 'name-error' : undefined}\n {...register('name')}\n />\n </div>\n {errors.name && (\n <p\n id=\"name-error\"\n className=\"mt-1 text-sm text-danger-600\"\n role=\"alert\"\n >\n {errors.name.message}\n </p>\n )}\n </div>\n\n {/* Email Field */}\n <div>\n <label\n htmlFor=\"email\"\n className=\"block text-sm font-medium text-gray-700 mb-2\"\n >\n Email Address\n </label>\n <div className=\"relative\">\n <Mail className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-5 w-5 text-gray-400\" />\n <Input\n id=\"email\"\n type=\"email\"\n placeholder=\"Enter your email\"\n className={cn(\n 'pl-10',\n errors.email && 'border-danger-500 focus:ring-danger-500'\n )}\n aria-invalid={errors.email ? 'true' : 'false'}\n aria-describedby={errors.email ? 'email-error' : undefined}\n {...register('email')}\n />\n </div>\n {errors.email && (\n <p\n id=\"email-error\"\n className=\"mt-1 text-sm text-danger-600\"\n role=\"alert\"\n >\n {errors.email.message}\n </p>\n )}\n </div>\n\n {/* Password Field */}\n <div>\n <label\n htmlFor=\"password\"\n className=\"block text-sm font-medium text-gray-700 mb-2\"\n >\n Password\n </label>\n <div className=\"relative\">\n <Lock className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-5 w-5 text-gray-400\" />\n <Input\n id=\"password\"\n type={showPassword ? 'text' : 'password'}\n placeholder=\"Create a strong password\"\n className={cn(\n 'pl-10 pr-10',\n errors.password && 'border-danger-500 focus:ring-danger-500'\n )}\n aria-invalid={errors.password ? 'true' : 'false'}\n aria-describedby={errors.password ? 'password-error password-strength' : 'password-strength'}\n {...register('password')}\n />\n <button\n type=\"button\"\n onClick={togglePasswordVisibility}\n className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600\"\n aria-label={showPassword ? 'Hide password' : 'Show password'}\n >\n {showPassword ? (\n <EyeOff className=\"h-5 w-5\" />\n ) : (\n <Eye className=\"h-5 w-5\" />\n )}\n </button>\n </div>\n \n {/* Password Strength Indicator */}\n {password && passwordStrength && (\n <div id=\"password-strength\" className=\"mt-2\">\n <div className=\"flex items-center justify-between mb-1\">\n <span className=\"text-xs text-gray-600\">Password strength:</span>\n <Badge\n variant={\n passwordStrength.color === 'success' ? 'success' :\n passwordStrength.color === 'warning' ? 'warning' : 'danger'\n }\n className=\"text-xs\"\n >\n {passwordStrength.label}\n </Badge>\n </div>\n <div className=\"w-full bg-gray-200 rounded-full h-2\">\n <div\n className={cn(\n 'h-2 rounded-full transition-all duration-300',\n passwordStrength.color === 'success' && 'bg-success-500',\n passwordStrength.color === 'warning' && 'bg-warning-500',\n passwordStrength.color === 'danger' && 'bg-danger-500'\n )}\n style={{ width: `${(passwordStrength.score / 6) * 100}%` }}\n />\n </div>\n </div>\n )}\n \n {errors.password && (\n <p\n id=\"password-error\"\n className=\"mt-1 text-sm text-danger-600\"\n role=\"alert\"\n >\n {errors.password.message}\n </p>\n )}\n </div>\n\n {/* Confirm Password Field */}\n <div>\n <label\n htmlFor=\"confirmPassword\"\n className=\"block text-sm font-medium text-gray-700 mb-2\"\n >\n Confirm Password\n </label>\n <div className=\"relative\">\n <Lock className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-5 w-5 text-gray-400\" />\n <Input\n id=\"confirmPassword\"\n type={showConfirmPassword ? 'text' : 'password'}\n placeholder=\"Confirm your password\"\n className={cn(\n 'pl-10 pr-10',\n errors.confirmPassword && 'border-danger-500 focus:ring-danger-500'\n )}\n aria-invalid={errors.confirmPassword ? 'true' : 'false'}\n aria-describedby={errors.confirmPassword ? 'confirm-password-error' : undefined}\n {...register('confirmPassword')}\n />\n <button\n type=\"button\"\n onClick={toggleConfirmPasswordVisibility}\n className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400 hover:text-gray-600\"\n aria-label={showConfirmPassword ? 'Hide password' : 'Show password'}\n >\n {showConfirmPassword ? (\n <EyeOff className=\"h-5 w-5\" />\n ) : (\n <Eye className=\"h-5 w-5\" />\n )}\n </button>\n </div>\n {errors.confirmPassword && (\n <p\n id=\"confirm-password-error\"\n className=\"mt-1 text-sm text-danger-600\"\n role=\"alert\"\n >\n {errors.confirmPassword.message}\n </p>\n )}\n </div>\n\n {/* Terms of Service */}\n <div>\n <label className=\"flex items-start\">\n <Checkbox\n className=\"mt-1\"\n {...register('acceptTerms')}\n aria-invalid={errors.acceptTerms ? 'true' : 'false'}\n aria-describedby={errors.acceptTerms ? 'terms-error' : undefined}\n />\n <span className=\"ml-2 text-sm text-gray-600\">\n I agree to the{' '}\n <a\n href=\"#\"\n className=\"text-primary-600 hover:text-primary-500 font-medium\"\n >\n Terms of Service\n </a>{' '}\n and{' '}\n <a\n href=\"#\"\n className=\"text-primary-600 hover:text-primary-500 font-medium\"\n >\n Privacy Policy\n </a>\n </span>\n </label>\n {errors.acceptTerms && (\n <p\n id=\"terms-error\"\n className=\"mt-1 text-sm text-danger-600\"\n role=\"alert\"\n >\n {errors.acceptTerms.message}\n </p>\n )}\n </div>\n\n {/* Submit Button */}\n <Button\n type=\"submit\"\n variant=\"primary\"\n className=\"w-full\"\n disabled={isSubmitting || isLoading}\n >\n {isSubmitting || isLoading ? (\n <>\n <Spinner size=\"sm\" className=\"mr-2\" />\n Creating account...\n </>\n ) : (\n 'Create Account'\n )}\n </Button>\n </form>\n\n {/* Login Link */}\n <div className=\"mt-6 text-center\">\n <p className=\"text-sm text-gray-600\">\n Already have an account?{' '}\n <button\n type=\"button\"\n onClick={onLoginClick}\n className=\"text-primary-600 hover:text-primary-500 font-medium\"\n >\n Sign in\n </button>\n </p>\n </div>\n </div>\n </div>\n );\n};"],"names":["zodResolver","_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Avatar, AvatarImage, AvatarFallback } from './Avatar.js';
|
|
3
|
+
|
|
4
|
+
const AvatarExample = () => (jsxs("div", { className: "flex gap-4", children: [jsxs(Avatar, { children: [jsx(AvatarImage, { src: "https://randomuser.me/api/portraits/men/32.jpg" }), jsx(AvatarFallback, { children: "AB" })] }), jsxs(Avatar, { children: [jsx(AvatarImage, { src: "" }), jsx(AvatarFallback, { children: "CD" })] }), jsxs(Avatar, { children: [jsx(AvatarImage, { src: "https://randomuser.me/api/portraits/women/44.jpg" }), jsx(AvatarFallback, { children: "EF" })] })] }));
|
|
5
|
+
|
|
6
|
+
export { AvatarExample };
|
|
7
|
+
//# sourceMappingURL=Avatar.example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Avatar.example.js","sources":["../../../src/components/Avatar/Avatar.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Avatar, AvatarImage, AvatarFallback } from \"./Avatar\";\r\n\r\nexport const AvatarExample: React.FC = () => (\r\n <div className=\"flex gap-4\">\r\n <Avatar>\r\n <AvatarImage src=\"https://randomuser.me/api/portraits/men/32.jpg\" />\r\n <AvatarFallback>AB</AvatarFallback>\r\n </Avatar>\r\n <Avatar>\r\n <AvatarImage src=\"\" />\r\n <AvatarFallback>CD</AvatarFallback>\r\n </Avatar>\r\n <Avatar>\r\n <AvatarImage src=\"https://randomuser.me/api/portraits/women/44.jpg\" />\r\n <AvatarFallback>EF</AvatarFallback>\r\n </Avatar>\r\n </div>\r\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,aAAa,GAAa,OACrCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,YAAY,EAAA,QAAA,EAAA,CACzBA,IAAA,CAAC,MAAM,EAAA,EAAA,QAAA,EAAA,CACLC,GAAA,CAAC,WAAW,EAAA,EAAC,GAAG,EAAC,gDAAgD,EAAA,CAAG,EACpEA,GAAA,CAAC,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAoB,CAAA,EAAA,CAC5B,EACTD,IAAA,CAAC,MAAM,EAAA,EAAA,QAAA,EAAA,CACLC,GAAA,CAAC,WAAW,EAAA,EAAC,GAAG,EAAC,EAAE,EAAA,CAAG,EACtBA,GAAA,CAAC,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAoB,CAAA,EAAA,CAC5B,EACTD,IAAA,CAAC,MAAM,EAAA,EAAA,QAAA,EAAA,CACLC,GAAA,CAAC,WAAW,EAAA,EAAC,GAAG,EAAC,kDAAkD,EAAA,CAAG,EACtEA,GAAA,CAAC,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAoB,CAAA,EAAA,CAC5B,CAAA,EAAA,CACL;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Badge } from './Badge.js';
|
|
3
|
+
|
|
4
|
+
const BadgeExample = () => (jsxs("div", { className: "flex flex-wrap gap-2", children: [jsx(Badge, { children: "Default" }), jsx(Badge, { variant: "secondary", children: "Secondary" }), jsx(Badge, { variant: "success", children: "Success" }), jsx(Badge, { variant: "danger", children: "Danger" }), jsx(Badge, { variant: "warning", children: "Warning" }), jsx(Badge, { variant: "outline", children: "Outline" })] }));
|
|
5
|
+
|
|
6
|
+
export { BadgeExample };
|
|
7
|
+
//# sourceMappingURL=Badge.example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.example.js","sources":["../../../src/components/Badge/Badge.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Badge } from \"./Badge\";\r\n\r\nexport const BadgeExample: React.FC = () => (\r\n <div className=\"flex flex-wrap gap-2\">\r\n <Badge>Default</Badge>\r\n <Badge variant=\"secondary\">Secondary</Badge>\r\n <Badge variant=\"success\">Success</Badge>\r\n <Badge variant=\"danger\">Danger</Badge>\r\n <Badge variant=\"warning\">Warning</Badge>\r\n <Badge variant=\"outline\">Outline</Badge>\r\n </div>\r\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,YAAY,GAAa,OACpCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,sBAAsB,EAAA,QAAA,EAAA,CACnCC,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAgB,EACtBA,GAAA,CAAC,KAAK,EAAA,EAAC,OAAO,EAAC,WAAW,EAAA,QAAA,EAAA,WAAA,EAAA,CAAkB,EAC5CA,GAAA,CAAC,KAAK,EAAA,EAAC,OAAO,EAAC,SAAS,EAAA,QAAA,EAAA,SAAA,EAAA,CAAgB,EACxCA,GAAA,CAAC,KAAK,EAAA,EAAC,OAAO,EAAC,QAAQ,EAAA,QAAA,EAAA,QAAA,EAAA,CAAe,EACtCA,GAAA,CAAC,KAAK,EAAA,EAAC,OAAO,EAAC,SAAS,EAAA,QAAA,EAAA,SAAA,EAAA,CAAgB,EACxCA,GAAA,CAAC,KAAK,EAAA,EAAC,OAAO,EAAC,SAAS,EAAA,QAAA,EAAA,SAAA,EAAA,CAAgB,CAAA,EAAA,CACpC;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Button } from './Button.js';
|
|
3
|
+
|
|
4
|
+
const ButtonExample = () => (jsxs("div", { className: "space-y-4", children: [jsxs("div", { className: "flex flex-wrap gap-2", children: [jsx(Button, { variant: "primary", children: "Primary" }), jsx(Button, { variant: "secondary", children: "Secondary" }), jsx(Button, { variant: "danger", children: "Danger" }), jsx(Button, { variant: "success", children: "Success" }), jsx(Button, { variant: "outline", children: "Outline" }), jsx(Button, { variant: "ghost", children: "Ghost" })] }), jsxs("div", { className: "flex flex-wrap gap-2 items-center", children: [jsx(Button, { size: "sm", children: "Small" }), jsx(Button, { size: "md", children: "Medium" }), jsx(Button, { size: "lg", children: "Large" }), jsx(Button, { size: "xl", children: "Extra Large" })] })] }));
|
|
5
|
+
|
|
6
|
+
export { ButtonExample };
|
|
7
|
+
//# sourceMappingURL=Button.example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.example.js","sources":["../../../src/components/Button/Button.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Button } from \"./Button\";\r\n\r\nexport const ButtonExample: React.FC = () => (\r\n <div className=\"space-y-4\">\r\n <div className=\"flex flex-wrap gap-2\">\r\n <Button variant=\"primary\">Primary</Button>\r\n <Button variant=\"secondary\">Secondary</Button>\r\n <Button variant=\"danger\">Danger</Button>\r\n <Button variant=\"success\">Success</Button>\r\n <Button variant=\"outline\">Outline</Button>\r\n <Button variant=\"ghost\">Ghost</Button>\r\n </div>\r\n <div className=\"flex flex-wrap gap-2 items-center\">\r\n <Button size=\"sm\">Small</Button>\r\n <Button size=\"md\">Medium</Button>\r\n <Button size=\"lg\">Large</Button>\r\n <Button size=\"xl\">Extra Large</Button>\r\n </div>\r\n </div>\r\n);"],"names":["_jsxs","_jsx"],"mappings":";;;MAGa,aAAa,GAAa,OACrCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,sBAAsB,EAAA,QAAA,EAAA,CACnCC,IAAC,MAAM,EAAA,EAAC,OAAO,EAAC,SAAS,EAAA,QAAA,EAAA,SAAA,EAAA,CAAiB,EAC1CA,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAC,WAAW,0BAAmB,EAC9CA,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAC,QAAQ,EAAA,QAAA,EAAA,QAAA,EAAA,CAAgB,EACxCA,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAC,SAAS,EAAA,QAAA,EAAA,SAAA,EAAA,CAAiB,EAC1CA,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAC,SAAS,wBAAiB,EAC1CA,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAC,OAAO,EAAA,QAAA,EAAA,OAAA,EAAA,CAAe,CAAA,EAAA,CAClC,EACND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mCAAmC,EAAA,QAAA,EAAA,CAChDC,GAAA,CAAC,MAAM,EAAA,EAAC,IAAI,EAAC,IAAI,EAAA,QAAA,EAAA,OAAA,EAAA,CAAe,EAChCA,IAAC,MAAM,EAAA,EAAC,IAAI,EAAC,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,CAAgB,EACjCA,GAAA,CAAC,MAAM,EAAA,EAAC,IAAI,EAAC,IAAI,sBAAe,EAChCA,GAAA,CAAC,MAAM,EAAA,EAAC,IAAI,EAAC,IAAI,EAAA,QAAA,EAAA,aAAA,EAAA,CAAqB,CAAA,EAAA,CAClC,CAAA,EAAA,CACF;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Card, CardHeader, CardTitle, CardContent } from './Card.js';
|
|
3
|
+
|
|
4
|
+
const CardExample = () => (jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [jsxs(Card, { children: [jsx(CardHeader, { children: jsx(CardTitle, { children: "Default Card" }) }), jsx(CardContent, { children: jsx("p", { className: "text-gray-600", children: "This is a default card with standard styling." }) })] }), jsxs(Card, { variant: "elevated", children: [jsx(CardHeader, { children: jsx(CardTitle, { children: "Elevated Card" }) }), jsx(CardContent, { children: jsx("p", { className: "text-gray-600", children: "This card has elevated shadow styling." }) })] })] }));
|
|
5
|
+
|
|
6
|
+
export { CardExample };
|
|
7
|
+
//# sourceMappingURL=Card.example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.example.js","sources":["../../../src/components/Card/Card.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Card, CardHeader, CardTitle, CardContent } from \"./Card\";\r\n\r\nexport const CardExample: React.FC = () => (\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n <Card>\r\n <CardHeader>\r\n <CardTitle>Default Card</CardTitle>\r\n </CardHeader>\r\n <CardContent>\r\n <p className=\"text-gray-600\">This is a default card with standard styling.</p>\r\n </CardContent>\r\n </Card>\r\n <Card variant=\"elevated\">\r\n <CardHeader>\r\n <CardTitle>Elevated Card</CardTitle>\r\n </CardHeader>\r\n <CardContent>\r\n <p className=\"text-gray-600\">This card has elevated shadow styling.</p>\r\n </CardContent>\r\n </Card>\r\n </div>\r\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,WAAW,GAAa,OACnCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uCAAuC,EAAA,QAAA,EAAA,CACpDA,IAAA,CAAC,IAAI,EAAA,EAAA,QAAA,EAAA,CACHC,GAAA,CAAC,UAAU,EAAA,EAAA,QAAA,EACTA,GAAA,CAAC,SAAS,EAAA,EAAA,QAAA,EAAA,cAAA,EAAA,CAAyB,EAAA,CACxB,EACbA,GAAA,CAAC,WAAW,EAAA,EAAA,QAAA,EACVA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,+CAAA,EAAA,CAAkD,EAAA,CAClE,CAAA,EAAA,CACT,EACPD,IAAA,CAAC,IAAI,EAAA,EAAC,OAAO,EAAC,UAAU,EAAA,QAAA,EAAA,CACtBC,GAAA,CAAC,UAAU,EAAA,EAAA,QAAA,EACTA,GAAA,CAAC,SAAS,EAAA,EAAA,QAAA,EAAA,eAAA,EAAA,CAA0B,EAAA,CACzB,EACbA,GAAA,CAAC,WAAW,EAAA,EAAA,QAAA,EACVA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,wCAAA,EAAA,CAA2C,EAAA,CAC3D,CAAA,EAAA,CACT,CAAA,EAAA,CACH;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Checkbox } from './Checkbox.js';
|
|
3
|
+
|
|
4
|
+
const CheckboxExample = () => (jsxs("div", { className: "space-y-2", children: [jsxs("label", { className: "flex items-center gap-2", children: [jsx(Checkbox, {}), " ", jsx("span", { children: "Default" })] }), jsxs("label", { className: "flex items-center gap-2", children: [jsx(Checkbox, { checked: true }), " ", jsx("span", { children: "Checked" })] }), jsxs("label", { className: "flex items-center gap-2", children: [jsx(Checkbox, { disabled: true }), " ", jsx("span", { children: "Disabled" })] }), jsxs("label", { className: "flex items-center gap-2", children: [jsx(Checkbox, { size: "sm" }), " ", jsx("span", { children: "Small" })] }), jsxs("label", { className: "flex items-center gap-2", children: [jsx(Checkbox, { size: "lg" }), " ", jsx("span", { children: "Large" })] })] }));
|
|
5
|
+
|
|
6
|
+
export { CheckboxExample };
|
|
7
|
+
//# sourceMappingURL=Checkbox.example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.example.js","sources":["../../../src/components/Checkbox/Checkbox.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Checkbox } from \"./Checkbox\";\r\n\r\nexport const CheckboxExample: React.FC = () => (\r\n <div className=\"space-y-2\">\r\n <label className=\"flex items-center gap-2\">\r\n <Checkbox /> <span>Default</span>\r\n </label>\r\n <label className=\"flex items-center gap-2\">\r\n <Checkbox checked /> <span>Checked</span>\r\n </label>\r\n <label className=\"flex items-center gap-2\">\r\n <Checkbox disabled /> <span>Disabled</span>\r\n </label>\r\n <label className=\"flex items-center gap-2\">\r\n <Checkbox size=\"sm\" /> <span>Small</span>\r\n </label>\r\n <label className=\"flex items-center gap-2\">\r\n <Checkbox size=\"lg\" /> <span>Large</span>\r\n </label>\r\n </div>\r\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,eAAe,GAAa,OACvCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBA,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yBAAyB,aACxCC,GAAA,CAAC,QAAQ,EAAA,EAAA,CAAG,EAAA,GAAA,EAACA,oCAAoB,CAAA,EAAA,CAC3B,EACRD,gBAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,QAAQ,EAAA,EAAC,OAAO,SAAG,EAAA,GAAA,EAACA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAoB,IACnC,EACRD,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,QAAQ,EAAA,EAAC,QAAQ,SAAG,EAAA,GAAA,EAACA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAqB,IACrC,EACRD,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACxCC,GAAA,CAAC,QAAQ,EAAA,EAAC,IAAI,EAAC,IAAI,EAAA,CAAG,EAAA,GAAA,EAACA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,OAAA,EAAA,CAAkB,IACnC,EACRD,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,yBAAyB,aACxCC,GAAA,CAAC,QAAQ,IAAC,IAAI,EAAC,IAAI,EAAA,CAAG,EAAA,GAAA,EAACA,kCAAkB,CAAA,EAAA,CACnC,CAAA,EAAA,CACJ;;;;"}
|