@beyondcorp/beyond-ui 1.2.83 → 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.
- package/README.md +394 -394
- package/dist/components/Alert/Alert.example.js.map +1 -1
- package/dist/components/Auth/LoginForm.example.js.map +1 -1
- package/dist/components/Auth/PasswordResetForm.example.js.map +1 -1
- package/dist/components/Auth/PasswordResetForm.js.map +1 -1
- package/dist/components/Auth/ProtectedRoute.example.js.map +1 -1
- package/dist/components/Auth/SignupForm.example.js.map +1 -1
- package/dist/components/Avatar/Avatar.example.js.map +1 -1
- package/dist/components/Badge/Badge.example.js.map +1 -1
- package/dist/components/Blog/BlogShowcase.js +36 -36
- package/dist/components/Blog/BlogShowcase.js.map +1 -1
- package/dist/components/Button/Button.example.js.map +1 -1
- package/dist/components/Card/Card.example.js.map +1 -1
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.example.js.map +1 -1
- package/dist/components/CodeHighlight/CodeHighlight.js.map +1 -1
- package/dist/components/ComponentShowcase/ComponentShowcase.js.map +1 -1
- package/dist/components/ComponentShowcase/componentDocs.js +21 -21
- package/dist/components/ComponentShowcase/componentDocs.js.map +1 -1
- package/dist/components/ComponentShowcase/showcaseRegistry.js.map +1 -1
- package/dist/components/DashboardGrid/DashboardGrid.example.js.map +1 -1
- package/dist/components/DashboardGrid/DashboardGrid.js.map +1 -1
- package/dist/components/DashboardHeader/DashboardHeader.example.js.map +1 -1
- package/dist/components/DashboardLayout/DashboardLayout.example.js.map +1 -1
- package/dist/components/DashboardLayout/DashboardLayout.js.map +1 -1
- package/dist/components/DataTable/DataTable.js +2 -2
- package/dist/components/DataTable/DataTable.js.map +1 -1
- package/dist/components/Image/Image.js.map +1 -1
- package/dist/components/Input/Input.example.js.map +1 -1
- package/dist/components/Marketplace/AllProductsView.js.map +1 -1
- package/dist/components/Marketplace/MarketplaceComponent.js.map +1 -1
- package/dist/components/Marketplace/MarketplaceSidebar.js.map +1 -1
- package/dist/components/Marketplace/components/MarketplaceControls.js.map +1 -1
- package/dist/components/Marketplace/components/MarketplaceHeader.js.map +1 -1
- package/dist/components/Marketplace/components/ProductCard.js.map +1 -1
- package/dist/components/Marketplace/hooks/useScrollToTop.js.map +1 -1
- package/dist/components/Marketplace/utils/sanitizeProduct.js.map +1 -1
- package/dist/components/Modal/Modal.example.js.map +1 -1
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Navbar/Navbar.example.js.map +1 -1
- package/dist/components/NightModeSwitch/NightModeSwitch.js.map +1 -1
- package/dist/components/ProfileManagement/EditModal.js.map +1 -1
- package/dist/components/ProfileManagement/ProfileCard.js.map +1 -1
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/Sidebar/LogoutButton.js.map +1 -1
- package/dist/components/Sidebar/ProfileButton.js.map +1 -1
- package/dist/components/Sidebar/Sidebar.example.js.map +1 -1
- package/dist/components/Sidebar/Sidebar.js.map +1 -1
- package/dist/components/Sidebar/SidebarHeader.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.example.js.map +1 -1
- package/dist/components/Spinner/Spinner.example.js.map +1 -1
- package/dist/components/StatsCard/StatsCard.example.js.map +1 -1
- package/dist/components/Switch/Switch.example.js.map +1 -1
- package/dist/components/Tabs/Tabs.example.js.map +1 -1
- package/dist/components/Textarea/Textarea.example.js.map +1 -1
- package/dist/components/Toast/Toast.example.js.map +1 -1
- package/dist/hooks/useIntersectionObserver.js.map +1 -1
- package/package.json +113 -113
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert.example.js","sources":["../../../src/components/Alert/Alert.example.tsx"],"sourcesContent":["import * as React from \"react\";\
|
|
1
|
+
{"version":3,"file":"Alert.example.js","sources":["../../../src/components/Alert/Alert.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Alert, AlertTitle, AlertDescription } from \"./Alert\";\n\nexport const AlertExample: React.FC = () => (\n <div className=\"space-y-4\">\n <Alert variant=\"info\">\n <AlertTitle>Information</AlertTitle>\n <AlertDescription>This is an informational alert message.</AlertDescription>\n </Alert>\n <Alert variant=\"success\">\n <AlertTitle>Success</AlertTitle>\n <AlertDescription>Operation completed successfully!</AlertDescription>\n </Alert>\n <Alert variant=\"warning\">\n <AlertTitle>Warning</AlertTitle>\n <AlertDescription>Please review your input before proceeding.</AlertDescription>\n </Alert>\n <Alert variant=\"danger\">\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>Something went wrong. Please try again.</AlertDescription>\n </Alert>\n </div>\n);"],"names":["_jsxs","_jsx"],"mappings":";;;AAGO,MAAM,YAAY,GAAa,OACpCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBA,IAAA,CAAC,KAAK,IAAC,OAAO,EAAC,MAAM,EAAA,QAAA,EAAA,CACnBC,IAAC,UAAU,EAAA,EAAA,QAAA,EAAA,aAAA,EAAA,CAAyB,EACpCA,GAAA,CAAC,gBAAgB,EAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,CAA2D,CAAA,EAAA,CACtE,EACRD,IAAA,CAAC,KAAK,EAAA,EAAC,OAAO,EAAC,SAAS,EAAA,QAAA,EAAA,CACtBC,IAAC,UAAU,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAqB,EAChCA,GAAA,CAAC,gBAAgB,EAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,CAAqD,CAAA,EAAA,CAChE,EACRD,IAAA,CAAC,KAAK,EAAA,EAAC,OAAO,EAAC,SAAS,aACtBC,GAAA,CAAC,UAAU,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAqB,EAChCA,IAAC,gBAAgB,EAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,CAA+D,CAAA,EAAA,CAC1E,EACRD,KAAC,KAAK,EAAA,EAAC,OAAO,EAAC,QAAQ,EAAA,QAAA,EAAA,CACrBC,GAAA,CAAC,UAAU,EAAA,EAAA,QAAA,EAAA,OAAA,EAAA,CAAmB,EAC9BA,GAAA,CAAC,gBAAgB,0DAA2D,CAAA,EAAA,CACtE,CAAA,EAAA,CACJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoginForm.example.js","sources":["../../../src/components/Auth/LoginForm.example.tsx"],"sourcesContent":["import * as React from \"react\";\
|
|
1
|
+
{"version":3,"file":"LoginForm.example.js","sources":["../../../src/components/Auth/LoginForm.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { LoginForm } from \"./LoginForm\";\nimport { Card, CardHeader, CardTitle, CardContent } from \"../Card\";\nimport { AuthProvider } from \"../../contexts/AuthContext\";\n\nexport const LoginFormExample: React.FC = () => (\n <AuthProvider>\n <div className=\"flex items-center justify-center min-h-[400px] bg-background\">\n <Card className=\"w-full max-w-md\">\n <CardHeader>\n <CardTitle>Login</CardTitle>\n </CardHeader>\n <CardContent>\n <LoginForm />\n </CardContent>\n </Card>\n </div>\n </AuthProvider>\n);"],"names":["_jsx","_jsxs"],"mappings":";;;;;AAKO,MAAM,gBAAgB,GAAa,OACxCA,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,OAAA,EAAA,CAAkB,GACjB,EACbA,GAAA,CAAC,WAAW,EAAA,EAAA,QAAA,EACVA,GAAA,CAAC,SAAS,EAAA,EAAA,CAAG,EAAA,CACD,IACT,EAAA,CACH,EAAA,CACO;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasswordResetForm.example.js","sources":["../../../src/components/Auth/PasswordResetForm.example.tsx"],"sourcesContent":["import * as React from \"react\";\
|
|
1
|
+
{"version":3,"file":"PasswordResetForm.example.js","sources":["../../../src/components/Auth/PasswordResetForm.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { PasswordResetForm } from \"./PasswordResetForm\";\nimport { Card, CardHeader, CardTitle, CardContent } from \"../Card\";\nimport { toast } from \"react-hot-toast\";\n\nexport const PasswordResetFormExample: React.FC = () => {\n const [loading, setLoading] = React.useState(false);\n\n // Simulate async reset logic\n const handleReset = async (email: string) => {\n setLoading(true);\n await new Promise((res) => setTimeout(res, 1300));\n setLoading(false);\n toast.success(`If an account exists for ${email}, a reset link was sent.`);\n };\n\n return (\n <div className=\"flex items-center justify-center min-h-[400px] bg-background\">\n <Card className=\"w-full max-w-md\">\n <CardHeader>\n <CardTitle>Password Reset</CardTitle>\n </CardHeader>\n <CardContent>\n <PasswordResetForm\n onReset={handleReset}\n isLoading={loading}\n />\n </CardContent>\n </Card>\n </div>\n );\n};"],"names":["_jsx","_jsxs"],"mappings":";;;;;;AAKO,MAAM,wBAAwB,GAAa,MAAK;AACrD,IAAA,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;;AAGnD,IAAA,MAAM,WAAW,GAAG,OAAO,KAAa,KAAI;QAC1C,UAAU,CAAC,IAAI,CAAC;AAChB,QAAA,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjD,UAAU,CAAC,KAAK,CAAC;AACjB,QAAA,KAAK,CAAC,OAAO,CAAC,4BAA4B,KAAK,CAAA,wBAAA,CAA0B,CAAC;AAC5E,IAAA,CAAC;AAED,IAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,8DAA8D,YAC3EC,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,iBAAiB,EAAA,QAAA,EAAA,CAC/BD,IAAC,UAAU,EAAA,EAAA,QAAA,EACTA,IAAC,SAAS,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAA2B,EAAA,CAC1B,EACbA,IAAC,WAAW,EAAA,EAAA,QAAA,EACVA,IAAC,iBAAiB,EAAA,EAChB,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,OAAO,EAAA,CAClB,GACU,CAAA,EAAA,CACT,EAAA,CACH;AAEV;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PasswordResetForm.js","sources":["../../../src/components/Auth/PasswordResetForm.tsx"],"sourcesContent":["import * as React from \"react\";\
|
|
1
|
+
{"version":3,"file":"PasswordResetForm.js","sources":["../../../src/components/Auth/PasswordResetForm.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { z } from \"zod\";\nimport { Input } from \"../Input\";\nimport { Button } from \"../Button\";\nimport { cn } from \"../../utils/cn\";\n\nconst schema = z.object({\n email: z.string().min(1, \"Email is required\").email(\"Enter a valid email\")\n});\n\ntype PasswordResetFormData = z.infer<typeof schema>;\n\nexport interface PasswordResetFormProps {\n onReset?: (email: string) => Promise<void> | void;\n className?: string;\n isLoading?: boolean;\n successMessage?: string;\n errorMessage?: string;\n}\n\nexport const PasswordResetForm: React.FC<PasswordResetFormProps> = ({\n onReset,\n className,\n isLoading,\n successMessage,\n errorMessage\n}) => {\n const {\n register,\n handleSubmit,\n formState: { errors, isSubmitting, isSubmitSuccessful }\n } = useForm<PasswordResetFormData>({ resolver: zodResolver(schema) });\n\n const [status, setStatus] = React.useState<\"idle\" | \"success\" | \"error\">(\"idle\");\n\n const onSubmit = async (data: PasswordResetFormData) => {\n setStatus(\"idle\");\n try {\n await onReset?.(data.email);\n setStatus(\"success\");\n } catch (e) {\n setStatus(\"error\");\n }\n };\n\n return (\n <form\n onSubmit={handleSubmit(onSubmit)}\n className={cn(\"space-y-6\", className)}\n autoComplete=\"off\"\n noValidate\n >\n <div>\n <label className=\"block text-sm font-medium mb-1\" htmlFor=\"reset-email\">\n Email Address\n </label>\n <Input\n id=\"reset-email\"\n type=\"email\"\n autoComplete=\"email\"\n placeholder=\"you@email.com\"\n {...register(\"email\")}\n disabled={isSubmitting || isLoading}\n variant={errors.email ? \"error\" : \"default\"}\n />\n {errors.email && (\n <div className=\"text-danger mt-1 text-xs\">{errors.email.message}</div>\n )}\n </div>\n <Button\n type=\"submit\"\n variant=\"primary\"\n disabled={isSubmitting || isLoading}\n className=\"w-full\"\n >\n Send Password Reset Link\n </Button>\n {status === \"success\" && (\n <div className=\"text-success-700 bg-success-50 border border-success-200 p-2 text-sm rounded text-center\">\n {successMessage || \"A password reset link was sent if the address exists in our system.\"}\n </div>\n )}\n {status === \"error\" && (\n <div className=\"text-danger-700 bg-danger-50 border border-danger-200 p-2 text-sm rounded text-center\">\n {errorMessage || \"There was an error submitting. Please try again.\"}\n </div>\n )}\n </form>\n );\n};"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;AAQA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;AACtB,IAAA,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,KAAK,CAAC,qBAAqB;AAC1E,CAAA,CAAC;AAYK,MAAM,iBAAiB,GAAqC,CAAC,EAClE,OAAO,EACP,SAAS,EACT,SAAS,EACT,cAAc,EACd,YAAY,EACb,KAAI;IACH,MAAM,EACJ,QAAQ,EACR,YAAY,EACZ,SAAS,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,EACxD,GAAG,OAAO,CAAwB,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;AAErE,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAA+B,MAAM,CAAC;AAEhF,IAAA,MAAM,QAAQ,GAAG,OAAO,IAA2B,KAAI;QACrD,SAAS,CAAC,MAAM,CAAC;AACjB,QAAA,IAAI;AACF,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;YAC3B,SAAS,CAAC,SAAS,CAAC;QACtB;QAAE,OAAO,CAAC,EAAE;YACV,SAAS,CAAC,OAAO,CAAC;QACpB;AACF,IAAA,CAAC;AAED,IAAA,QACEA,IAAA,CAAA,MAAA,EAAA,EACE,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,EAChC,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,EACrC,YAAY,EAAC,KAAK,EAClB,UAAU,EAAA,IAAA,EAAA,QAAA,EAAA,CAEVA,yBACEC,GAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,gCAAgC,EAAC,OAAO,EAAC,aAAa,EAAA,QAAA,EAAA,eAAA,EAAA,CAE/D,EACRA,GAAA,CAAC,KAAK,EAAA,EACJ,EAAE,EAAC,aAAa,EAChB,IAAI,EAAC,OAAO,EACZ,YAAY,EAAC,OAAO,EACpB,WAAW,EAAC,eAAe,EAAA,GACvB,QAAQ,CAAC,OAAO,CAAC,EACrB,QAAQ,EAAE,YAAY,IAAI,SAAS,EACnC,OAAO,EAAE,MAAM,CAAC,KAAK,GAAG,OAAO,GAAG,SAAS,EAAA,CAC3C,EACD,MAAM,CAAC,KAAK,KACXA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,0BAA0B,EAAA,QAAA,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAA,CAAO,CACvE,CAAA,EAAA,CACG,EACNA,GAAA,CAAC,MAAM,EAAA,EACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,QAAQ,EAAE,YAAY,IAAI,SAAS,EACnC,SAAS,EAAC,QAAQ,EAAA,QAAA,EAAA,0BAAA,EAAA,CAGX,EACR,MAAM,KAAK,SAAS,KACnBA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,0FAA0F,EAAA,QAAA,EACtG,cAAc,IAAI,qEAAqE,EAAA,CACpF,CACP,EACA,MAAM,KAAK,OAAO,KACjBA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uFAAuF,EAAA,QAAA,EACnG,YAAY,IAAI,kDAAkD,EAAA,CAC/D,CACP,CAAA,EAAA,CACI;AAEX;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProtectedRoute.example.js","sources":["../../../src/components/Auth/ProtectedRoute.example.tsx"],"sourcesContent":["import * as React from \"react\";\
|
|
1
|
+
{"version":3,"file":"ProtectedRoute.example.js","sources":["../../../src/components/Auth/ProtectedRoute.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Button } from \"../Button\";\n\n/**\n * Simple demo: toggling a boolean to represent authenticated/unauthenticated.\n * This does NOT call login/logout to avoid backend/service dependencies,\n * and simply shows protected content or a message.\n */\nexport const ProtectedRouteExample: React.FC = () => {\n const [authed, setAuthed] = React.useState(false);\n\n return (\n <div className=\"flex flex-col items-center gap-4 p-8 border rounded bg-background max-w-md mx-auto min-h-[200px]\">\n <div>\n <Button onClick={() => setAuthed((prev) => !prev)}>\n {authed ? \"Logout\" : \"Login (Preview)\"}\n </Button>\n </div>\n {authed ? (\n <div className=\"p-4 text-success-700 bg-success-50 border border-success-200 rounded\">\n This content is only visible if authenticated!\n </div>\n ) : (\n <div className=\"p-4 text-danger-700 bg-danger-50 border border-danger-200 rounded\">\n You must be logged in to view protected content.\n </div>\n )}\n </div>\n );\n};"],"names":["_jsxs","_jsx"],"mappings":";;;;AAGA;;;;AAIG;AACI,MAAM,qBAAqB,GAAa,MAAK;AAClD,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAEjD,IAAA,QACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kGAAkG,EAAA,QAAA,EAAA,CAC/GC,GAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EACEA,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,MAAM,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAA,QAAA,EAC9C,MAAM,GAAG,QAAQ,GAAG,iBAAiB,EAAA,CAC/B,EAAA,CACL,EACL,MAAM,IACLA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,sEAAsE,EAAA,QAAA,EAAA,gDAAA,EAAA,CAE/E,KAENA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mEAAmE,EAAA,QAAA,EAAA,kDAAA,EAAA,CAE5E,CACP,CAAA,EAAA,CACG;AAEV;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignupForm.example.js","sources":["../../../src/components/Auth/SignupForm.example.tsx"],"sourcesContent":["import * as React from \"react\";\
|
|
1
|
+
{"version":3,"file":"SignupForm.example.js","sources":["../../../src/components/Auth/SignupForm.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { SignupForm } from \"./SignupForm\";\nimport { Card, CardHeader, CardTitle, CardContent } from \"../Card\";\nimport { AuthProvider } from \"../../contexts/AuthContext\";\n\nexport const SignupFormExample: React.FC = () => (\n <AuthProvider>\n <div className=\"flex items-center justify-center min-h-[400px] bg-background\">\n <Card className=\"w-full max-w-md\">\n <CardHeader>\n <CardTitle>Sign Up</CardTitle>\n </CardHeader>\n <CardContent>\n <SignupForm />\n </CardContent>\n </Card>\n </div>\n </AuthProvider>\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;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.example.js","sources":["../../../src/components/Avatar/Avatar.example.tsx"],"sourcesContent":["import * as React from \"react\";\
|
|
1
|
+
{"version":3,"file":"Avatar.example.js","sources":["../../../src/components/Avatar/Avatar.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"./Avatar\";\n\nexport const AvatarExample: React.FC = () => (\n <div className=\"flex gap-4\">\n <Avatar>\n <AvatarImage src=\"https://randomuser.me/api/portraits/men/32.jpg\" />\n <AvatarFallback>AB</AvatarFallback>\n </Avatar>\n <Avatar>\n <AvatarImage src=\"\" />\n <AvatarFallback>CD</AvatarFallback>\n </Avatar>\n <Avatar>\n <AvatarImage src=\"https://randomuser.me/api/portraits/women/44.jpg\" />\n <AvatarFallback>EF</AvatarFallback>\n </Avatar>\n </div>\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;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Badge.example.js","sources":["../../../src/components/Badge/Badge.example.tsx"],"sourcesContent":["import * as React from \"react\";\
|
|
1
|
+
{"version":3,"file":"Badge.example.js","sources":["../../../src/components/Badge/Badge.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Badge } from \"./Badge\";\n\nexport const BadgeExample: React.FC = () => (\n <div className=\"flex flex-wrap gap-2\">\n <Badge>Default</Badge>\n <Badge variant=\"secondary\">Secondary</Badge>\n <Badge variant=\"success\">Success</Badge>\n <Badge variant=\"danger\">Danger</Badge>\n <Badge variant=\"warning\">Warning</Badge>\n <Badge variant=\"outline\">Outline</Badge>\n </div>\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;;;;"}
|
|
@@ -22,45 +22,45 @@ const BlogShowcase = () => {
|
|
|
22
22
|
setSelectedPost(null);
|
|
23
23
|
};
|
|
24
24
|
const codeExamples = {
|
|
25
|
-
singleBlog: `import { SingleBlogView } from '@/components/Blog';
|
|
26
|
-
|
|
27
|
-
function BlogPost({ postId }) {
|
|
28
|
-
return (
|
|
29
|
-
<SingleBlogView
|
|
30
|
-
postId={postId}
|
|
31
|
-
onBackClick={() => navigate('/blog')}
|
|
32
|
-
/>
|
|
33
|
-
);
|
|
25
|
+
singleBlog: `import { SingleBlogView } from '@/components/Blog';
|
|
26
|
+
|
|
27
|
+
function BlogPost({ postId }) {
|
|
28
|
+
return (
|
|
29
|
+
<SingleBlogView
|
|
30
|
+
postId={postId}
|
|
31
|
+
onBackClick={() => navigate('/blog')}
|
|
32
|
+
/>
|
|
33
|
+
);
|
|
34
34
|
}`,
|
|
35
|
-
allBlogs: `import { AllBlogsView } from '@/components/Blog';
|
|
36
|
-
|
|
37
|
-
function BlogIndex() {
|
|
38
|
-
return (
|
|
39
|
-
<AllBlogsView
|
|
40
|
-
onPostClick={(post) => navigate(\`/blog/\${post.slug}\`)}
|
|
41
|
-
/>
|
|
42
|
-
);
|
|
35
|
+
allBlogs: `import { AllBlogsView } from '@/components/Blog';
|
|
36
|
+
|
|
37
|
+
function BlogIndex() {
|
|
38
|
+
return (
|
|
39
|
+
<AllBlogsView
|
|
40
|
+
onPostClick={(post) => navigate(\`/blog/\${post.slug}\`)}
|
|
41
|
+
/>
|
|
42
|
+
);
|
|
43
43
|
}`,
|
|
44
|
-
layout: `import { BlogLayout } from '@/components/Blog';
|
|
45
|
-
|
|
46
|
-
function BlogApp() {
|
|
47
|
-
return (
|
|
48
|
-
<BlogLayout currentView="allBlogs">
|
|
49
|
-
<AllBlogsView />
|
|
50
|
-
</BlogLayout>
|
|
51
|
-
);
|
|
44
|
+
layout: `import { BlogLayout } from '@/components/Blog';
|
|
45
|
+
|
|
46
|
+
function BlogApp() {
|
|
47
|
+
return (
|
|
48
|
+
<BlogLayout currentView="allBlogs">
|
|
49
|
+
<AllBlogsView />
|
|
50
|
+
</BlogLayout>
|
|
51
|
+
);
|
|
52
52
|
}`,
|
|
53
|
-
hooks: `import { useBlog, useComments } from '@/components/Blog/hooks';
|
|
54
|
-
|
|
55
|
-
function BlogComponent() {
|
|
56
|
-
const { posts, loading, searchPosts } = useBlog();
|
|
57
|
-
const { comments, addComment } = useComments({ postId: '1' });
|
|
58
|
-
|
|
59
|
-
return (
|
|
60
|
-
<div>
|
|
61
|
-
{/* Use blog data and functionality */}
|
|
62
|
-
</div>
|
|
63
|
-
);
|
|
53
|
+
hooks: `import { useBlog, useComments } from '@/components/Blog/hooks';
|
|
54
|
+
|
|
55
|
+
function BlogComponent() {
|
|
56
|
+
const { posts, loading, searchPosts } = useBlog();
|
|
57
|
+
const { comments, addComment } = useComments({ postId: '1' });
|
|
58
|
+
|
|
59
|
+
return (
|
|
60
|
+
<div>
|
|
61
|
+
{/* Use blog data and functionality */}
|
|
62
|
+
</div>
|
|
63
|
+
);
|
|
64
64
|
}`,
|
|
65
65
|
};
|
|
66
66
|
return (jsxs("div", { className: "space-y-6", children: [jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { children: [jsx("h1", { className: "text-2xl font-bold text-gray-900", children: "Blog System" }), jsx("p", { className: "text-gray-600 mt-1", children: "Comprehensive blog components with markdown support, comments, and navigation" })] }), jsxs(Badge, { variant: "outline", className: "flex items-center", children: [jsx(PenTool, { className: "h-4 w-4 mr-1" }), "Blog System"] })] }), jsxs(Tabs, { value: "demo", onValueChange: () => { }, children: [jsxs(TabsList, { children: [jsxs(TabsTrigger, { value: "demo", children: [jsx(Eye, { className: "h-4 w-4 mr-2" }), "Live Demo"] }), jsxs(TabsTrigger, { value: "code", children: [jsx(Code, { className: "h-4 w-4 mr-2" }), "Code Examples"] }), jsxs(TabsTrigger, { value: "features", children: [jsx(LayoutGrid, { className: "h-4 w-4 mr-2" }), "Features"] })] }), jsx(TabsContent, { value: "demo", className: "mt-6", children: jsx(Card, { children: jsx(CardContent, { className: "p-0", children: jsx("div", { className: "h-[800px] overflow-auto border border-gray-200 rounded-lg", children: jsx(BlogLayout, { currentView: currentView, currentPost: selectedPost || undefined, onNavigate: (view, data) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlogShowcase.js","sources":["../../../src/components/Blog/BlogShowcase.tsx"],"sourcesContent":["import React, { useState } from 'react';\r\nimport { PenTool, LayoutGrid as Layout, Code, Eye } from 'lucide-react';\r\nimport { Card, CardHeader, CardTitle, CardContent } from '../Card';\r\nimport { Badge } from '../Badge';\r\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from '../Tabs';\r\nimport { BlogLayout } from './BlogLayout';\r\nimport { AllBlogsView } from './AllBlogsView';\r\nimport { SingleBlogView } from './SingleBlogView';\r\nimport { showToast } from '../Toast';\r\nimport type { BlogPost } from './types';\r\n\r\nexport const BlogShowcase: React.FC = () => {\r\n const [currentView, setCurrentView] = useState<'allBlogs' | 'singleBlog'>('allBlogs');\r\n const [selectedPost, setSelectedPost] = useState<BlogPost | null>(null);\r\n\r\n const handlePostClick = (post: BlogPost) => {\r\n setSelectedPost(post);\r\n setCurrentView('singleBlog');\r\n showToast.info(`Viewing: ${post.title}`);\r\n };\r\n\r\n const handleBackClick = () => {\r\n setCurrentView('allBlogs');\r\n setSelectedPost(null);\r\n };\r\n\r\n const codeExamples = {\r\n singleBlog: `import { SingleBlogView } from '@/components/Blog';\r\n\r\nfunction BlogPost({ postId }) {\r\n return (\r\n <SingleBlogView\r\n postId={postId}\r\n onBackClick={() => navigate('/blog')}\r\n />\r\n );\r\n}`,\r\n allBlogs: `import { AllBlogsView } from '@/components/Blog';\r\n\r\nfunction BlogIndex() {\r\n return (\r\n <AllBlogsView\r\n onPostClick={(post) => navigate(\\`/blog/\\${post.slug}\\`)}\r\n />\r\n );\r\n}`,\r\n layout: `import { BlogLayout } from '@/components/Blog';\r\n\r\nfunction BlogApp() {\r\n return (\r\n <BlogLayout currentView=\"allBlogs\">\r\n <AllBlogsView />\r\n </BlogLayout>\r\n );\r\n}`,\r\n hooks: `import { useBlog, useComments } from '@/components/Blog/hooks';\r\n\r\nfunction BlogComponent() {\r\n const { posts, loading, searchPosts } = useBlog();\r\n const { comments, addComment } = useComments({ postId: '1' });\r\n \r\n return (\r\n <div>\r\n {/* Use blog data and functionality */}\r\n </div>\r\n );\r\n}`,\r\n };\r\n\r\n return (\r\n <div className=\"space-y-6\">\r\n {/* Header */}\r\n <div className=\"flex items-center justify-between\">\r\n <div>\r\n <h1 className=\"text-2xl font-bold text-gray-900\">Blog System</h1>\r\n <p className=\"text-gray-600 mt-1\">\r\n Comprehensive blog components with markdown support, comments, and navigation\r\n </p>\r\n </div>\r\n <Badge variant=\"outline\" className=\"flex items-center\">\r\n <PenTool className=\"h-4 w-4 mr-1\" />\r\n Blog System\r\n </Badge>\r\n </div>\r\n\r\n {/* Tabs */}\r\n <Tabs value=\"demo\" onValueChange={() => {}}>\r\n <TabsList>\r\n <TabsTrigger value=\"demo\">\r\n <Eye className=\"h-4 w-4 mr-2\" />\r\n Live Demo\r\n </TabsTrigger>\r\n <TabsTrigger value=\"code\">\r\n <Code className=\"h-4 w-4 mr-2\" />\r\n Code Examples\r\n </TabsTrigger>\r\n <TabsTrigger value=\"features\">\r\n <Layout className=\"h-4 w-4 mr-2\" />\r\n Features\r\n </TabsTrigger>\r\n </TabsList>\r\n\r\n <TabsContent value=\"demo\" className=\"mt-6\">\r\n <Card>\r\n <CardContent className=\"p-0\">\r\n <div className=\"h-[800px] overflow-auto border border-gray-200 rounded-lg\">\r\n <BlogLayout\r\n currentView={currentView}\r\n currentPost={selectedPost || undefined}\r\n onNavigate={(view, data) => {\r\n if (view === 'search') {\r\n showToast.info(`Searching for: ${data.query}`);\r\n }\r\n }}\r\n >\r\n {currentView === 'allBlogs' ? (\r\n <AllBlogsView onPostClick={handlePostClick} />\r\n ) : (\r\n <SingleBlogView\r\n postId={selectedPost?.id}\r\n onBackClick={handleBackClick}\r\n />\r\n )}\r\n </BlogLayout>\r\n </div>\r\n </CardContent>\r\n </Card>\r\n </TabsContent>\r\n\r\n <TabsContent value=\"code\" className=\"mt-6\">\r\n <div className=\"space-y-6\">\r\n {Object.entries(codeExamples).map(([key, code]) => (\r\n <Card key={key}>\r\n <CardHeader>\r\n <CardTitle className=\"capitalize\">{key.replace(/([A-Z])/g, ' $1')} Example</CardTitle>\r\n </CardHeader>\r\n <CardContent>\r\n <pre className=\"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto text-sm\">\r\n <code>{code}</code>\r\n </pre>\r\n </CardContent>\r\n </Card>\r\n ))}\r\n </div>\r\n </TabsContent>\r\n\r\n <TabsContent value=\"features\" className=\"mt-6\">\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\r\n <Card>\r\n <CardHeader>\r\n <CardTitle>SingleBlogView Features</CardTitle>\r\n </CardHeader>\r\n <CardContent>\r\n <ul className=\"space-y-2 text-sm text-gray-600\">\r\n <li>• Markdown rendering with syntax highlighting</li>\r\n <li>• Social sharing buttons (Twitter, Facebook, LinkedIn)</li>\r\n <li>• Reading time estimation</li>\r\n <li>• SEO-friendly meta tags</li>\r\n <li>• Author bio and profile integration</li>\r\n <li>• Related posts recommendations</li>\r\n <li>• Article statistics and engagement metrics</li>\r\n </ul>\r\n </CardContent>\r\n </Card>\r\n\r\n <Card>\r\n <CardHeader>\r\n <CardTitle>AllBlogsView Features</CardTitle>\r\n </CardHeader>\r\n <CardContent>\r\n <ul className=\"space-y-2 text-sm text-gray-600\">\r\n <li>• Responsive grid and list view modes</li>\r\n <li>• Advanced search and filtering</li>\r\n <li>• Category and tag-based filtering</li>\r\n <li>• Multiple sorting options</li>\r\n <li>• Infinite scroll pagination</li>\r\n <li>• Loading states and error handling</li>\r\n <li>• Mobile-responsive design</li>\r\n </ul>\r\n </CardContent>\r\n </Card>\r\n\r\n <Card>\r\n <CardHeader>\r\n <CardTitle>BlogSidebar Features</CardTitle>\r\n </CardHeader>\r\n <CardContent>\r\n <ul className=\"space-y-2 text-sm text-gray-600\">\r\n <li>• Table of contents with smooth scrolling</li>\r\n <li>• Active section highlighting</li>\r\n <li>• Recent and popular posts</li>\r\n <li>• Category navigation</li>\r\n <li>• Newsletter signup integration</li>\r\n <li>• Responsive sidebar behavior</li>\r\n <li>• Sticky positioning for better UX</li>\r\n </ul>\r\n </CardContent>\r\n </Card>\r\n\r\n <Card>\r\n <CardHeader>\r\n <CardTitle>Comment System Features</CardTitle>\r\n </CardHeader>\r\n <CardContent>\r\n <ul className=\"space-y-2 text-sm text-gray-600\">\r\n <li>• Nested comment replies support</li>\r\n <li>• Like/dislike functionality</li>\r\n <li>• Comment moderation and reporting</li>\r\n <li>• Real-time comment validation</li>\r\n <li>• User authentication integration</li>\r\n <li>• Responsive comment threading</li>\r\n <li>• Comment statistics and engagement</li>\r\n </ul>\r\n </CardContent>\r\n </Card>\r\n\r\n <Card>\r\n <CardHeader>\r\n <CardTitle>Custom Hooks</CardTitle>\r\n </CardHeader>\r\n <CardContent>\r\n <ul className=\"space-y-2 text-sm text-gray-600\">\r\n <li>• <strong>useBlog:</strong> Blog data management and filtering</li>\r\n <li>• <strong>useComments:</strong> Comment CRUD operations</li>\r\n <li>• <strong>useBlogNavigation:</strong> Table of contents and scrolling</li>\r\n <li>• Debounced search functionality</li>\r\n <li>• Pagination and infinite scroll support</li>\r\n <li>• Error handling and loading states</li>\r\n <li>• TypeScript support throughout</li>\r\n </ul>\r\n </CardContent>\r\n </Card>\r\n\r\n <Card>\r\n <CardHeader>\r\n <CardTitle>Technical Features</CardTitle>\r\n </CardHeader>\r\n <CardContent>\r\n <ul className=\"space-y-2 text-sm text-gray-600\">\r\n <li>• React 18+ with modern hooks patterns</li>\r\n <li>• Complete TypeScript support</li>\r\n <li>• Markdown rendering with react-markdown</li>\r\n <li>• Syntax highlighting for code blocks</li>\r\n <li>• SEO optimization with meta tags</li>\r\n <li>• Responsive design with mobile-first approach</li>\r\n <li>• Accessibility features (ARIA labels, keyboard nav)</li>\r\n </ul>\r\n </CardContent>\r\n </Card>\r\n </div>\r\n </TabsContent>\r\n </Tabs>\r\n </div>\r\n );\r\n};"],"names":["_jsxs","_jsx","Layout"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BlogShowcase.js","sources":["../../../src/components/Blog/BlogShowcase.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { PenTool, LayoutGrid as Layout, Code, Eye } from 'lucide-react';\nimport { Card, CardHeader, CardTitle, CardContent } from '../Card';\nimport { Badge } from '../Badge';\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from '../Tabs';\nimport { BlogLayout } from './BlogLayout';\nimport { AllBlogsView } from './AllBlogsView';\nimport { SingleBlogView } from './SingleBlogView';\nimport { showToast } from '../Toast';\nimport type { BlogPost } from './types';\n\nexport const BlogShowcase: React.FC = () => {\n const [currentView, setCurrentView] = useState<'allBlogs' | 'singleBlog'>('allBlogs');\n const [selectedPost, setSelectedPost] = useState<BlogPost | null>(null);\n\n const handlePostClick = (post: BlogPost) => {\n setSelectedPost(post);\n setCurrentView('singleBlog');\n showToast.info(`Viewing: ${post.title}`);\n };\n\n const handleBackClick = () => {\n setCurrentView('allBlogs');\n setSelectedPost(null);\n };\n\n const codeExamples = {\n singleBlog: `import { SingleBlogView } from '@/components/Blog';\n\nfunction BlogPost({ postId }) {\n return (\n <SingleBlogView\n postId={postId}\n onBackClick={() => navigate('/blog')}\n />\n );\n}`,\n allBlogs: `import { AllBlogsView } from '@/components/Blog';\n\nfunction BlogIndex() {\n return (\n <AllBlogsView\n onPostClick={(post) => navigate(\\`/blog/\\${post.slug}\\`)}\n />\n );\n}`,\n layout: `import { BlogLayout } from '@/components/Blog';\n\nfunction BlogApp() {\n return (\n <BlogLayout currentView=\"allBlogs\">\n <AllBlogsView />\n </BlogLayout>\n );\n}`,\n hooks: `import { useBlog, useComments } from '@/components/Blog/hooks';\n\nfunction BlogComponent() {\n const { posts, loading, searchPosts } = useBlog();\n const { comments, addComment } = useComments({ postId: '1' });\n \n return (\n <div>\n {/* Use blog data and functionality */}\n </div>\n );\n}`,\n };\n\n return (\n <div className=\"space-y-6\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-bold text-gray-900\">Blog System</h1>\n <p className=\"text-gray-600 mt-1\">\n Comprehensive blog components with markdown support, comments, and navigation\n </p>\n </div>\n <Badge variant=\"outline\" className=\"flex items-center\">\n <PenTool className=\"h-4 w-4 mr-1\" />\n Blog System\n </Badge>\n </div>\n\n {/* Tabs */}\n <Tabs value=\"demo\" onValueChange={() => {}}>\n <TabsList>\n <TabsTrigger value=\"demo\">\n <Eye className=\"h-4 w-4 mr-2\" />\n Live Demo\n </TabsTrigger>\n <TabsTrigger value=\"code\">\n <Code className=\"h-4 w-4 mr-2\" />\n Code Examples\n </TabsTrigger>\n <TabsTrigger value=\"features\">\n <Layout className=\"h-4 w-4 mr-2\" />\n Features\n </TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"demo\" className=\"mt-6\">\n <Card>\n <CardContent className=\"p-0\">\n <div className=\"h-[800px] overflow-auto border border-gray-200 rounded-lg\">\n <BlogLayout\n currentView={currentView}\n currentPost={selectedPost || undefined}\n onNavigate={(view, data) => {\n if (view === 'search') {\n showToast.info(`Searching for: ${data.query}`);\n }\n }}\n >\n {currentView === 'allBlogs' ? (\n <AllBlogsView onPostClick={handlePostClick} />\n ) : (\n <SingleBlogView\n postId={selectedPost?.id}\n onBackClick={handleBackClick}\n />\n )}\n </BlogLayout>\n </div>\n </CardContent>\n </Card>\n </TabsContent>\n\n <TabsContent value=\"code\" className=\"mt-6\">\n <div className=\"space-y-6\">\n {Object.entries(codeExamples).map(([key, code]) => (\n <Card key={key}>\n <CardHeader>\n <CardTitle className=\"capitalize\">{key.replace(/([A-Z])/g, ' $1')} Example</CardTitle>\n </CardHeader>\n <CardContent>\n <pre className=\"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto text-sm\">\n <code>{code}</code>\n </pre>\n </CardContent>\n </Card>\n ))}\n </div>\n </TabsContent>\n\n <TabsContent value=\"features\" className=\"mt-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n <Card>\n <CardHeader>\n <CardTitle>SingleBlogView Features</CardTitle>\n </CardHeader>\n <CardContent>\n <ul className=\"space-y-2 text-sm text-gray-600\">\n <li>• Markdown rendering with syntax highlighting</li>\n <li>• Social sharing buttons (Twitter, Facebook, LinkedIn)</li>\n <li>• Reading time estimation</li>\n <li>• SEO-friendly meta tags</li>\n <li>• Author bio and profile integration</li>\n <li>• Related posts recommendations</li>\n <li>• Article statistics and engagement metrics</li>\n </ul>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>AllBlogsView Features</CardTitle>\n </CardHeader>\n <CardContent>\n <ul className=\"space-y-2 text-sm text-gray-600\">\n <li>• Responsive grid and list view modes</li>\n <li>• Advanced search and filtering</li>\n <li>• Category and tag-based filtering</li>\n <li>• Multiple sorting options</li>\n <li>• Infinite scroll pagination</li>\n <li>• Loading states and error handling</li>\n <li>• Mobile-responsive design</li>\n </ul>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>BlogSidebar Features</CardTitle>\n </CardHeader>\n <CardContent>\n <ul className=\"space-y-2 text-sm text-gray-600\">\n <li>• Table of contents with smooth scrolling</li>\n <li>• Active section highlighting</li>\n <li>• Recent and popular posts</li>\n <li>• Category navigation</li>\n <li>• Newsletter signup integration</li>\n <li>• Responsive sidebar behavior</li>\n <li>• Sticky positioning for better UX</li>\n </ul>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Comment System Features</CardTitle>\n </CardHeader>\n <CardContent>\n <ul className=\"space-y-2 text-sm text-gray-600\">\n <li>• Nested comment replies support</li>\n <li>• Like/dislike functionality</li>\n <li>• Comment moderation and reporting</li>\n <li>• Real-time comment validation</li>\n <li>• User authentication integration</li>\n <li>• Responsive comment threading</li>\n <li>• Comment statistics and engagement</li>\n </ul>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Custom Hooks</CardTitle>\n </CardHeader>\n <CardContent>\n <ul className=\"space-y-2 text-sm text-gray-600\">\n <li>• <strong>useBlog:</strong> Blog data management and filtering</li>\n <li>• <strong>useComments:</strong> Comment CRUD operations</li>\n <li>• <strong>useBlogNavigation:</strong> Table of contents and scrolling</li>\n <li>• Debounced search functionality</li>\n <li>• Pagination and infinite scroll support</li>\n <li>• Error handling and loading states</li>\n <li>• TypeScript support throughout</li>\n </ul>\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader>\n <CardTitle>Technical Features</CardTitle>\n </CardHeader>\n <CardContent>\n <ul className=\"space-y-2 text-sm text-gray-600\">\n <li>• React 18+ with modern hooks patterns</li>\n <li>• Complete TypeScript support</li>\n <li>• Markdown rendering with react-markdown</li>\n <li>• Syntax highlighting for code blocks</li>\n <li>• SEO optimization with meta tags</li>\n <li>• Responsive design with mobile-first approach</li>\n <li>• Accessibility features (ARIA labels, keyboard nav)</li>\n </ul>\n </CardContent>\n </Card>\n </div>\n </TabsContent>\n </Tabs>\n </div>\n );\n};"],"names":["_jsxs","_jsx","Layout"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.example.js","sources":["../../../src/components/Button/Button.example.tsx"],"sourcesContent":["import * as React from \"react\";\
|
|
1
|
+
{"version":3,"file":"Button.example.js","sources":["../../../src/components/Button/Button.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Button } from \"./Button\";\n\nexport const ButtonExample: React.FC = () => (\n <div className=\"space-y-4\">\n <div className=\"flex flex-wrap gap-2\">\n <Button variant=\"primary\">Primary</Button>\n <Button variant=\"secondary\">Secondary</Button>\n <Button variant=\"danger\">Danger</Button>\n <Button variant=\"success\">Success</Button>\n <Button variant=\"outline\">Outline</Button>\n <Button variant=\"ghost\">Ghost</Button>\n </div>\n <div className=\"flex flex-wrap gap-2 items-center\">\n <Button size=\"sm\">Small</Button>\n <Button size=\"md\">Medium</Button>\n <Button size=\"lg\">Large</Button>\n <Button size=\"xl\">Extra Large</Button>\n </div>\n </div>\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;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.example.js","sources":["../../../src/components/Card/Card.example.tsx"],"sourcesContent":["import * as React from \"react\";\
|
|
1
|
+
{"version":3,"file":"Card.example.js","sources":["../../../src/components/Card/Card.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Card, CardHeader, CardTitle, CardContent } from \"./Card\";\n\nexport const CardExample: React.FC = () => (\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <Card>\n <CardHeader>\n <CardTitle>Default Card</CardTitle>\n </CardHeader>\n <CardContent>\n <p className=\"text-gray-600\">This is a default card with standard styling.</p>\n </CardContent>\n </Card>\n <Card variant=\"elevated\">\n <CardHeader>\n <CardTitle>Elevated Card</CardTitle>\n </CardHeader>\n <CardContent>\n <p className=\"text-gray-600\">This card has elevated shadow styling.</p>\n </CardContent>\n </Card>\n </div>\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;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.js","sources":["../../../src/components/Card/Card.tsx"],"sourcesContent":["import * as React from \"react\";\
|
|
1
|
+
{"version":3,"file":"Card.js","sources":["../../../src/components/Card/Card.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst cardVariants = cva(\n // Mobile-first responsive, content-fitting, vertical stacking\n \"w-full max-w-full flex flex-col rounded-lg border bg-white text-gray-950 shadow-sm\",\n {\n variants: {\n variant: {\n default: \"border-gray-200\",\n elevated: \"border-gray-200 shadow-md\",\n outlined: \"border-2 border-primary-200\",\n },\n padding: {\n none: \"p-0\",\n sm: \"p-2 sm:p-4\",\n md: \"p-3 sm:p-6\",\n lg: \"p-4 sm:p-8\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n padding: \"md\",\n },\n }\n);\n\nexport interface CardProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, padding, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardVariants({ variant, padding, className }))}\n {...props}\n />\n )\n);\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-2 sm:p-4 md:p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-gray-500\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-2 sm:p-4 md:p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-2 sm:p-4 md:p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n cardVariants,\n};"],"names":["_jsx"],"mappings":";;;;;AAIA,MAAM,YAAY,GAAG,GAAG;AACtB;AACA,oFAAoF,EACpF;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,QAAQ,EAAE,2BAA2B;AACrC,YAAA,QAAQ,EAAE,6BAA6B;AACxC,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,EAAE,EAAE,YAAY;AAChB,YAAA,EAAE,EAAE,YAAY;AAChB,YAAA,EAAE,EAAE,YAAY;AACjB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,OAAO,EAAE,IAAI;AACd,KAAA;AACF,CAAA;AAOH,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAC3B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,MAC7CA,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,KACxD,KAAK,EAAA,CACT,CACH;AAEH,IAAI,CAAC,WAAW,GAAG,MAAM;AAEzB,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAGjC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,MAC7BA,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,6CAA6C,EAAE,SAAS,CAAC,EAAA,GACnE,KAAK,EAAA,CACT,CACH;AACD,UAAU,CAAC,WAAW,GAAG,YAAY;AAErC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAGhC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,MAC7BA,GAAA,CAAA,IAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT,CACH;AACD,SAAS,CAAC,WAAW,GAAG,WAAW;AAEnC,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAGtC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,MAC7BA,GAAA,CAAA,GAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC,EAAA,GAC7C,KAAK,EAAA,CACT,CACH;AACD,eAAe,CAAC,WAAW,GAAG,iBAAiB;AAE/C,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAGlC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,MAC7BA,GAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,wBAAwB,EAAE,SAAS,CAAC,EAAA,GAAM,KAAK,EAAA,CAAI,CACjF;AACD,WAAW,CAAC,WAAW,GAAG,aAAa;AAEvC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAGjC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,MAC7BA,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,0CAA0C,EAAE,SAAS,CAAC,EAAA,GAChE,KAAK,EAAA,CACT,CACH;AACD,UAAU,CAAC,WAAW,GAAG,YAAY;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.example.js","sources":["../../../src/components/Checkbox/Checkbox.example.tsx"],"sourcesContent":["import * as React from \"react\";\
|
|
1
|
+
{"version":3,"file":"Checkbox.example.js","sources":["../../../src/components/Checkbox/Checkbox.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Checkbox } from \"./Checkbox\";\n\nexport const CheckboxExample: React.FC = () => (\n <div className=\"space-y-2\">\n <label className=\"flex items-center gap-2\">\n <Checkbox /> <span>Default</span>\n </label>\n <label className=\"flex items-center gap-2\">\n <Checkbox checked /> <span>Checked</span>\n </label>\n <label className=\"flex items-center gap-2\">\n <Checkbox disabled /> <span>Disabled</span>\n </label>\n <label className=\"flex items-center gap-2\">\n <Checkbox size=\"sm\" /> <span>Small</span>\n </label>\n <label className=\"flex items-center gap-2\">\n <Checkbox size=\"lg\" /> <span>Large</span>\n </label>\n </div>\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;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeHighlight.js","sources":["../../../src/components/CodeHighlight/CodeHighlight.tsx"],"sourcesContent":["import React from \"react\";\
|
|
1
|
+
{"version":3,"file":"CodeHighlight.js","sources":["../../../src/components/CodeHighlight/CodeHighlight.tsx"],"sourcesContent":["import React from \"react\";\nimport { Prism as SyntaxHighlighter } from \"react-syntax-highlighter\";\nimport { vscDarkPlus } from \"react-syntax-highlighter/dist/esm/styles/prism\";\n\nexport interface CodeHighlightProps {\n code: string;\n language?: string;\n className?: string;\n}\n\nexport const CodeHighlight: React.FC<CodeHighlightProps> = ({\n code,\n language = \"javascript\",\n className = \"\",\n}) => {\n return (\n <SyntaxHighlighter\n language={language}\n style={vscDarkPlus}\n customStyle={{\n borderRadius: \"0.5rem\",\n padding: \"1rem\",\n fontFamily: \"monospace\",\n background: \"var(--color-primary-50, #2d2d2d)\",\n color: \"var(--color-primary-700, #f8f8f2)\",\n overflowX: \"auto\",\n }}\n className={className}\n showLineNumbers={false}\n wrapLongLines={true}\n >\n {code}\n </SyntaxHighlighter>\n );\n};\n\nCodeHighlight.displayName = \"CodeHighlight\";"],"names":["_jsx","SyntaxHighlighter"],"mappings":";;;;AAUO,MAAM,aAAa,GAAiC,CAAC,EAC1D,IAAI,EACJ,QAAQ,GAAG,YAAY,EACvB,SAAS,GAAG,EAAE,GACf,KAAI;AACH,IAAA,QACEA,GAAA,CAACC,KAAiB,EAAA,EAChB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE;AACX,YAAA,YAAY,EAAE,QAAQ;AACtB,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,UAAU,EAAE,WAAW;AACvB,YAAA,UAAU,EAAE,kCAAkC;AAC9C,YAAA,KAAK,EAAE,mCAAmC;AAC1C,YAAA,SAAS,EAAE,MAAM;AAClB,SAAA,EACD,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,KAAK,EACtB,aAAa,EAAE,IAAI,EAAA,QAAA,EAElB,IAAI,EAAA,CACa;AAExB;AAEA,aAAa,CAAC,WAAW,GAAG,eAAe;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentShowcase.js","sources":["../../../src/components/ComponentShowcase/ComponentShowcase.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { useState, useMemo, useRef, useEffect } from \"react\";\r\nimport {\r\n Search,\r\n Copy,\r\n Check,\r\n Monitor,\r\n Tablet,\r\n Smartphone,\r\n Sun,\r\n Moon,\r\n ChevronRight,\r\n ChevronDown,\r\n Code,\r\n Eye,\r\n Book,\r\n Palette,\r\n Layout,\r\n MousePointer,\r\n AlertCircle,\r\n BarChart3,\r\n Settings,\r\n Shield\r\n} from \"lucide-react\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { Button } from \"../Button\";\r\nimport { Input } from \"../Input\";\r\nimport { Badge } from \"../Badge\";\r\nimport { Toast, showToast } from \"../Toast\";\r\n\r\nimport { showcaseRegistry } from \"./showcaseRegistry\";\r\nimport { componentDocs } from \"./componentDocs\";\r\n\r\n// Component categories and their items\r\nconst componentCategories = {\r\n Forms: {\r\n icon: <MousePointer className=\"h-4 w-4\" />,\r\n components: [\r\n { name: \"Button\", id: \"button\" },\r\n { name: \"Input\", id: \"input\" },\r\n { name: \"Textarea\", id: \"textarea\" },\r\n { name: \"Checkbox\", id: \"checkbox\" },\r\n { name: \"Switch\", id: \"switch\" }\r\n ]\r\n },\r\n \"Data Display\": {\r\n icon: <BarChart3 className=\"h-4 w-4\" />,\r\n components: [\r\n { name: \"Card\", id: \"card\" },\r\n { name: \"Badge\", id: \"badge\" },\r\n { name: \"Avatar\", id: \"avatar\" },\r\n { name: \"StatsCard\", id: \"statscard\" },\r\n { name: \"Tabs\", id: \"tabs\" },\r\n { name: \"DataTable\", id: \"datatable\" }\r\n ]\r\n },\r\n Feedback: {\r\n icon: <AlertCircle className=\"h-4 w-4\" />,\r\n components: [\r\n { name: \"Alert\", id: \"alert\" },\r\n { name: \"Toast\", id: \"toast\" },\r\n { name: \"Modal\", id: \"modal\" },\r\n { name: \"Spinner\", id: \"spinner\" },\r\n { name: \"Skeleton\", id: \"skeleton\" }\r\n ]\r\n },\r\n Authentication: {\r\n icon: <Shield className=\"h-4 w-4\" />,\r\n components: [\r\n { name: \"Auth System\", id: \"auth\" },\r\n { name: \"Login Page\", id: \"login\" },\r\n { name: \"Signup Page\", id: \"signup\" },\r\n { name: \"Password Reset\", id: \"password-reset\" },\r\n { name: \"!isAuthenticated Shield\", id: \"shield\" },\r\n ]\r\n },\r\n Layout: {\r\n icon: <Layout className=\"h-4 w-4\" />,\r\n components: [\r\n { name: \"DashboardLayout\", id: \"dashboard-layout\" },\r\n { name: \"Page Layout\", id: \"page-layout\" },\r\n { name: \"DashboardGrid\", id: \"dashboard-grid\" },\r\n { name: \"Sidebar\", id: \"sidebar\" },\r\n { name: \"Navbar\", id: \"navbar\" }\r\n ]\r\n }\r\n};\r\n\r\n// Prop documentation interface\r\ninterface PropDoc {\r\n name: string;\r\n type: string;\r\n default?: string;\r\n description?: string;\r\n required?: boolean;\r\n}\r\n\r\n// Props\r\ninterface ComponentShowcaseProps {\r\n className?: string;\r\n}\r\n\r\nexport const ComponentShowcase: React.FC<ComponentShowcaseProps> = ({ className }) => {\r\n const [selectedComponent, setSelectedComponent] = useState(\"button\");\r\n const [activeTab, setActiveTab] = useState<\"preview\" | \"code\" | \"props\">(\"preview\");\r\n const [searchQuery, setSearchQuery] = useState(\"\");\r\n const [sidebarCollapsed, setSidebarCollapsed] = useState(false);\r\n const [expandedCategories, setExpandedCategories] = useState<string[]>([\"Forms\"]);\r\n const [viewMode, setViewMode] = useState<\"desktop\" | \"tablet\" | \"mobile\">(\"desktop\");\r\n const [darkMode, setDarkMode] = useState(false);\r\n const [copiedCode, setCopiedCode] = useState<string | null>(null);\r\n const sidebarRef = useRef<HTMLDivElement | null>(null);\r\n const [focusedIndex, setFocusedIndex] = useState<number>(-1);\r\n\r\n const toggleCategory = (category: string) => {\r\n setExpandedCategories((prev) =>\r\n prev.includes(category)\r\n ? prev.filter((c) => c !== category)\r\n : [...prev, category]\r\n );\r\n };\r\n\r\n const flatComponents = useMemo(() => {\r\n return Object.values(componentCategories).flatMap((category) =>\r\n category.components.map((component) => component.id)\r\n );\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (focusedIndex >= 0 && sidebarRef.current && !sidebarCollapsed) {\r\n const buttons = sidebarRef.current.querySelectorAll<HTMLButtonElement>(\r\n '[data-component-id]'\r\n );\r\n const target = buttons[focusedIndex];\r\n if (target) {\r\n target.focus();\r\n }\r\n }\r\n }, [focusedIndex, sidebarCollapsed]);\r\n\r\n const handleKeyNavigation = (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (sidebarCollapsed) return;\r\n\r\n const currentIndex = flatComponents.indexOf(selectedComponent);\r\n\r\n if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {\r\n event.preventDefault();\r\n const nextIndex = currentIndex === flatComponents.length - 1 ? 0 : currentIndex + 1;\r\n setFocusedIndex(nextIndex);\r\n setSelectedComponent(flatComponents[nextIndex]);\r\n } else if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\r\n event.preventDefault();\r\n const prevIndex = currentIndex <= 0 ? flatComponents.length - 1 : currentIndex - 1;\r\n setFocusedIndex(prevIndex);\r\n setSelectedComponent(flatComponents[prevIndex]);\r\n }\r\n };\r\n\r\n const copyToClipboard = async (code: string) => {\r\n try {\r\n if (navigator?.clipboard?.writeText) {\r\n await navigator.clipboard.writeText(code);\r\n setCopiedCode(code);\r\n showToast.success(\"Code copied to clipboard!\");\r\n setTimeout(() => setCopiedCode(null), 2000);\r\n } else {\r\n throw new Error(\"Clipboard API unavailable\");\r\n }\r\n } catch (err) {\r\n showToast.error(\"Failed to copy code\");\r\n }\r\n };\r\n\r\n const filteredCategories = Object.entries(componentCategories).reduce(\r\n (acc, [categoryName, categoryData]) => {\r\n const filteredComponents = categoryData.components.filter((component) =>\r\n component.name.toLowerCase().includes(searchQuery.toLowerCase())\r\n );\r\n\r\n if (filteredComponents.length > 0) {\r\n (acc as any)[categoryName] = {\r\n ...categoryData,\r\n components: filteredComponents\r\n };\r\n }\r\n\r\n return acc;\r\n },\r\n {} as Partial<typeof componentCategories>\r\n );\r\n\r\n const currentDoc = componentDocs[selectedComponent as keyof typeof componentDocs];\r\n const currentExample = currentDoc?.example ?? '';\r\n const currentProps = (currentDoc?.props ?? []) as PropDoc[];\r\n\r\n const getViewportClass = () => {\r\n switch (viewMode) {\r\n case \"tablet\":\r\n return \"max-w-2xl\";\r\n case \"mobile\":\r\n return \"max-w-sm\";\r\n default:\r\n return \"w-full\";\r\n }\r\n };\r\n\r\n return (\r\n <div className={cn(\"flex h-screen bg-gray-50\", className)}>\r\n <Toast />\r\n\r\n {/* Sidebar */}\r\n <div\r\n ref={sidebarRef}\r\n className={cn(\r\n \"bg-white border-r border-gray-200 transition-all duration-300 flex flex-col\",\r\n sidebarCollapsed ? \"w-16\" : \"w-80\"\r\n )}\r\n tabIndex={sidebarCollapsed ? -1 : 0}\r\n onKeyDown={handleKeyNavigation}\r\n aria-label=\"Component navigation\"\r\n >\r\n {/* Sidebar Header */}\r\n <div className=\"p-4 border-b border-gray-200\">\r\n {!sidebarCollapsed && (\r\n <div className=\"flex items-center justify-between mb-4\">\r\n <div className=\"flex items-center space-x-2\">\r\n <div className=\"w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center\">\r\n <Palette className=\"h-4 w-4 text-white\" />\r\n </div>\r\n <span className=\"font-bold text-lg text-gray-900\">Beyond UI</span>\r\n </div>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={() => setSidebarCollapsed(true)}\r\n >\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n )}\r\n\r\n {sidebarCollapsed && (\r\n <div className=\"flex justify-center\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={() => setSidebarCollapsed(false)}\r\n >\r\n <Palette className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n )}\r\n\r\n {!sidebarCollapsed && (\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-gray-400\" />\r\n <Input\r\n placeholder=\"Search components...\"\r\n value={searchQuery}\r\n onChange={(e) => setSearchQuery(e.target.value)}\r\n className=\"pl-10\"\r\n />\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Navigation */}\r\n <nav className=\"flex-1 p-4 overflow-y-auto\">\r\n {Object.entries(filteredCategories).map(([categoryName, categoryData]) => (\r\n <div key={categoryName} className=\"mb-4\">\r\n <button\r\n onClick={() => !sidebarCollapsed && toggleCategory(categoryName)}\r\n className={cn(\r\n \"flex items-center w-full p-2 text-sm font-medium rounded-lg transition-colors\",\r\n \"hover:bg-gray-100 text-gray-700\",\r\n sidebarCollapsed ? \"justify-center\" : \"justify-between\"\r\n )}\r\n >\r\n <div className=\"flex items-center space-x-2\">\r\n {categoryData.icon}\r\n {!sidebarCollapsed && <span>{categoryName}</span>}\r\n </div>\r\n {!sidebarCollapsed && (\r\n <ChevronDown\r\n className={cn(\r\n \"h-4 w-4 transition-transform\",\r\n expandedCategories.includes(categoryName) && \"rotate-180\"\r\n )}\r\n />\r\n )}\r\n </button>\r\n\r\n {!sidebarCollapsed && expandedCategories.includes(categoryName) && (\r\n <div className=\"mt-2 ml-6 space-y-1\">\r\n {categoryData.components.map((component) => {\r\n const isActive = selectedComponent === component.id;\r\n return (\r\n <button\r\n key={component.id}\r\n data-component-id={component.id}\r\n onClick={() => {\r\n setSelectedComponent(component.id);\r\n setFocusedIndex(flatComponents.indexOf(component.id));\r\n }}\r\n className={cn(\r\n \"flex items-center w-full p-2 text-sm rounded-lg transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500\",\r\n isActive\r\n ? \"bg-primary-50 text-primary-700 border-r-2 border-primary-600\"\r\n : \"text-gray-600 hover:bg-gray-50 hover:text-gray-900\"\r\n )}\r\n aria-current={isActive ? \"page\" : undefined}\r\n >\r\n {component.name}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n )}\r\n </div>\r\n ))}\r\n </nav>\r\n </div>\r\n\r\n {/* Main Content */}\r\n <div className=\"flex-1 flex flex-col overflow-hidden\">\r\n {/* Header */}\r\n <header className=\"bg-white border-b border-gray-200 p-4\">\r\n <div className=\"flex items-center justify-between\">\r\n <div className=\"flex items-center space-x-4\">\r\n <h1 className=\"text-2xl font-bold text-gray-900\">\r\n {currentDoc?.name || \"Component Showcase\"}\r\n </h1>\r\n {currentDoc && <Badge variant=\"outline\">{currentDoc.name}</Badge>}\r\n </div>\r\n\r\n <div className=\"flex items-center space-x-2\">\r\n {/* Viewport Controls */}\r\n <div className=\"flex items-center bg-gray-100 rounded-lg p-1\">\r\n <Button\r\n variant={viewMode === \"desktop\" ? \"primary\" : \"ghost\"}\r\n size=\"sm\"\r\n onClick={() => setViewMode(\"desktop\")}\r\n >\r\n <Monitor className=\"h-4 w-4\" />\r\n </Button>\r\n <Button\r\n variant={viewMode === \"tablet\" ? \"primary\" : \"ghost\"}\r\n size=\"sm\"\r\n onClick={() => setViewMode(\"tablet\")}\r\n >\r\n <Tablet className=\"h-4 w-4\" />\r\n </Button>\r\n <Button\r\n variant={viewMode === \"mobile\" ? \"primary\" : \"ghost\"}\r\n size=\"sm\"\r\n onClick={() => setViewMode(\"mobile\")}\r\n >\r\n <Smartphone className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n\r\n {/* Dark Mode Toggle */}\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={() => setDarkMode(!darkMode)}\r\n >\r\n {darkMode ? (\r\n <Sun className=\"h-4 w-4\" />\r\n ) : (\r\n <Moon className=\"h-4 w-4\" />\r\n )}\r\n </Button>\r\n </div>\r\n </div>\r\n </header>\r\n\r\n {/* Content */}\r\n <main className=\"flex-1 overflow-auto p-6\">\r\n {currentDoc ? (\r\n <div className=\"max-w-6xl mx-auto space-y-8\">\r\n {/* Description */}\r\n <div>\r\n <p className=\"text-lg text-gray-600\">{currentDoc.description}</p>\r\n </div>\r\n\r\n {/* Tabs */}\r\n <div>\r\n <div className=\"flex gap-3 mb-4\" role=\"tablist\" aria-label=\"Component details tabs\">\r\n <Button\r\n variant={activeTab === \"preview\" ? \"primary\" : \"ghost\"}\r\n size=\"sm\"\r\n onClick={() => setActiveTab(\"preview\")}\r\n role=\"tab\"\r\n aria-selected={activeTab === \"preview\"}\r\n >\r\n <Eye className=\"h-4 w-4 mr-2\" />\r\n Preview\r\n </Button>\r\n <Button\r\n variant={activeTab === \"code\" ? \"primary\" : \"ghost\"}\r\n size=\"sm\"\r\n onClick={() => setActiveTab(\"code\")}\r\n role=\"tab\"\r\n aria-selected={activeTab === \"code\"}\r\n >\r\n <Code className=\"h-4 w-4 mr-2\" />\r\n Code\r\n </Button>\r\n <Button\r\n variant={activeTab === \"props\" ? \"primary\" : \"ghost\"}\r\n size=\"sm\"\r\n onClick={() => setActiveTab(\"props\")}\r\n role=\"tab\"\r\n aria-selected={activeTab === \"props\"}\r\n >\r\n <Settings className=\"h-4 w-4 mr-2\" />\r\n Props\r\n </Button>\r\n </div>\r\n <div>\r\n <div className=\"mt-6\">\r\n <div className=\"bg-white rounded-lg shadow p-6\">\r\n {/* Preview */}\r\n <div\r\n className={cn(\r\n \"mx-auto transition-all duration-300\",\r\n getViewportClass()\r\n )}\r\n >\r\n <div className={cn(darkMode && \"dark\")}>\r\n {showcaseRegistry[selectedComponent]\r\n ? React.createElement(\r\n showcaseRegistry[selectedComponent]\r\n )\r\n : null}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {activeTab === \"code\" && (\r\n <div className=\"mt-6\" role=\"tabpanel\" aria-label=\"Code example\">\r\n <div className=\"bg-white rounded-lg shadow p-6\">\r\n <div className=\"flex flex-row items-center justify-between\">\r\n <h2 className=\"text-lg font-semibold mb-0\">\r\n Usage Example\r\n </h2>\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={() => copyToClipboard(currentExample)}\r\n >\r\n {copiedCode === currentExample ? (\r\n <Check className=\"h-4 w-4 mr-2\" />\r\n ) : (\r\n <Copy className=\"h-4 w-4 mr-2\" />\r\n )}\r\n Copy\r\n </Button>\r\n </div>\r\n <pre className=\"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto\">\r\n <code>{currentExample}</code>\r\n </pre>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {activeTab === \"props\" && (\r\n <div className=\"mt-6\" role=\"tabpanel\" aria-label=\"Component props\">\r\n <div className=\"bg-white rounded-lg shadow p-6\">\r\n <h2 className=\"text-lg font-semibold mb-4\">\r\n Component Props\r\n </h2>\r\n <div className=\"overflow-x-auto\">\r\n <table className=\"w-full border-collapse\">\r\n <thead>\r\n <tr className=\"border-b border-gray-200\">\r\n <th className=\"text-left p-3 font-medium text-gray-900\">\r\n Prop\r\n </th>\r\n <th className=\"text-left p-3 font-medium text-gray-900\">\r\n Type\r\n </th>\r\n <th className=\"text-left p-3 font-medium text-gray-900\">\r\n Default\r\n </th>\r\n <th className=\"text-left p-3 font-medium text-gray-900\">\r\n Description\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {currentProps.length > 0 ? (\r\n currentProps.map((prop: PropDoc, index) => (\r\n <tr key={prop.name ?? index} className=\"border-b border-gray-100\">\r\n <td className=\"p-3\">\r\n <code className=\"bg-gray-100 px-2 py-1 rounded text-sm\">\r\n {prop.name}\r\n </code>\r\n {prop.required && (\r\n <Badge variant=\"danger\" className=\"ml-2 text-xs\">\r\n Required\r\n </Badge>\r\n )}\r\n </td>\r\n <td className=\"p-3 text-gray-600\">{prop.type}</td>\r\n <td className=\"p-3 text-gray-600\">\r\n {prop.default ? (\r\n <code className=\"bg-gray-100 px-2 py-1 rounded text-sm\">\r\n {prop.default}\r\n </code>\r\n ) : null}\r\n </td>\r\n <td className=\"p-3 text-gray-600\">{prop.description}</td>\r\n </tr>\r\n ))\r\n ) : (\r\n <tr>\r\n <td colSpan={4} className=\"p-4 text-center text-gray-500\">\r\n No props documented for this component yet.\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n ) : (\r\n <div className=\"flex items-center justify-center h-full\">\r\n <div className=\"text-center\">\r\n <Book className=\"h-16 w-16 text-gray-400 mx-auto mb-4\" />\r\n <h2 className=\"text-xl font-semibold text-gray-900 mb-2\">\r\n Select a Component\r\n </h2>\r\n <p className=\"text-gray-600\">\r\n Choose a component from the sidebar to view its documentation and examples.\r\n </p>\r\n </div>\r\n </div>\r\n )}\r\n </main>\r\n </div>\r\n </div>\r\n );\r\n};\r\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;AAiCA;AACA,MAAM,mBAAmB,GAAG;AAC1B,IAAA,KAAK,EAAE;AACL,QAAA,IAAI,EAAEA,GAAA,CAAC,YAAY,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG;AAC1C,QAAA,UAAU,EAAE;AACV,YAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE;AAChC,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE;AAC9B,YAAA,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE;AACpC,YAAA,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE;AACpC,YAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ;AAC/B;AACF,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,IAAI,EAAEA,GAAA,CAAC,SAAS,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG;AACvC,QAAA,UAAU,EAAE;AACV,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE;AAC5B,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE;AAC9B,YAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE;AAChC,YAAA,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE;AACtC,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE;AAC5B,YAAA,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW;AACrC;AACF,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAEA,GAAA,CAAC,WAAW,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG;AACzC,QAAA,UAAU,EAAE;AACV,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE;AAC9B,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE;AAC9B,YAAA,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE;AAC9B,YAAA,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;AAClC,YAAA,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU;AACnC;AACF,KAAA;AACD,IAAA,cAAc,EAAE;AACd,QAAA,IAAI,EAAEA,GAAA,CAAC,MAAM,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG;AACpC,QAAA,UAAU,EAAE;AACV,YAAA,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,EAAE;AACnC,YAAA,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE;AACnC,YAAA,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,EAAE;AACrC,YAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,gBAAgB,EAAE;AAChD,YAAA,EAAE,IAAI,EAAE,yBAAyB,EAAE,EAAE,EAAE,QAAQ,EAAE;AAClD;AACF,KAAA;AACD,IAAA,MAAM,EAAE;AACN,QAAA,IAAI,EAAEA,GAAA,CAAC,MAAM,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG;AACpC,QAAA,UAAU,EAAE;AACV,YAAA,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,kBAAkB,EAAE;AACnD,YAAA,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE;AAC1C,YAAA,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE;AAC/C,YAAA,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE;AAClC,YAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ;AAC/B;AACF;CACF;MAgBY,iBAAiB,GAAqC,CAAC,EAAE,SAAS,EAAE,KAAI;IACnF,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACpE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA+B,SAAS,CAAC;IACnF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;IAClD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC/D,IAAA,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAW,CAAC,OAAO,CAAC,CAAC;IACjF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAkC,SAAS,CAAC;IACpF,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC/C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC;AACjE,IAAA,MAAM,UAAU,GAAG,MAAM,CAAwB,IAAI,CAAC;IACtD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC;AAE5D,IAAA,MAAM,cAAc,GAAG,CAAC,QAAgB,KAAI;QAC1C,qBAAqB,CAAC,CAAC,IAAI,KACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ;AACpB,cAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ;cACjC,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,CACxB;AACH,IAAA,CAAC;AAED,IAAA,MAAM,cAAc,GAAG,OAAO,CAAC,MAAK;AAClC,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,KACzD,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,CAAC,CACrD;IACH,CAAC,EAAE,EAAE,CAAC;IAEN,SAAS,CAAC,MAAK;QACb,IAAI,YAAY,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC,gBAAgB,EAAE;YAChE,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,gBAAgB,CACjD,qBAAqB,CACtB;AACD,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YACpC,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,KAAK,EAAE;YAChB;QACF;AACF,IAAA,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAEpC,IAAA,MAAM,mBAAmB,GAAG,CAAC,KAA0C,KAAI;AACzE,QAAA,IAAI,gBAAgB;YAAE;QAEtB,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAE9D,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,EAAE;YAC3D,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,MAAM,SAAS,GAAG,YAAY,KAAK,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC;YACnF,eAAe,CAAC,SAAS,CAAC;AAC1B,YAAA,oBAAoB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjD;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YAC/D,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,MAAM,SAAS,GAAG,YAAY,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC;YAClF,eAAe,CAAC,SAAS,CAAC;AAC1B,YAAA,oBAAoB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACjD;AACF,IAAA,CAAC;AAED,IAAA,MAAM,eAAe,GAAG,OAAO,IAAY,KAAI;AAC7C,QAAA,IAAI;AACF,YAAA,IAAI,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE;gBACnC,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;gBACzC,aAAa,CAAC,IAAI,CAAC;AACnB,gBAAA,SAAS,CAAC,OAAO,CAAC,2BAA2B,CAAC;gBAC9C,UAAU,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;YAC7C;iBAAO;AACL,gBAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC;YAC9C;QACF;QAAE,OAAO,GAAG,EAAE;AACZ,YAAA,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC;QACxC;AACF,IAAA,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,MAAM,CACnE,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,KAAI;AACpC,QAAA,MAAM,kBAAkB,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,KAClE,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CACjE;AAED,QAAA,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,GAAW,CAAC,YAAY,CAAC,GAAG;AAC3B,gBAAA,GAAG,YAAY;AACf,gBAAA,UAAU,EAAE;aACb;QACH;AAEA,QAAA,OAAO,GAAG;IACZ,CAAC,EACD,EAAyC,CAC1C;AAED,IAAA,MAAM,UAAU,GAAG,aAAa,CAAC,iBAA+C,CAAC;AACjF,IAAA,MAAM,cAAc,GAAG,UAAU,EAAE,OAAO,IAAI,EAAE;IAChD,MAAM,YAAY,IAAI,UAAU,EAAE,KAAK,IAAI,EAAE,CAAc;IAE3D,MAAM,gBAAgB,GAAG,MAAK;QAC5B,QAAQ,QAAQ;AACd,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,UAAU;AACnB,YAAA;AACE,gBAAA,OAAO,QAAQ;;AAErB,IAAA,CAAC;AAED,IAAA,QACEC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,CACvDD,IAAC,KAAK,EAAA,EAAA,CAAG,EAGTC,IAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,EAAE,CACX,6EAA6E,EAC7E,gBAAgB,GAAG,MAAM,GAAG,MAAM,CACnC,EACD,QAAQ,EAAE,gBAAgB,GAAG,EAAE,GAAG,CAAC,EACnC,SAAS,EAAE,mBAAmB,EAAA,YAAA,EACnB,sBAAsB,aAGjCA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,8BAA8B,EAAA,QAAA,EAAA,CAC1C,CAAC,gBAAgB,KAChBA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wCAAwC,aACrDA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6BAA6B,EAAA,QAAA,EAAA,CAC1CD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oEAAoE,EAAA,QAAA,EACjFA,IAAC,OAAO,EAAA,EAAC,SAAS,EAAC,oBAAoB,EAAA,CAAG,EAAA,CACtC,EACNA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAAA,WAAA,EAAA,CAAiB,IAC9D,EACNA,GAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,MAAM,mBAAmB,CAAC,IAAI,CAAC,YAExCA,GAAA,CAAC,YAAY,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,GAC7B,CAAA,EAAA,CACL,CACP,EAEA,gBAAgB,KACfA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,YAClCA,GAAA,CAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,MAAM,mBAAmB,CAAC,KAAK,CAAC,EAAA,QAAA,EAEzCA,IAAC,OAAO,EAAA,EAAC,SAAS,EAAC,SAAS,GAAG,EAAA,CACxB,EAAA,CACL,CACP,EAEA,CAAC,gBAAgB,KAChBC,cAAK,SAAS,EAAC,UAAU,EAAA,QAAA,EAAA,CACvBD,IAAC,MAAM,EAAA,EAAC,SAAS,EAAC,0EAA0E,GAAG,EAC/FA,GAAA,CAAC,KAAK,EAAA,EACJ,WAAW,EAAC,sBAAsB,EAClC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC/C,SAAS,EAAC,OAAO,EAAA,CACjB,IACE,CACP,CAAA,EAAA,CACG,EAGNA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,4BAA4B,YACxC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,MACnEC,IAAA,CAAA,KAAA,EAAA,EAAwB,SAAS,EAAC,MAAM,EAAA,QAAA,EAAA,CACtCA,iBACE,OAAO,EAAE,MAAM,CAAC,gBAAgB,IAAI,cAAc,CAAC,YAAY,CAAC,EAChE,SAAS,EAAE,EAAE,CACX,+EAA+E,EAC/E,iCAAiC,EACjC,gBAAgB,GAAG,gBAAgB,GAAG,iBAAiB,CACxD,EAAA,QAAA,EAAA,CAEDA,cAAK,SAAS,EAAC,6BAA6B,EAAA,QAAA,EAAA,CACzC,YAAY,CAAC,IAAI,EACjB,CAAC,gBAAgB,IAAID,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,YAAY,EAAA,CAAQ,CAAA,EAAA,CAC7C,EACL,CAAC,gBAAgB,KAChBA,GAAA,CAAC,WAAW,EAAA,EACV,SAAS,EAAE,EAAE,CACX,8BAA8B,EAC9B,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,CAC1D,EAAA,CACD,CACH,IACM,EAER,CAAC,gBAAgB,IAAI,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,KAC7DA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,YACjC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,KAAI;AACzC,wCAAA,MAAM,QAAQ,GAAG,iBAAiB,KAAK,SAAS,CAAC,EAAE;wCACnD,QACEA,qCAEqB,SAAS,CAAC,EAAE,EAC/B,OAAO,EAAE,MAAK;AACZ,gDAAA,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;gDAClC,eAAe,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACvD,4CAAA,CAAC,EACD,SAAS,EAAE,EAAE,CACX,0IAA0I,EAC1I;AACE,kDAAE;kDACA,oDAAoD,CACzD,EAAA,cAAA,EACa,QAAQ,GAAG,MAAM,GAAG,SAAS,EAAA,QAAA,EAE1C,SAAS,CAAC,IAAI,EAAA,EAdV,SAAS,CAAC,EAAE,CAeV;oCAEb,CAAC,CAAC,EAAA,CACE,CACP,CAAA,EAAA,EAhDO,YAAY,CAiDhB,CACP,CAAC,EAAA,CACE,CAAA,EAAA,CACF,EAGNC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,sCAAsC,EAAA,QAAA,EAAA,CAEnDD,GAAA,CAAA,QAAA,EAAA,EAAQ,SAAS,EAAC,uCAAuC,EAAA,QAAA,EACvDC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mCAAmC,EAAA,QAAA,EAAA,CAChDA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6BAA6B,EAAA,QAAA,EAAA,CAC1CD,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,kCAAkC,EAAA,QAAA,EAC7C,UAAU,EAAE,IAAI,IAAI,oBAAoB,GACtC,EACJ,UAAU,IAAIA,GAAA,CAAC,KAAK,EAAA,EAAC,OAAO,EAAC,SAAS,EAAA,QAAA,EAAE,UAAU,CAAC,IAAI,EAAA,CAAS,IAC7D,EAENC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6BAA6B,EAAA,QAAA,EAAA,CAE1CA,cAAK,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAAA,CAC3DD,GAAA,CAAC,MAAM,IACL,OAAO,EAAE,QAAQ,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,EACrD,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,MAAM,WAAW,CAAC,SAAS,CAAC,EAAA,QAAA,EAErCA,IAAC,OAAO,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EAAA,CACxB,EACTA,GAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAE,QAAQ,KAAK,QAAQ,GAAG,SAAS,GAAG,OAAO,EACpD,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,MAAM,WAAW,CAAC,QAAQ,CAAC,EAAA,QAAA,EAEpCA,GAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EAAA,CACvB,EACTA,GAAA,CAAC,MAAM,IACL,OAAO,EAAE,QAAQ,KAAK,QAAQ,GAAG,SAAS,GAAG,OAAO,EACpD,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,MAAM,WAAW,CAAC,QAAQ,CAAC,EAAA,QAAA,EAEpCA,IAAC,UAAU,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,GAC3B,CAAA,EAAA,CACL,EAGNA,GAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,MAAM,WAAW,CAAC,CAAC,QAAQ,CAAC,EAAA,QAAA,EAEpC,QAAQ,IACPA,GAAA,CAAC,GAAG,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,KAE3BA,GAAA,CAAC,IAAI,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG,CAC7B,EAAA,CACM,IACL,CAAA,EAAA,CACF,EAAA,CACC,EAGTA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,0BAA0B,EAAA,QAAA,EACvC,UAAU,IACTC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6BAA6B,EAAA,QAAA,EAAA,CAE1CD,GAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EACEA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAE,UAAU,CAAC,WAAW,EAAA,CAAK,GAC7D,EAGNC,IAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,iBAAiB,EAAC,IAAI,EAAC,SAAS,EAAA,YAAA,EAAY,wBAAwB,EAAA,QAAA,EAAA,CACjFA,IAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAE,SAAS,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO,EACtD,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,MAAM,YAAY,CAAC,SAAS,CAAC,EACtC,IAAI,EAAC,KAAK,EAAA,eAAA,EACK,SAAS,KAAK,SAAS,EAAA,QAAA,EAAA,CAEtCD,GAAA,CAAC,GAAG,EAAA,EAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,SAAA,CAAA,EAAA,CAEzB,EACTC,IAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAE,SAAS,KAAK,MAAM,GAAG,SAAS,GAAG,OAAO,EACnD,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,EACnC,IAAI,EAAC,KAAK,EAAA,eAAA,EACK,SAAS,KAAK,MAAM,EAAA,QAAA,EAAA,CAEnCD,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,MAAA,CAAA,EAAA,CAE1B,EACTC,IAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAE,SAAS,KAAK,OAAO,GAAG,SAAS,GAAG,OAAO,EACpD,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,MAAM,YAAY,CAAC,OAAO,CAAC,EACpC,IAAI,EAAC,KAAK,EAAA,eAAA,EACK,SAAS,KAAK,OAAO,EAAA,QAAA,EAAA,CAEpCD,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,OAAA,CAAA,EAAA,CAE9B,CAAA,EAAA,CACL,EACNC,IAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CACED,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,MAAM,EAAA,QAAA,EACnBA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAE7CA,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,qCAAqC,EACrC,gBAAgB,EAAE,CACnB,EAAA,QAAA,EAEDA,aAAK,SAAS,EAAE,EAAE,CAAC,QAAQ,IAAI,MAAM,CAAC,EAAA,QAAA,EACnC,gBAAgB,CAAC,iBAAiB;sEAC/B,KAAK,CAAC,aAAa,CACjB,gBAAgB,CAAC,iBAAiB,CAAC;AAEvC,sEAAE,IAAI,EAAA,CACJ,GACF,EAAA,CACF,EAAA,CACF,EAEL,SAAS,KAAK,MAAM,KACnBA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,MAAM,EAAC,IAAI,EAAC,UAAU,EAAA,YAAA,EAAY,cAAc,YAC7DC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAAA,CAC7CA,cAAK,SAAS,EAAC,4CAA4C,EAAA,QAAA,EAAA,CACzDD,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,4BAA4B,8BAErC,EACLC,IAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,MAAM,eAAe,CAAC,cAAc,CAAC,aAE7C,UAAU,KAAK,cAAc,IAC5BD,IAAC,KAAK,EAAA,EAAC,SAAS,EAAC,cAAc,GAAG,KAElCA,IAAC,IAAI,EAAA,EAAC,SAAS,EAAC,cAAc,GAAG,CAClC,EAAA,MAAA,CAAA,EAAA,CAEM,CAAA,EAAA,CACL,EACNA,aAAK,SAAS,EAAC,0DAA0D,EAAA,QAAA,EACvEA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,cAAc,EAAA,CAAQ,EAAA,CACzB,CAAA,EAAA,CACF,EAAA,CACF,CACP,EAEA,SAAS,KAAK,OAAO,KACpBA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,MAAM,EAAC,IAAI,EAAC,UAAU,EAAA,YAAA,EAAY,iBAAiB,YAChEC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAAA,CAC7CD,YAAI,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAAA,iBAAA,EAAA,CAErC,EACLA,aAAK,SAAS,EAAC,iBAAiB,EAAA,QAAA,EAC9BC,gBAAO,SAAS,EAAC,wBAAwB,EAAA,QAAA,EAAA,CACvCD,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EACEC,aAAI,SAAS,EAAC,0BAA0B,EAAA,QAAA,EAAA,CACtCD,YAAI,SAAS,EAAC,yCAAyC,EAAA,QAAA,EAAA,MAAA,EAAA,CAElD,EACLA,YAAI,SAAS,EAAC,yCAAyC,EAAA,QAAA,EAAA,MAAA,EAAA,CAElD,EACLA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,yCAAyC,EAAA,QAAA,EAAA,SAAA,EAAA,CAElD,EACLA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,yCAAyC,EAAA,QAAA,EAAA,aAAA,EAAA,CAElD,IACF,EAAA,CACC,EACRA,yBACG,YAAY,CAAC,MAAM,GAAG,CAAC,IACtB,YAAY,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,KAAK,MACpCC,aAA6B,SAAS,EAAC,0BAA0B,EAAA,QAAA,EAAA,CAC/DA,IAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,KAAK,EAAA,QAAA,EAAA,CACjBD,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,uCAAuC,YACpD,IAAI,CAAC,IAAI,EAAA,CACL,EACN,IAAI,CAAC,QAAQ,KACZA,GAAA,CAAC,KAAK,EAAA,EAAC,OAAO,EAAC,QAAQ,EAAC,SAAS,EAAC,cAAc,EAAA,QAAA,EAAA,UAAA,EAAA,CAExC,CACT,IACE,EACLA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,mBAAmB,EAAA,QAAA,EAAE,IAAI,CAAC,IAAI,EAAA,CAAM,EAClDA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,mBAAmB,YAC9B,IAAI,CAAC,OAAO,IACXA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,uCAAuC,YACpD,IAAI,CAAC,OAAO,EAAA,CACR,IACL,IAAI,EAAA,CACL,EACLA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,mBAAmB,EAAA,QAAA,EAAE,IAAI,CAAC,WAAW,EAAA,CAAM,CAAA,EAAA,EAnBlD,IAAI,CAAC,IAAI,IAAI,KAAK,CAoBtB,CACN,CAAC,KAEFA,GAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EACEA,YAAI,OAAO,EAAE,CAAC,EAAE,SAAS,EAAC,+BAA+B,EAAA,QAAA,EAAA,6CAAA,EAAA,CAEpD,GACF,CACN,EAAA,CACK,IACF,EAAA,CACJ,CAAA,EAAA,CACF,GACF,CACP,CAAA,EAAA,CACG,CAAA,EAAA,CACF,CAAA,EAAA,CACF,KAENA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yCAAyC,EAAA,QAAA,EACtDC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,aAAa,aAC1BD,GAAA,CAAC,IAAI,IAAC,SAAS,EAAC,sCAAsC,EAAA,CAAG,EACzDA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,0CAA0C,EAAA,QAAA,EAAA,oBAAA,EAAA,CAEnD,EACLA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,6EAAA,EAAA,CAExB,IACA,EAAA,CACF,CACP,GACI,CAAA,EAAA,CACH,CAAA,EAAA,CACF;AAEV;;;;"}
|
|
1
|
+
{"version":3,"file":"ComponentShowcase.js","sources":["../../../src/components/ComponentShowcase/ComponentShowcase.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { useState, useMemo, useRef, useEffect } from \"react\";\nimport {\n Search,\n Copy,\n Check,\n Monitor,\n Tablet,\n Smartphone,\n Sun,\n Moon,\n ChevronRight,\n ChevronDown,\n Code,\n Eye,\n Book,\n Palette,\n Layout,\n MousePointer,\n AlertCircle,\n BarChart3,\n Settings,\n Shield\n} from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { Button } from \"../Button\";\nimport { Input } from \"../Input\";\nimport { Badge } from \"../Badge\";\nimport { Toast, showToast } from \"../Toast\";\n\nimport { showcaseRegistry } from \"./showcaseRegistry\";\nimport { componentDocs } from \"./componentDocs\";\n\n// Component categories and their items\nconst componentCategories = {\n Forms: {\n icon: <MousePointer className=\"h-4 w-4\" />,\n components: [\n { name: \"Button\", id: \"button\" },\n { name: \"Input\", id: \"input\" },\n { name: \"Textarea\", id: \"textarea\" },\n { name: \"Checkbox\", id: \"checkbox\" },\n { name: \"Switch\", id: \"switch\" }\n ]\n },\n \"Data Display\": {\n icon: <BarChart3 className=\"h-4 w-4\" />,\n components: [\n { name: \"Card\", id: \"card\" },\n { name: \"Badge\", id: \"badge\" },\n { name: \"Avatar\", id: \"avatar\" },\n { name: \"StatsCard\", id: \"statscard\" },\n { name: \"Tabs\", id: \"tabs\" },\n { name: \"DataTable\", id: \"datatable\" }\n ]\n },\n Feedback: {\n icon: <AlertCircle className=\"h-4 w-4\" />,\n components: [\n { name: \"Alert\", id: \"alert\" },\n { name: \"Toast\", id: \"toast\" },\n { name: \"Modal\", id: \"modal\" },\n { name: \"Spinner\", id: \"spinner\" },\n { name: \"Skeleton\", id: \"skeleton\" }\n ]\n },\n Authentication: {\n icon: <Shield className=\"h-4 w-4\" />,\n components: [\n { name: \"Auth System\", id: \"auth\" },\n { name: \"Login Page\", id: \"login\" },\n { name: \"Signup Page\", id: \"signup\" },\n { name: \"Password Reset\", id: \"password-reset\" },\n { name: \"!isAuthenticated Shield\", id: \"shield\" },\n ]\n },\n Layout: {\n icon: <Layout className=\"h-4 w-4\" />,\n components: [\n { name: \"DashboardLayout\", id: \"dashboard-layout\" },\n { name: \"Page Layout\", id: \"page-layout\" },\n { name: \"DashboardGrid\", id: \"dashboard-grid\" },\n { name: \"Sidebar\", id: \"sidebar\" },\n { name: \"Navbar\", id: \"navbar\" }\n ]\n }\n};\n\n// Prop documentation interface\ninterface PropDoc {\n name: string;\n type: string;\n default?: string;\n description?: string;\n required?: boolean;\n}\n\n// Props\ninterface ComponentShowcaseProps {\n className?: string;\n}\n\nexport const ComponentShowcase: React.FC<ComponentShowcaseProps> = ({ className }) => {\n const [selectedComponent, setSelectedComponent] = useState(\"button\");\n const [activeTab, setActiveTab] = useState<\"preview\" | \"code\" | \"props\">(\"preview\");\n const [searchQuery, setSearchQuery] = useState(\"\");\n const [sidebarCollapsed, setSidebarCollapsed] = useState(false);\n const [expandedCategories, setExpandedCategories] = useState<string[]>([\"Forms\"]);\n const [viewMode, setViewMode] = useState<\"desktop\" | \"tablet\" | \"mobile\">(\"desktop\");\n const [darkMode, setDarkMode] = useState(false);\n const [copiedCode, setCopiedCode] = useState<string | null>(null);\n const sidebarRef = useRef<HTMLDivElement | null>(null);\n const [focusedIndex, setFocusedIndex] = useState<number>(-1);\n\n const toggleCategory = (category: string) => {\n setExpandedCategories((prev) =>\n prev.includes(category)\n ? prev.filter((c) => c !== category)\n : [...prev, category]\n );\n };\n\n const flatComponents = useMemo(() => {\n return Object.values(componentCategories).flatMap((category) =>\n category.components.map((component) => component.id)\n );\n }, []);\n\n useEffect(() => {\n if (focusedIndex >= 0 && sidebarRef.current && !sidebarCollapsed) {\n const buttons = sidebarRef.current.querySelectorAll<HTMLButtonElement>(\n '[data-component-id]'\n );\n const target = buttons[focusedIndex];\n if (target) {\n target.focus();\n }\n }\n }, [focusedIndex, sidebarCollapsed]);\n\n const handleKeyNavigation = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (sidebarCollapsed) return;\n\n const currentIndex = flatComponents.indexOf(selectedComponent);\n\n if (event.key === 'ArrowDown' || event.key === 'ArrowRight') {\n event.preventDefault();\n const nextIndex = currentIndex === flatComponents.length - 1 ? 0 : currentIndex + 1;\n setFocusedIndex(nextIndex);\n setSelectedComponent(flatComponents[nextIndex]);\n } else if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') {\n event.preventDefault();\n const prevIndex = currentIndex <= 0 ? flatComponents.length - 1 : currentIndex - 1;\n setFocusedIndex(prevIndex);\n setSelectedComponent(flatComponents[prevIndex]);\n }\n };\n\n const copyToClipboard = async (code: string) => {\n try {\n if (navigator?.clipboard?.writeText) {\n await navigator.clipboard.writeText(code);\n setCopiedCode(code);\n showToast.success(\"Code copied to clipboard!\");\n setTimeout(() => setCopiedCode(null), 2000);\n } else {\n throw new Error(\"Clipboard API unavailable\");\n }\n } catch (err) {\n showToast.error(\"Failed to copy code\");\n }\n };\n\n const filteredCategories = Object.entries(componentCategories).reduce(\n (acc, [categoryName, categoryData]) => {\n const filteredComponents = categoryData.components.filter((component) =>\n component.name.toLowerCase().includes(searchQuery.toLowerCase())\n );\n\n if (filteredComponents.length > 0) {\n (acc as any)[categoryName] = {\n ...categoryData,\n components: filteredComponents\n };\n }\n\n return acc;\n },\n {} as Partial<typeof componentCategories>\n );\n\n const currentDoc = componentDocs[selectedComponent as keyof typeof componentDocs];\n const currentExample = currentDoc?.example ?? '';\n const currentProps = (currentDoc?.props ?? []) as PropDoc[];\n\n const getViewportClass = () => {\n switch (viewMode) {\n case \"tablet\":\n return \"max-w-2xl\";\n case \"mobile\":\n return \"max-w-sm\";\n default:\n return \"w-full\";\n }\n };\n\n return (\n <div className={cn(\"flex h-screen bg-gray-50\", className)}>\n <Toast />\n\n {/* Sidebar */}\n <div\n ref={sidebarRef}\n className={cn(\n \"bg-white border-r border-gray-200 transition-all duration-300 flex flex-col\",\n sidebarCollapsed ? \"w-16\" : \"w-80\"\n )}\n tabIndex={sidebarCollapsed ? -1 : 0}\n onKeyDown={handleKeyNavigation}\n aria-label=\"Component navigation\"\n >\n {/* Sidebar Header */}\n <div className=\"p-4 border-b border-gray-200\">\n {!sidebarCollapsed && (\n <div className=\"flex items-center justify-between mb-4\">\n <div className=\"flex items-center space-x-2\">\n <div className=\"w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center\">\n <Palette className=\"h-4 w-4 text-white\" />\n </div>\n <span className=\"font-bold text-lg text-gray-900\">Beyond UI</span>\n </div>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setSidebarCollapsed(true)}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n )}\n\n {sidebarCollapsed && (\n <div className=\"flex justify-center\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setSidebarCollapsed(false)}\n >\n <Palette className=\"h-4 w-4\" />\n </Button>\n </div>\n )}\n\n {!sidebarCollapsed && (\n <div className=\"relative\">\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-gray-400\" />\n <Input\n placeholder=\"Search components...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"pl-10\"\n />\n </div>\n )}\n </div>\n\n {/* Navigation */}\n <nav className=\"flex-1 p-4 overflow-y-auto\">\n {Object.entries(filteredCategories).map(([categoryName, categoryData]) => (\n <div key={categoryName} className=\"mb-4\">\n <button\n onClick={() => !sidebarCollapsed && toggleCategory(categoryName)}\n className={cn(\n \"flex items-center w-full p-2 text-sm font-medium rounded-lg transition-colors\",\n \"hover:bg-gray-100 text-gray-700\",\n sidebarCollapsed ? \"justify-center\" : \"justify-between\"\n )}\n >\n <div className=\"flex items-center space-x-2\">\n {categoryData.icon}\n {!sidebarCollapsed && <span>{categoryName}</span>}\n </div>\n {!sidebarCollapsed && (\n <ChevronDown\n className={cn(\n \"h-4 w-4 transition-transform\",\n expandedCategories.includes(categoryName) && \"rotate-180\"\n )}\n />\n )}\n </button>\n\n {!sidebarCollapsed && expandedCategories.includes(categoryName) && (\n <div className=\"mt-2 ml-6 space-y-1\">\n {categoryData.components.map((component) => {\n const isActive = selectedComponent === component.id;\n return (\n <button\n key={component.id}\n data-component-id={component.id}\n onClick={() => {\n setSelectedComponent(component.id);\n setFocusedIndex(flatComponents.indexOf(component.id));\n }}\n className={cn(\n \"flex items-center w-full p-2 text-sm rounded-lg transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500\",\n isActive\n ? \"bg-primary-50 text-primary-700 border-r-2 border-primary-600\"\n : \"text-gray-600 hover:bg-gray-50 hover:text-gray-900\"\n )}\n aria-current={isActive ? \"page\" : undefined}\n >\n {component.name}\n </button>\n );\n })}\n </div>\n )}\n </div>\n ))}\n </nav>\n </div>\n\n {/* Main Content */}\n <div className=\"flex-1 flex flex-col overflow-hidden\">\n {/* Header */}\n <header className=\"bg-white border-b border-gray-200 p-4\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-4\">\n <h1 className=\"text-2xl font-bold text-gray-900\">\n {currentDoc?.name || \"Component Showcase\"}\n </h1>\n {currentDoc && <Badge variant=\"outline\">{currentDoc.name}</Badge>}\n </div>\n\n <div className=\"flex items-center space-x-2\">\n {/* Viewport Controls */}\n <div className=\"flex items-center bg-gray-100 rounded-lg p-1\">\n <Button\n variant={viewMode === \"desktop\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setViewMode(\"desktop\")}\n >\n <Monitor className=\"h-4 w-4\" />\n </Button>\n <Button\n variant={viewMode === \"tablet\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setViewMode(\"tablet\")}\n >\n <Tablet className=\"h-4 w-4\" />\n </Button>\n <Button\n variant={viewMode === \"mobile\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setViewMode(\"mobile\")}\n >\n <Smartphone className=\"h-4 w-4\" />\n </Button>\n </div>\n\n {/* Dark Mode Toggle */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setDarkMode(!darkMode)}\n >\n {darkMode ? (\n <Sun className=\"h-4 w-4\" />\n ) : (\n <Moon className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n </div>\n </header>\n\n {/* Content */}\n <main className=\"flex-1 overflow-auto p-6\">\n {currentDoc ? (\n <div className=\"max-w-6xl mx-auto space-y-8\">\n {/* Description */}\n <div>\n <p className=\"text-lg text-gray-600\">{currentDoc.description}</p>\n </div>\n\n {/* Tabs */}\n <div>\n <div className=\"flex gap-3 mb-4\" role=\"tablist\" aria-label=\"Component details tabs\">\n <Button\n variant={activeTab === \"preview\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setActiveTab(\"preview\")}\n role=\"tab\"\n aria-selected={activeTab === \"preview\"}\n >\n <Eye className=\"h-4 w-4 mr-2\" />\n Preview\n </Button>\n <Button\n variant={activeTab === \"code\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setActiveTab(\"code\")}\n role=\"tab\"\n aria-selected={activeTab === \"code\"}\n >\n <Code className=\"h-4 w-4 mr-2\" />\n Code\n </Button>\n <Button\n variant={activeTab === \"props\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => setActiveTab(\"props\")}\n role=\"tab\"\n aria-selected={activeTab === \"props\"}\n >\n <Settings className=\"h-4 w-4 mr-2\" />\n Props\n </Button>\n </div>\n <div>\n <div className=\"mt-6\">\n <div className=\"bg-white rounded-lg shadow p-6\">\n {/* Preview */}\n <div\n className={cn(\n \"mx-auto transition-all duration-300\",\n getViewportClass()\n )}\n >\n <div className={cn(darkMode && \"dark\")}>\n {showcaseRegistry[selectedComponent]\n ? React.createElement(\n showcaseRegistry[selectedComponent]\n )\n : null}\n </div>\n </div>\n </div>\n </div>\n\n {activeTab === \"code\" && (\n <div className=\"mt-6\" role=\"tabpanel\" aria-label=\"Code example\">\n <div className=\"bg-white rounded-lg shadow p-6\">\n <div className=\"flex flex-row items-center justify-between\">\n <h2 className=\"text-lg font-semibold mb-0\">\n Usage Example\n </h2>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => copyToClipboard(currentExample)}\n >\n {copiedCode === currentExample ? (\n <Check className=\"h-4 w-4 mr-2\" />\n ) : (\n <Copy className=\"h-4 w-4 mr-2\" />\n )}\n Copy\n </Button>\n </div>\n <pre className=\"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto\">\n <code>{currentExample}</code>\n </pre>\n </div>\n </div>\n )}\n\n {activeTab === \"props\" && (\n <div className=\"mt-6\" role=\"tabpanel\" aria-label=\"Component props\">\n <div className=\"bg-white rounded-lg shadow p-6\">\n <h2 className=\"text-lg font-semibold mb-4\">\n Component Props\n </h2>\n <div className=\"overflow-x-auto\">\n <table className=\"w-full border-collapse\">\n <thead>\n <tr className=\"border-b border-gray-200\">\n <th className=\"text-left p-3 font-medium text-gray-900\">\n Prop\n </th>\n <th className=\"text-left p-3 font-medium text-gray-900\">\n Type\n </th>\n <th className=\"text-left p-3 font-medium text-gray-900\">\n Default\n </th>\n <th className=\"text-left p-3 font-medium text-gray-900\">\n Description\n </th>\n </tr>\n </thead>\n <tbody>\n {currentProps.length > 0 ? (\n currentProps.map((prop: PropDoc, index) => (\n <tr key={prop.name ?? index} className=\"border-b border-gray-100\">\n <td className=\"p-3\">\n <code className=\"bg-gray-100 px-2 py-1 rounded text-sm\">\n {prop.name}\n </code>\n {prop.required && (\n <Badge variant=\"danger\" className=\"ml-2 text-xs\">\n Required\n </Badge>\n )}\n </td>\n <td className=\"p-3 text-gray-600\">{prop.type}</td>\n <td className=\"p-3 text-gray-600\">\n {prop.default ? (\n <code className=\"bg-gray-100 px-2 py-1 rounded text-sm\">\n {prop.default}\n </code>\n ) : null}\n </td>\n <td className=\"p-3 text-gray-600\">{prop.description}</td>\n </tr>\n ))\n ) : (\n <tr>\n <td colSpan={4} className=\"p-4 text-center text-gray-500\">\n No props documented for this component yet.\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n ) : (\n <div className=\"flex items-center justify-center h-full\">\n <div className=\"text-center\">\n <Book className=\"h-16 w-16 text-gray-400 mx-auto mb-4\" />\n <h2 className=\"text-xl font-semibold text-gray-900 mb-2\">\n Select a Component\n </h2>\n <p className=\"text-gray-600\">\n Choose a component from the sidebar to view its documentation and examples.\n </p>\n </div>\n </div>\n )}\n </main>\n </div>\n </div>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|