@beyondcorp/beyond-ui 1.2.83 → 1.2.87

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +394 -394
  2. package/dist/components/Alert/Alert.example.js.map +1 -1
  3. package/dist/components/Auth/LoginForm.example.js.map +1 -1
  4. package/dist/components/Auth/PasswordResetForm.example.js.map +1 -1
  5. package/dist/components/Auth/PasswordResetForm.js.map +1 -1
  6. package/dist/components/Auth/ProtectedRoute.example.js.map +1 -1
  7. package/dist/components/Auth/SignupForm.example.js.map +1 -1
  8. package/dist/components/Avatar/Avatar.example.js.map +1 -1
  9. package/dist/components/Badge/Badge.example.js.map +1 -1
  10. package/dist/components/Blog/BlogShowcase.js +36 -36
  11. package/dist/components/Blog/BlogShowcase.js.map +1 -1
  12. package/dist/components/Button/Button.example.js.map +1 -1
  13. package/dist/components/Card/Card.example.js.map +1 -1
  14. package/dist/components/Card/Card.js.map +1 -1
  15. package/dist/components/Checkbox/Checkbox.example.js.map +1 -1
  16. package/dist/components/CodeHighlight/CodeHighlight.js.map +1 -1
  17. package/dist/components/ComponentShowcase/ComponentShowcase.js.map +1 -1
  18. package/dist/components/ComponentShowcase/componentDocs.js +21 -21
  19. package/dist/components/ComponentShowcase/componentDocs.js.map +1 -1
  20. package/dist/components/ComponentShowcase/showcaseRegistry.js.map +1 -1
  21. package/dist/components/DashboardGrid/DashboardGrid.example.js.map +1 -1
  22. package/dist/components/DashboardGrid/DashboardGrid.js.map +1 -1
  23. package/dist/components/DashboardHeader/DashboardHeader.example.js.map +1 -1
  24. package/dist/components/DashboardHeader/DashboardHeader.js +5 -5
  25. package/dist/components/DashboardHeader/DashboardHeader.js.map +1 -1
  26. package/dist/components/DashboardLayout/DashboardLayout.example.js.map +1 -1
  27. package/dist/components/DashboardLayout/DashboardLayout.js +1 -1
  28. package/dist/components/DashboardLayout/DashboardLayout.js.map +1 -1
  29. package/dist/components/DataTable/DataTable.js +9 -9
  30. package/dist/components/DataTable/DataTable.js.map +1 -1
  31. package/dist/components/Image/Image.js.map +1 -1
  32. package/dist/components/Input/Input.example.js.map +1 -1
  33. package/dist/components/Marketplace/AllProductsView.js.map +1 -1
  34. package/dist/components/Marketplace/MarketplaceComponent.js.map +1 -1
  35. package/dist/components/Marketplace/MarketplaceSidebar.js.map +1 -1
  36. package/dist/components/Marketplace/components/MarketplaceControls.js.map +1 -1
  37. package/dist/components/Marketplace/components/MarketplaceHeader.js.map +1 -1
  38. package/dist/components/Marketplace/components/ProductCard.js.map +1 -1
  39. package/dist/components/Marketplace/hooks/useScrollToTop.js.map +1 -1
  40. package/dist/components/Marketplace/utils/sanitizeProduct.js.map +1 -1
  41. package/dist/components/Modal/Modal.example.js.map +1 -1
  42. package/dist/components/Modal/Modal.js +3 -3
  43. package/dist/components/Modal/Modal.js.map +1 -1
  44. package/dist/components/Navbar/Navbar.example.js.map +1 -1
  45. package/dist/components/NightModeSwitch/NightModeSwitch.js.map +1 -1
  46. package/dist/components/ProfileManagement/EditModal.js.map +1 -1
  47. package/dist/components/ProfileManagement/ProfileCard.js +1 -1
  48. package/dist/components/ProfileManagement/ProfileCard.js.map +1 -1
  49. package/dist/components/Radio/Radio.js.map +1 -1
  50. package/dist/components/Select/Select.js.map +1 -1
  51. package/dist/components/Sidebar/LogoutButton.js.map +1 -1
  52. package/dist/components/Sidebar/ProfileButton.js.map +1 -1
  53. package/dist/components/Sidebar/Sidebar.example.js.map +1 -1
  54. package/dist/components/Sidebar/Sidebar.js +5 -5
  55. package/dist/components/Sidebar/Sidebar.js.map +1 -1
  56. package/dist/components/Sidebar/SidebarHeader.js +1 -1
  57. package/dist/components/Sidebar/SidebarHeader.js.map +1 -1
  58. package/dist/components/Skeleton/Skeleton.example.js.map +1 -1
  59. package/dist/components/Spinner/Spinner.example.js.map +1 -1
  60. package/dist/components/StatsCard/StatsCard.example.js.map +1 -1
  61. package/dist/components/Switch/Switch.example.js.map +1 -1
  62. package/dist/components/Tabs/Tabs.example.js.map +1 -1
  63. package/dist/components/Textarea/Textarea.example.js.map +1 -1
  64. package/dist/components/Toast/Toast.example.js.map +1 -1
  65. package/dist/hooks/useIntersectionObserver.js.map +1 -1
  66. package/dist/styles.css +1 -1
  67. package/package.json +113 -113
@@ -1 +1 @@
1
- {"version":3,"file":"MarketplaceSidebar.js","sources":["../../../src/components/Marketplace/MarketplaceSidebar.tsx"],"sourcesContent":["import React, { useState } from 'react';\r\nimport { ChevronDown, ChevronRight, Star, X, Filter, Sliders, Tag, Store, Grid2x2 as Grid } from 'lucide-react';\r\nimport { Button } from '../Button';\r\nimport { Input } from '../Input';\r\nimport { Card, CardHeader, CardTitle, CardContent } from '../Card';\r\nimport { Badge } from '../Badge';\r\nimport { Checkbox } from '../Checkbox';\r\nimport { cn } from '../../utils/cn';\r\nimport type { FilterOptions } from './types';\r\n\r\ninterface MarketplaceSidebarProps {\r\n filters: FilterOptions;\r\n onFiltersChange: (filters: FilterOptions) => void;\r\n onClearFilters: () => void;\r\n className?: string;\r\n collapsed?: boolean;\r\n onToggleCollapse?: () => void;\r\n}\r\n\r\ninterface CategoryNode {\r\n id: string;\r\n name: string;\r\n count: number;\r\n children?: CategoryNode[];\r\n}\r\n\r\nconst categoryTree: CategoryNode[] = [\r\n {\r\n id: 'electronics',\r\n name: 'Electronics',\r\n count: 156,\r\n children: [\r\n { id: 'smartphones', name: 'Smartphones', count: 45 },\r\n { id: 'laptops', name: 'Laptops', count: 32 },\r\n { id: 'headphones', name: 'Headphones', count: 28 },\r\n { id: 'cameras', name: 'Cameras', count: 21 },\r\n { id: 'accessories', name: 'Accessories', count: 30 },\r\n ],\r\n },\r\n {\r\n id: 'clothing',\r\n name: 'Clothing & Fashion',\r\n count: 234,\r\n children: [\r\n { id: 'mens', name: \"Men's Clothing\", count: 89 },\r\n { id: 'womens', name: \"Women's Clothing\", count: 112 },\r\n { id: 'shoes', name: 'Shoes', count: 67 },\r\n { id: 'accessories-fashion', name: 'Fashion Accessories', count: 45 },\r\n ],\r\n },\r\n {\r\n id: 'home',\r\n name: 'Home & Garden',\r\n count: 178,\r\n children: [\r\n { id: 'furniture', name: 'Furniture', count: 56 },\r\n { id: 'decor', name: 'Home Decor', count: 43 },\r\n { id: 'kitchen', name: 'Kitchen & Dining', count: 38 },\r\n { id: 'garden', name: 'Garden & Outdoor', count: 41 },\r\n ],\r\n },\r\n {\r\n id: 'sports',\r\n name: 'Sports & Outdoors',\r\n count: 145,\r\n children: [\r\n { id: 'fitness', name: 'Fitness Equipment', count: 34 },\r\n { id: 'outdoor', name: 'Outdoor Recreation', count: 52 },\r\n { id: 'sports-apparel', name: 'Sports Apparel', count: 59 },\r\n ],\r\n },\r\n];\r\n\r\nconst brands = [\r\n { name: 'Apple', count: 45 },\r\n { name: 'Samsung', count: 38 },\r\n { name: 'Nike', count: 67 },\r\n { name: 'Adidas', count: 54 },\r\n { name: 'Sony', count: 32 },\r\n { name: 'LG', count: 28 },\r\n { name: 'Canon', count: 21 },\r\n { name: 'Dell', count: 19 },\r\n];\r\n\r\nconst vendors = [\r\n { name: 'TechWorld Store', count: 89, rating: 4.8 },\r\n { name: 'Fashion Hub', count: 76, rating: 4.6 },\r\n { name: 'Home Essentials', count: 65, rating: 4.7 },\r\n { name: 'Sports Central', count: 54, rating: 4.5 },\r\n { name: 'Electronics Plus', count: 43, rating: 4.9 },\r\n];\r\n\r\nexport const MarketplaceSidebar: React.FC<MarketplaceSidebarProps> = ({\r\n filters,\r\n onFiltersChange,\r\n onClearFilters,\r\n className = '',\r\n collapsed = false,\r\n onToggleCollapse,\r\n}) => {\r\n const [expandedCategories, setExpandedCategories] = useState<Set<string>>(new Set(['electronics']));\r\n const [expandedSections, setExpandedSections] = useState<Set<string>>(\r\n new Set(['categories', 'price', 'rating', 'brands'])\r\n );\r\n\r\n const toggleCategory = (categoryId: string) => {\r\n setExpandedCategories(prev => {\r\n const newSet = new Set(prev);\r\n if (newSet.has(categoryId)) {\r\n newSet.delete(categoryId);\r\n } else {\r\n newSet.add(categoryId);\r\n }\r\n return newSet;\r\n });\r\n };\r\n\r\n const toggleSection = (sectionId: string) => {\r\n setExpandedSections(prev => {\r\n const newSet = new Set(prev);\r\n if (newSet.has(sectionId)) {\r\n newSet.delete(sectionId);\r\n } else {\r\n newSet.add(sectionId);\r\n }\r\n return newSet;\r\n });\r\n };\r\n\r\n const handleFilterChange = (filterType: keyof FilterOptions, value: any) => {\r\n onFiltersChange({\r\n ...filters,\r\n [filterType]: value,\r\n });\r\n };\r\n\r\n const getActiveFiltersCount = () => {\r\n let count = 0;\r\n if (filters.categories.length > 0) count += filters.categories.length;\r\n if (filters.brands.length > 0) count += filters.brands.length;\r\n if (filters.vendors.length > 0) count += filters.vendors.length;\r\n if (filters.rating > 0) count += 1;\r\n if (filters.inStock) count += 1;\r\n if (filters.priceRange[0] > 0 || filters.priceRange[1] < 1000) count += 1;\r\n return count;\r\n };\r\n\r\n const renderCategoryTree = (categories: CategoryNode[], level = 0) => {\r\n return categories.map((category) => (\r\n <div key={category.id} className={cn('', level > 0 && 'ml-4')}>\r\n <div className=\"flex items-center justify-between py-1\">\r\n <label className=\"flex items-center space-x-2 flex-1 cursor-pointer\">\r\n <Checkbox\r\n checked={filters.categories.includes(category.id)}\r\n onChange={(e) => {\r\n const newCategories = e.target.checked\r\n ? [...filters.categories, category.id]\r\n : filters.categories.filter(c => c !== category.id);\r\n handleFilterChange('categories', newCategories);\r\n }}\r\n />\r\n <span className=\"text-sm text-gray-700 flex-1\">{category.name}</span>\r\n <span className=\"text-xs text-gray-500\">({category.count})</span>\r\n </label>\r\n {category.children && (\r\n <button\r\n onClick={() => toggleCategory(category.id)}\r\n className=\"p-1 hover:bg-gray-100 rounded\"\r\n >\r\n {expandedCategories.has(category.id) ? (\r\n <ChevronDown className=\"h-3 w-3 text-gray-400\" />\r\n ) : (\r\n <ChevronRight className=\"h-3 w-3 text-gray-400\" />\r\n )}\r\n </button>\r\n )}\r\n </div>\r\n {category.children && expandedCategories.has(category.id) && (\r\n <div className=\"mt-1\">\r\n {renderCategoryTree(category.children, level + 1)}\r\n </div>\r\n )}\r\n </div>\r\n ));\r\n };\r\n\r\n if (collapsed) {\r\n return (\r\n <div className={cn('w-16 flex-shrink-0 bg-background border-r border-border rounded-xl hidden lg:block', className)}>\r\n {/* Fixed minimized sidebar for desktop */}\r\n <div className=\"fixed top-16 left-0 h-[calc(100vh-4rem)] w-16 z-40 bg-background border-r border-border rounded-xl\">\r\n <Card className=\"h-full shadow-none border-none bg-transparent\">\r\n <CardContent className=\"p-2\">\r\n <div className=\"flex flex-col items-center space-y-3\">\r\n {/* Main Filter Icon (Expand) */}\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n aria-label=\"Expand filters\"\r\n title=\"Expand filters\"\r\n onClick={onToggleCollapse}\r\n className=\"w-10 h-10 flex items-center justify-center text-muted-foreground hover:bg-accent focus:ring-2 focus:ring-primary rounded-lg\"\r\n >\r\n <Filter className=\"h-5 w-5\" />\r\n </Button>\r\n {/* Categories */}\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n aria-label=\"Categories\"\r\n title=\"Categories\"\r\n className=\"w-10 h-10 flex items-center justify-center text-muted-foreground hover:bg-accent focus:ring-2 focus:ring-primary rounded-lg\"\r\n tabIndex={0}\r\n >\r\n <Grid className=\"h-5 w-5\" />\r\n </Button>\r\n {/* Price */}\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n aria-label=\"Price Range\"\r\n title=\"Price Range\"\r\n className=\"w-10 h-10 flex items-center justify-center text-muted-foreground hover:bg-accent focus:ring-2 focus:ring-primary rounded-lg\"\r\n tabIndex={0}\r\n >\r\n <Tag className=\"h-5 w-5\" />\r\n </Button>\r\n {/* Rating */}\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n aria-label=\"Customer Rating\"\r\n title=\"Customer Rating\"\r\n className=\"w-10 h-10 flex items-center justify-center text-muted-foreground hover:bg-accent focus:ring-2 focus:ring-primary rounded-lg\"\r\n tabIndex={0}\r\n >\r\n <Star className=\"h-5 w-5\" />\r\n </Button>\r\n {/* Brands */}\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n aria-label=\"Brands\"\r\n title=\"Brands\"\r\n className=\"w-10 h-10 flex items-center justify-center text-muted-foreground hover:bg-accent focus:ring-2 focus:ring-primary rounded-lg\"\r\n tabIndex={0}\r\n >\r\n <Tag className=\"h-5 w-5\" />\r\n </Button>\r\n {/* Vendors */}\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n aria-label=\"Sellers\"\r\n title=\"Sellers\"\r\n className=\"w-10 h-10 flex items-center justify-center text-muted-foreground hover:bg-accent focus:ring-2 focus:ring-primary rounded-lg\"\r\n tabIndex={0}\r\n >\r\n <Store className=\"h-5 w-5\" />\r\n </Button>\r\n {/* Availability */}\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n aria-label=\"Availability\"\r\n title=\"Availability\"\r\n className=\"w-10 h-10 flex items-center justify-center text-muted-foreground hover:bg-accent focus:ring-2 focus:ring-primary rounded-lg\"\r\n tabIndex={0}\r\n >\r\n <Sliders className=\"h-5 w-5\" />\r\n </Button>\r\n {/* Active Filter Count Badge */}\r\n {getActiveFiltersCount() > 0 && (\r\n <Badge variant=\"default\" className=\"text-xs bg-primary text-primary-foreground mt-2\">\r\n {getActiveFiltersCount()}\r\n </Badge>\r\n )}\r\n </div>\r\n </CardContent>\r\n </Card>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className={cn('w-80 flex-shrink-0 hidden lg:block', className)}>\r\n {/* Fixed sidebar for desktop */}\r\n {/* Adjust top offset to match navbar height (e.g., 64px = 16 * 4) */}\r\n <div className=\"fixed top-16 left-0 h-[calc(100vh-4rem)] w-80 z-30 bg-background border-r border-border pt-4\">\r\n <Card className=\"h-full shadow-none border-none bg-transparent\">\r\n <CardHeader className=\"pb-3\">\r\n <div className=\"flex items-center justify-between\">\r\n <CardTitle className=\"flex items-center text-lg\">\r\n <Filter className=\"h-5 w-5 mr-2\" />\r\n Filters\r\n {getActiveFiltersCount() > 0 && (\r\n <Badge variant=\"default\" className=\"ml-2\">\r\n {getActiveFiltersCount()}\r\n </Badge>\r\n )}\r\n </CardTitle>\r\n <div className=\"flex items-center space-x-2\">\r\n <Button variant=\"ghost\" size=\"sm\" onClick={onClearFilters}>\r\n Clear All\r\n </Button>\r\n {onToggleCollapse && (\r\n <Button variant=\"ghost\" size=\"sm\" onClick={onToggleCollapse}>\r\n <X className=\"h-4 w-4\" />\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n </CardHeader>\r\n\r\n <CardContent className=\"space-y-6 max-h-[calc(100vh-200px)] overflow-y-auto\">\r\n {/* Categories */}\r\n <div>\r\n <button\r\n onClick={() => toggleSection('categories')}\r\n className=\"flex items-center justify-between w-full mb-3\"\r\n >\r\n <h3 className=\"font-medium text-gray-900 flex items-center\">\r\n <Grid className=\"h-4 w-4 mr-2\" />\r\n Categories\r\n </h3>\r\n {expandedSections.has('categories') ? (\r\n <ChevronDown className=\"h-4 w-4 text-gray-400\" />\r\n ) : (\r\n <ChevronRight className=\"h-4 w-4 text-gray-400\" />\r\n )}\r\n </button>\r\n {expandedSections.has('categories') && (\r\n <div className=\"space-y-1\">\r\n {renderCategoryTree(categoryTree)}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Price Range */}\r\n <div>\r\n <button\r\n onClick={() => toggleSection('price')}\r\n className=\"flex items-center justify-between w-full mb-3\"\r\n >\r\n <h3 className=\"font-medium text-gray-900 flex items-center\">\r\n <Tag className=\"h-4 w-4 mr-2\" />\r\n Price Range\r\n </h3>\r\n {expandedSections.has('price') ? (\r\n <ChevronDown className=\"h-4 w-4 text-gray-400\" />\r\n ) : (\r\n <ChevronRight className=\"h-4 w-4 text-gray-400\" />\r\n )}\r\n </button>\r\n {expandedSections.has('price') && (\r\n <div className=\"space-y-3\">\r\n <div className=\"flex items-center space-x-2\">\r\n <Input\r\n type=\"number\"\r\n placeholder=\"Min\"\r\n value={filters.priceRange[0]}\r\n onChange={(e) => handleFilterChange('priceRange', [\r\n parseInt(e.target.value) || 0,\r\n filters.priceRange[1]\r\n ])}\r\n className=\"w-20 text-sm\"\r\n />\r\n <span className=\"text-gray-400\">-</span>\r\n <Input\r\n type=\"number\"\r\n placeholder=\"Max\"\r\n value={filters.priceRange[1]}\r\n onChange={(e) => handleFilterChange('priceRange', [\r\n filters.priceRange[0],\r\n parseInt(e.target.value) || 1000\r\n ])}\r\n className=\"w-20 text-sm\"\r\n />\r\n </div>\r\n \r\n {/* Quick Price Ranges */}\r\n <div className=\"space-y-1\">\r\n {[\r\n { label: 'Under $25', range: [0, 25] },\r\n { label: '$25 - $50', range: [25, 50] },\r\n { label: '$50 - $100', range: [50, 100] },\r\n { label: '$100 - $200', range: [100, 200] },\r\n { label: 'Over $200', range: [200, 1000] },\r\n ].map((option) => (\r\n <label key={option.label} className=\"flex items-center space-x-2\">\r\n <Checkbox\r\n checked={\r\n filters.priceRange[0] === option.range[0] &&\r\n filters.priceRange[1] === option.range[1]\r\n }\r\n onChange={(e) => {\r\n if (e.target.checked) {\r\n handleFilterChange('priceRange', option.range);\r\n }\r\n }}\r\n />\r\n <span className=\"text-sm text-gray-700\">{option.label}</span>\r\n </label>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Rating */}\r\n <div>\r\n <button\r\n onClick={() => toggleSection('rating')}\r\n className=\"flex items-center justify-between w-full mb-3\"\r\n >\r\n <h3 className=\"font-medium text-gray-900 flex items-center\">\r\n <Star className=\"h-4 w-4 mr-2\" />\r\n Customer Rating\r\n </h3>\r\n {expandedSections.has('rating') ? (\r\n <ChevronDown className=\"h-4 w-4 text-gray-400\" />\r\n ) : (\r\n <ChevronRight className=\"h-4 w-4 text-gray-400\" />\r\n )}\r\n </button>\r\n {expandedSections.has('rating') && (\r\n <div className=\"space-y-2\">\r\n {[4, 3, 2, 1].map(rating => (\r\n <label key={rating} className=\"flex items-center space-x-2\">\r\n <Checkbox\r\n checked={filters.rating === rating}\r\n onChange={(e) => {\r\n handleFilterChange('rating', e.target.checked ? rating : 0);\r\n }}\r\n />\r\n <div className=\"flex items-center space-x-1\">\r\n {[1, 2, 3, 4, 5].map(star => (\r\n <Star\r\n key={star}\r\n className={`h-4 w-4 ${\r\n star <= rating ? 'text-yellow-400 fill-current' : 'text-gray-300'\r\n }`}\r\n />\r\n ))}\r\n <span className=\"text-sm text-gray-700\">& up</span>\r\n </div>\r\n </label>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Brands */}\r\n <div>\r\n <button\r\n onClick={() => toggleSection('brands')}\r\n className=\"flex items-center justify-between w-full mb-3\"\r\n >\r\n <h3 className=\"font-medium text-gray-900 flex items-center\">\r\n <Tag className=\"h-4 w-4 mr-2\" />\r\n Brands\r\n </h3>\r\n {expandedSections.has('brands') ? (\r\n <ChevronDown className=\"h-4 w-4 text-gray-400\" />\r\n ) : (\r\n <ChevronRight className=\"h-4 w-4 text-gray-400\" />\r\n )}\r\n </button>\r\n {expandedSections.has('brands') && (\r\n <div className=\"space-y-2\">\r\n {brands.map(brand => (\r\n <label key={brand.name} className=\"flex items-center justify-between\">\r\n <div className=\"flex items-center space-x-2\">\r\n <Checkbox\r\n checked={filters.brands.includes(brand.name)}\r\n onChange={(e) => {\r\n const newBrands = e.target.checked\r\n ? [...filters.brands, brand.name]\r\n : filters.brands.filter(b => b !== brand.name);\r\n handleFilterChange('brands', newBrands);\r\n }}\r\n />\r\n <span className=\"text-sm text-gray-700\">{brand.name}</span>\r\n </div>\r\n <span className=\"text-xs text-gray-500\">({brand.count})</span>\r\n </label>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Vendors */}\r\n <div>\r\n <button\r\n onClick={() => toggleSection('vendors')}\r\n className=\"flex items-center justify-between w-full mb-3\"\r\n >\r\n <h3 className=\"font-medium text-gray-900 flex items-center\">\r\n <Store className=\"h-4 w-4 mr-2\" />\r\n Sellers\r\n </h3>\r\n {expandedSections.has('vendors') ? (\r\n <ChevronDown className=\"h-4 w-4 text-gray-400\" />\r\n ) : (\r\n <ChevronRight className=\"h-4 w-4 text-gray-400\" />\r\n )}\r\n </button>\r\n {expandedSections.has('vendors') && (\r\n <div className=\"space-y-2\">\r\n {vendors.map(vendor => (\r\n <label key={vendor.name} className=\"flex items-center justify-between\">\r\n <div className=\"flex items-center space-x-2\">\r\n <Checkbox\r\n checked={filters.vendors.includes(vendor.name)}\r\n onChange={(e) => {\r\n const newVendors = e.target.checked\r\n ? [...filters.vendors, vendor.name]\r\n : filters.vendors.filter(v => v !== vendor.name);\r\n handleFilterChange('vendors', newVendors);\r\n }}\r\n />\r\n <div>\r\n <div className=\"text-sm text-gray-700\">{vendor.name}</div>\r\n <div className=\"flex items-center space-x-1\">\r\n <Star className=\"h-3 w-3 text-yellow-400 fill-current\" />\r\n <span className=\"text-xs text-gray-500\">{vendor.rating}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <span className=\"text-xs text-gray-500\">({vendor.count})</span>\r\n </label>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Availability */}\r\n <div>\r\n <h3 className=\"font-medium text-gray-900 mb-3 flex items-center\">\r\n <Sliders className=\"h-4 w-4 mr-2\" />\r\n Availability\r\n </h3>\r\n <div className=\"space-y-2\">\r\n <label className=\"flex items-center space-x-2\">\r\n <Checkbox\r\n checked={filters.inStock}\r\n onChange={(e) => handleFilterChange('inStock', e.target.checked)}\r\n />\r\n <span className=\"text-sm text-gray-700\">In Stock Only</span>\r\n </label>\r\n </div>\r\n </div>\r\n\r\n {/* Active Filters Summary */}\r\n {getActiveFiltersCount() > 0 && (\r\n <div className=\"pt-4 border-t border-gray-200\">\r\n <div className=\"flex items-center justify-between mb-2\">\r\n <h3 className=\"font-medium text-gray-900\">Active Filters</h3>\r\n <Button variant=\"ghost\" size=\"sm\" onClick={onClearFilters}>\r\n Clear All\r\n </Button>\r\n </div>\r\n <div className=\"flex flex-wrap gap-2\">\r\n {filters.categories.map(category => (\r\n <Badge key={category} variant=\"outline\" className=\"text-xs\">\r\n {category}\r\n <button\r\n onClick={() => handleFilterChange('categories', \r\n filters.categories.filter(c => c !== category)\r\n )}\r\n className=\"ml-1 hover:text-red-600\"\r\n >\r\n <X className=\"h-3 w-3\" />\r\n </button>\r\n </Badge>\r\n ))}\r\n {filters.brands.map(brand => (\r\n <Badge key={brand} variant=\"outline\" className=\"text-xs\">\r\n {brand}\r\n <button\r\n onClick={() => handleFilterChange('brands', \r\n filters.brands.filter(b => b !== brand)\r\n )}\r\n className=\"ml-1 hover:text-red-600\"\r\n >\r\n <X className=\"h-3 w-3\" />\r\n </button>\r\n </Badge>\r\n ))}\r\n {filters.rating > 0 && (\r\n <Badge variant=\"outline\" className=\"text-xs\">\r\n {filters.rating}+ stars\r\n <button\r\n onClick={() => handleFilterChange('rating', 0)}\r\n className=\"ml-1 hover:text-red-600\"\r\n >\r\n <X className=\"h-3 w-3\" />\r\n </button>\r\n </Badge>\r\n )}\r\n {filters.inStock && (\r\n <Badge variant=\"outline\" className=\"text-xs\">\r\n In Stock\r\n <button\r\n onClick={() => handleFilterChange('inStock', false)}\r\n className=\"ml-1 hover:text-red-600\"\r\n >\r\n <X className=\"h-3 w-3\" />\r\n </button>\r\n </Badge>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </CardContent>\r\n </Card>\r\n </div>\r\n </div>\r\n );\r\n};"],"names":["_jsxs","_jsx","Grid"],"mappings":"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"}
1
+ {"version":3,"file":"MarketplaceSidebar.js","sources":["../../../src/components/Marketplace/MarketplaceSidebar.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { ChevronDown, ChevronRight, Star, X, Filter, Sliders, Tag, Store, Grid2x2 as Grid } from 'lucide-react';\nimport { Button } from '../Button';\nimport { Input } from '../Input';\nimport { Card, CardHeader, CardTitle, CardContent } from '../Card';\nimport { Badge } from '../Badge';\nimport { Checkbox } from '../Checkbox';\nimport { cn } from '../../utils/cn';\nimport type { FilterOptions } from './types';\n\ninterface MarketplaceSidebarProps {\n filters: FilterOptions;\n onFiltersChange: (filters: FilterOptions) => void;\n onClearFilters: () => void;\n className?: string;\n collapsed?: boolean;\n onToggleCollapse?: () => void;\n}\n\ninterface CategoryNode {\n id: string;\n name: string;\n count: number;\n children?: CategoryNode[];\n}\n\nconst categoryTree: CategoryNode[] = [\n {\n id: 'electronics',\n name: 'Electronics',\n count: 156,\n children: [\n { id: 'smartphones', name: 'Smartphones', count: 45 },\n { id: 'laptops', name: 'Laptops', count: 32 },\n { id: 'headphones', name: 'Headphones', count: 28 },\n { id: 'cameras', name: 'Cameras', count: 21 },\n { id: 'accessories', name: 'Accessories', count: 30 },\n ],\n },\n {\n id: 'clothing',\n name: 'Clothing & Fashion',\n count: 234,\n children: [\n { id: 'mens', name: \"Men's Clothing\", count: 89 },\n { id: 'womens', name: \"Women's Clothing\", count: 112 },\n { id: 'shoes', name: 'Shoes', count: 67 },\n { id: 'accessories-fashion', name: 'Fashion Accessories', count: 45 },\n ],\n },\n {\n id: 'home',\n name: 'Home & Garden',\n count: 178,\n children: [\n { id: 'furniture', name: 'Furniture', count: 56 },\n { id: 'decor', name: 'Home Decor', count: 43 },\n { id: 'kitchen', name: 'Kitchen & Dining', count: 38 },\n { id: 'garden', name: 'Garden & Outdoor', count: 41 },\n ],\n },\n {\n id: 'sports',\n name: 'Sports & Outdoors',\n count: 145,\n children: [\n { id: 'fitness', name: 'Fitness Equipment', count: 34 },\n { id: 'outdoor', name: 'Outdoor Recreation', count: 52 },\n { id: 'sports-apparel', name: 'Sports Apparel', count: 59 },\n ],\n },\n];\n\nconst brands = [\n { name: 'Apple', count: 45 },\n { name: 'Samsung', count: 38 },\n { name: 'Nike', count: 67 },\n { name: 'Adidas', count: 54 },\n { name: 'Sony', count: 32 },\n { name: 'LG', count: 28 },\n { name: 'Canon', count: 21 },\n { name: 'Dell', count: 19 },\n];\n\nconst vendors = [\n { name: 'TechWorld Store', count: 89, rating: 4.8 },\n { name: 'Fashion Hub', count: 76, rating: 4.6 },\n { name: 'Home Essentials', count: 65, rating: 4.7 },\n { name: 'Sports Central', count: 54, rating: 4.5 },\n { name: 'Electronics Plus', count: 43, rating: 4.9 },\n];\n\nexport const MarketplaceSidebar: React.FC<MarketplaceSidebarProps> = ({\n filters,\n onFiltersChange,\n onClearFilters,\n className = '',\n collapsed = false,\n onToggleCollapse,\n}) => {\n const [expandedCategories, setExpandedCategories] = useState<Set<string>>(new Set(['electronics']));\n const [expandedSections, setExpandedSections] = useState<Set<string>>(\n new Set(['categories', 'price', 'rating', 'brands'])\n );\n\n const toggleCategory = (categoryId: string) => {\n setExpandedCategories(prev => {\n const newSet = new Set(prev);\n if (newSet.has(categoryId)) {\n newSet.delete(categoryId);\n } else {\n newSet.add(categoryId);\n }\n return newSet;\n });\n };\n\n const toggleSection = (sectionId: string) => {\n setExpandedSections(prev => {\n const newSet = new Set(prev);\n if (newSet.has(sectionId)) {\n newSet.delete(sectionId);\n } else {\n newSet.add(sectionId);\n }\n return newSet;\n });\n };\n\n const handleFilterChange = (filterType: keyof FilterOptions, value: any) => {\n onFiltersChange({\n ...filters,\n [filterType]: value,\n });\n };\n\n const getActiveFiltersCount = () => {\n let count = 0;\n if (filters.categories.length > 0) count += filters.categories.length;\n if (filters.brands.length > 0) count += filters.brands.length;\n if (filters.vendors.length > 0) count += filters.vendors.length;\n if (filters.rating > 0) count += 1;\n if (filters.inStock) count += 1;\n if (filters.priceRange[0] > 0 || filters.priceRange[1] < 1000) count += 1;\n return count;\n };\n\n const renderCategoryTree = (categories: CategoryNode[], level = 0) => {\n return categories.map((category) => (\n <div key={category.id} className={cn('', level > 0 && 'ml-4')}>\n <div className=\"flex items-center justify-between py-1\">\n <label className=\"flex items-center space-x-2 flex-1 cursor-pointer\">\n <Checkbox\n checked={filters.categories.includes(category.id)}\n onChange={(e) => {\n const newCategories = e.target.checked\n ? [...filters.categories, category.id]\n : filters.categories.filter(c => c !== category.id);\n handleFilterChange('categories', newCategories);\n }}\n />\n <span className=\"text-sm text-gray-700 flex-1\">{category.name}</span>\n <span className=\"text-xs text-gray-500\">({category.count})</span>\n </label>\n {category.children && (\n <button\n onClick={() => toggleCategory(category.id)}\n className=\"p-1 hover:bg-gray-100 rounded\"\n >\n {expandedCategories.has(category.id) ? (\n <ChevronDown className=\"h-3 w-3 text-gray-400\" />\n ) : (\n <ChevronRight className=\"h-3 w-3 text-gray-400\" />\n )}\n </button>\n )}\n </div>\n {category.children && expandedCategories.has(category.id) && (\n <div className=\"mt-1\">\n {renderCategoryTree(category.children, level + 1)}\n </div>\n )}\n </div>\n ));\n };\n\n if (collapsed) {\n return (\n <div className={cn('w-16 flex-shrink-0 bg-background border-r border-border rounded-xl hidden lg:block', className)}>\n {/* Fixed minimized sidebar for desktop */}\n <div className=\"fixed top-16 left-0 h-[calc(100vh-4rem)] w-16 z-40 bg-background border-r border-border rounded-xl\">\n <Card className=\"h-full shadow-none border-none bg-transparent\">\n <CardContent className=\"p-2\">\n <div className=\"flex flex-col items-center space-y-3\">\n {/* Main Filter Icon (Expand) */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n aria-label=\"Expand filters\"\n title=\"Expand filters\"\n onClick={onToggleCollapse}\n className=\"w-10 h-10 flex items-center justify-center text-muted-foreground hover:bg-accent focus:ring-2 focus:ring-primary rounded-lg\"\n >\n <Filter className=\"h-5 w-5\" />\n </Button>\n {/* Categories */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n aria-label=\"Categories\"\n title=\"Categories\"\n className=\"w-10 h-10 flex items-center justify-center text-muted-foreground hover:bg-accent focus:ring-2 focus:ring-primary rounded-lg\"\n tabIndex={0}\n >\n <Grid className=\"h-5 w-5\" />\n </Button>\n {/* Price */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n aria-label=\"Price Range\"\n title=\"Price Range\"\n className=\"w-10 h-10 flex items-center justify-center text-muted-foreground hover:bg-accent focus:ring-2 focus:ring-primary rounded-lg\"\n tabIndex={0}\n >\n <Tag className=\"h-5 w-5\" />\n </Button>\n {/* Rating */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n aria-label=\"Customer Rating\"\n title=\"Customer Rating\"\n className=\"w-10 h-10 flex items-center justify-center text-muted-foreground hover:bg-accent focus:ring-2 focus:ring-primary rounded-lg\"\n tabIndex={0}\n >\n <Star className=\"h-5 w-5\" />\n </Button>\n {/* Brands */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n aria-label=\"Brands\"\n title=\"Brands\"\n className=\"w-10 h-10 flex items-center justify-center text-muted-foreground hover:bg-accent focus:ring-2 focus:ring-primary rounded-lg\"\n tabIndex={0}\n >\n <Tag className=\"h-5 w-5\" />\n </Button>\n {/* Vendors */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n aria-label=\"Sellers\"\n title=\"Sellers\"\n className=\"w-10 h-10 flex items-center justify-center text-muted-foreground hover:bg-accent focus:ring-2 focus:ring-primary rounded-lg\"\n tabIndex={0}\n >\n <Store className=\"h-5 w-5\" />\n </Button>\n {/* Availability */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n aria-label=\"Availability\"\n title=\"Availability\"\n className=\"w-10 h-10 flex items-center justify-center text-muted-foreground hover:bg-accent focus:ring-2 focus:ring-primary rounded-lg\"\n tabIndex={0}\n >\n <Sliders className=\"h-5 w-5\" />\n </Button>\n {/* Active Filter Count Badge */}\n {getActiveFiltersCount() > 0 && (\n <Badge variant=\"default\" className=\"text-xs bg-primary text-primary-foreground mt-2\">\n {getActiveFiltersCount()}\n </Badge>\n )}\n </div>\n </CardContent>\n </Card>\n </div>\n </div>\n );\n }\n\n return (\n <div className={cn('w-80 flex-shrink-0 hidden lg:block', className)}>\n {/* Fixed sidebar for desktop */}\n {/* Adjust top offset to match navbar height (e.g., 64px = 16 * 4) */}\n <div className=\"fixed top-16 left-0 h-[calc(100vh-4rem)] w-80 z-30 bg-background border-r border-border pt-4\">\n <Card className=\"h-full shadow-none border-none bg-transparent\">\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-center justify-between\">\n <CardTitle className=\"flex items-center text-lg\">\n <Filter className=\"h-5 w-5 mr-2\" />\n Filters\n {getActiveFiltersCount() > 0 && (\n <Badge variant=\"default\" className=\"ml-2\">\n {getActiveFiltersCount()}\n </Badge>\n )}\n </CardTitle>\n <div className=\"flex items-center space-x-2\">\n <Button variant=\"ghost\" size=\"sm\" onClick={onClearFilters}>\n Clear All\n </Button>\n {onToggleCollapse && (\n <Button variant=\"ghost\" size=\"sm\" onClick={onToggleCollapse}>\n <X className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n </div>\n </CardHeader>\n\n <CardContent className=\"space-y-6 max-h-[calc(100vh-200px)] overflow-y-auto\">\n {/* Categories */}\n <div>\n <button\n onClick={() => toggleSection('categories')}\n className=\"flex items-center justify-between w-full mb-3\"\n >\n <h3 className=\"font-medium text-gray-900 flex items-center\">\n <Grid className=\"h-4 w-4 mr-2\" />\n Categories\n </h3>\n {expandedSections.has('categories') ? (\n <ChevronDown className=\"h-4 w-4 text-gray-400\" />\n ) : (\n <ChevronRight className=\"h-4 w-4 text-gray-400\" />\n )}\n </button>\n {expandedSections.has('categories') && (\n <div className=\"space-y-1\">\n {renderCategoryTree(categoryTree)}\n </div>\n )}\n </div>\n\n {/* Price Range */}\n <div>\n <button\n onClick={() => toggleSection('price')}\n className=\"flex items-center justify-between w-full mb-3\"\n >\n <h3 className=\"font-medium text-gray-900 flex items-center\">\n <Tag className=\"h-4 w-4 mr-2\" />\n Price Range\n </h3>\n {expandedSections.has('price') ? (\n <ChevronDown className=\"h-4 w-4 text-gray-400\" />\n ) : (\n <ChevronRight className=\"h-4 w-4 text-gray-400\" />\n )}\n </button>\n {expandedSections.has('price') && (\n <div className=\"space-y-3\">\n <div className=\"flex items-center space-x-2\">\n <Input\n type=\"number\"\n placeholder=\"Min\"\n value={filters.priceRange[0]}\n onChange={(e) => handleFilterChange('priceRange', [\n parseInt(e.target.value) || 0,\n filters.priceRange[1]\n ])}\n className=\"w-20 text-sm\"\n />\n <span className=\"text-gray-400\">-</span>\n <Input\n type=\"number\"\n placeholder=\"Max\"\n value={filters.priceRange[1]}\n onChange={(e) => handleFilterChange('priceRange', [\n filters.priceRange[0],\n parseInt(e.target.value) || 1000\n ])}\n className=\"w-20 text-sm\"\n />\n </div>\n \n {/* Quick Price Ranges */}\n <div className=\"space-y-1\">\n {[\n { label: 'Under $25', range: [0, 25] },\n { label: '$25 - $50', range: [25, 50] },\n { label: '$50 - $100', range: [50, 100] },\n { label: '$100 - $200', range: [100, 200] },\n { label: 'Over $200', range: [200, 1000] },\n ].map((option) => (\n <label key={option.label} className=\"flex items-center space-x-2\">\n <Checkbox\n checked={\n filters.priceRange[0] === option.range[0] &&\n filters.priceRange[1] === option.range[1]\n }\n onChange={(e) => {\n if (e.target.checked) {\n handleFilterChange('priceRange', option.range);\n }\n }}\n />\n <span className=\"text-sm text-gray-700\">{option.label}</span>\n </label>\n ))}\n </div>\n </div>\n )}\n </div>\n\n {/* Rating */}\n <div>\n <button\n onClick={() => toggleSection('rating')}\n className=\"flex items-center justify-between w-full mb-3\"\n >\n <h3 className=\"font-medium text-gray-900 flex items-center\">\n <Star className=\"h-4 w-4 mr-2\" />\n Customer Rating\n </h3>\n {expandedSections.has('rating') ? (\n <ChevronDown className=\"h-4 w-4 text-gray-400\" />\n ) : (\n <ChevronRight className=\"h-4 w-4 text-gray-400\" />\n )}\n </button>\n {expandedSections.has('rating') && (\n <div className=\"space-y-2\">\n {[4, 3, 2, 1].map(rating => (\n <label key={rating} className=\"flex items-center space-x-2\">\n <Checkbox\n checked={filters.rating === rating}\n onChange={(e) => {\n handleFilterChange('rating', e.target.checked ? rating : 0);\n }}\n />\n <div className=\"flex items-center space-x-1\">\n {[1, 2, 3, 4, 5].map(star => (\n <Star\n key={star}\n className={`h-4 w-4 ${\n star <= rating ? 'text-yellow-400 fill-current' : 'text-gray-300'\n }`}\n />\n ))}\n <span className=\"text-sm text-gray-700\">& up</span>\n </div>\n </label>\n ))}\n </div>\n )}\n </div>\n\n {/* Brands */}\n <div>\n <button\n onClick={() => toggleSection('brands')}\n className=\"flex items-center justify-between w-full mb-3\"\n >\n <h3 className=\"font-medium text-gray-900 flex items-center\">\n <Tag className=\"h-4 w-4 mr-2\" />\n Brands\n </h3>\n {expandedSections.has('brands') ? (\n <ChevronDown className=\"h-4 w-4 text-gray-400\" />\n ) : (\n <ChevronRight className=\"h-4 w-4 text-gray-400\" />\n )}\n </button>\n {expandedSections.has('brands') && (\n <div className=\"space-y-2\">\n {brands.map(brand => (\n <label key={brand.name} className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-2\">\n <Checkbox\n checked={filters.brands.includes(brand.name)}\n onChange={(e) => {\n const newBrands = e.target.checked\n ? [...filters.brands, brand.name]\n : filters.brands.filter(b => b !== brand.name);\n handleFilterChange('brands', newBrands);\n }}\n />\n <span className=\"text-sm text-gray-700\">{brand.name}</span>\n </div>\n <span className=\"text-xs text-gray-500\">({brand.count})</span>\n </label>\n ))}\n </div>\n )}\n </div>\n\n {/* Vendors */}\n <div>\n <button\n onClick={() => toggleSection('vendors')}\n className=\"flex items-center justify-between w-full mb-3\"\n >\n <h3 className=\"font-medium text-gray-900 flex items-center\">\n <Store className=\"h-4 w-4 mr-2\" />\n Sellers\n </h3>\n {expandedSections.has('vendors') ? (\n <ChevronDown className=\"h-4 w-4 text-gray-400\" />\n ) : (\n <ChevronRight className=\"h-4 w-4 text-gray-400\" />\n )}\n </button>\n {expandedSections.has('vendors') && (\n <div className=\"space-y-2\">\n {vendors.map(vendor => (\n <label key={vendor.name} className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-2\">\n <Checkbox\n checked={filters.vendors.includes(vendor.name)}\n onChange={(e) => {\n const newVendors = e.target.checked\n ? [...filters.vendors, vendor.name]\n : filters.vendors.filter(v => v !== vendor.name);\n handleFilterChange('vendors', newVendors);\n }}\n />\n <div>\n <div className=\"text-sm text-gray-700\">{vendor.name}</div>\n <div className=\"flex items-center space-x-1\">\n <Star className=\"h-3 w-3 text-yellow-400 fill-current\" />\n <span className=\"text-xs text-gray-500\">{vendor.rating}</span>\n </div>\n </div>\n </div>\n <span className=\"text-xs text-gray-500\">({vendor.count})</span>\n </label>\n ))}\n </div>\n )}\n </div>\n\n {/* Availability */}\n <div>\n <h3 className=\"font-medium text-gray-900 mb-3 flex items-center\">\n <Sliders className=\"h-4 w-4 mr-2\" />\n Availability\n </h3>\n <div className=\"space-y-2\">\n <label className=\"flex items-center space-x-2\">\n <Checkbox\n checked={filters.inStock}\n onChange={(e) => handleFilterChange('inStock', e.target.checked)}\n />\n <span className=\"text-sm text-gray-700\">In Stock Only</span>\n </label>\n </div>\n </div>\n\n {/* Active Filters Summary */}\n {getActiveFiltersCount() > 0 && (\n <div className=\"pt-4 border-t border-gray-200\">\n <div className=\"flex items-center justify-between mb-2\">\n <h3 className=\"font-medium text-gray-900\">Active Filters</h3>\n <Button variant=\"ghost\" size=\"sm\" onClick={onClearFilters}>\n Clear All\n </Button>\n </div>\n <div className=\"flex flex-wrap gap-2\">\n {filters.categories.map(category => (\n <Badge key={category} variant=\"outline\" className=\"text-xs\">\n {category}\n <button\n onClick={() => handleFilterChange('categories', \n filters.categories.filter(c => c !== category)\n )}\n className=\"ml-1 hover:text-red-600\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n </Badge>\n ))}\n {filters.brands.map(brand => (\n <Badge key={brand} variant=\"outline\" className=\"text-xs\">\n {brand}\n <button\n onClick={() => handleFilterChange('brands', \n filters.brands.filter(b => b !== brand)\n )}\n className=\"ml-1 hover:text-red-600\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n </Badge>\n ))}\n {filters.rating > 0 && (\n <Badge variant=\"outline\" className=\"text-xs\">\n {filters.rating}+ stars\n <button\n onClick={() => handleFilterChange('rating', 0)}\n className=\"ml-1 hover:text-red-600\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n </Badge>\n )}\n {filters.inStock && (\n <Badge variant=\"outline\" className=\"text-xs\">\n In Stock\n <button\n onClick={() => handleFilterChange('inStock', false)}\n className=\"ml-1 hover:text-red-600\"\n >\n <X className=\"h-3 w-3\" />\n </button>\n </Badge>\n )}\n </div>\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n </div>\n );\n};"],"names":["_jsxs","_jsx","Grid"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MarketplaceControls.js","sources":["../../../../src/components/Marketplace/components/MarketplaceControls.tsx"],"sourcesContent":["import { Search, Filter, Grid2x2 as Grid, List } from 'lucide-react';\r\nimport { Button } from '../../Button';\r\nimport { Input } from '../../Input';\r\n\r\nexport interface MarketplaceControlsProps {\r\n searchQuery: string;\r\n onSearchChange: (value: string) => void;\r\n shouldFocusSearch?: boolean;\r\n sortBy: string;\r\n onSortChange: (value: string) => void;\r\n viewMode: 'grid' | 'list';\r\n onViewModeChange: (mode: 'grid' | 'list') => void;\r\n onShowFilters: () => void;\r\n sortOptions: { value: string; label: string }[];\r\n className?: string;\r\n}\r\n\r\nimport React, { useRef, useEffect } from 'react';\r\n\r\nexport const MarketplaceControls: React.FC<MarketplaceControlsProps> = ({\r\n searchQuery,\r\n onSearchChange,\r\n shouldFocusSearch,\r\n sortBy,\r\n onSortChange,\r\n viewMode,\r\n onViewModeChange,\r\n onShowFilters,\r\n sortOptions,\r\n className = '',\r\n}) => {\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n\r\n useEffect(() => {\r\n if (shouldFocusSearch && inputRef.current) {\r\n inputRef.current.focus();\r\n // Move cursor to end\r\n const val = inputRef.current.value;\r\n inputRef.current.value = '';\r\n inputRef.current.value = val;\r\n }\r\n }, [shouldFocusSearch]);\r\n\r\n return (\r\n <div className={`flex flex-col gap-2 sm:flex-row sm:items-center sm:space-x-4 mt-2 lg:mt-0 w-full sm:w-auto ${className}`}>\r\n <div className=\"relative w-full sm:w-auto\">\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 ref={inputRef}\r\n placeholder=\"Search products...\"\r\n value={searchQuery}\r\n onChange={(e) => onSearchChange(e.target.value)}\r\n className=\"pl-10 w-full sm:w-64\"\r\n />\r\n </div>\r\n <select\r\n value={sortBy}\r\n onChange={(e) => onSortChange(e.target.value)}\r\n className=\"border border-gray-300 rounded-lg px-3 py-2 bg-white w-full sm:w-auto\"\r\n >\r\n {sortOptions.map(option => (\r\n <option key={option.value} value={option.value}>\r\n {option.label}\r\n </option>\r\n ))}\r\n </select>\r\n <div className=\"flex items-center bg-gray-100 rounded-lg p-1 w-full sm:w-auto\">\r\n <Button\r\n variant={viewMode === 'grid' ? 'primary' : 'ghost'}\r\n size=\"sm\"\r\n onClick={() => onViewModeChange('grid')}\r\n className=\"flex-1 sm:flex-none\"\r\n >\r\n <Grid className=\"h-4 w-4\" />\r\n </Button>\r\n <Button\r\n variant={viewMode === 'list' ? 'primary' : 'ghost'}\r\n size=\"sm\"\r\n onClick={() => onViewModeChange('list')}\r\n className=\"flex-1 sm:flex-none\"\r\n >\r\n <List className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n <Button\r\n variant=\"outline\"\r\n onClick={onShowFilters}\r\n className=\"sm:w-auto w-full lg:hidden\"\r\n >\r\n <Filter className=\"mr-2 h-4 w-4\" />\r\n Filters\r\n </Button>\r\n </div>\r\n );\r\n};"],"names":["_jsxs","_jsx","Grid"],"mappings":";;;;;;AAmBO,MAAM,mBAAmB,GAAuC,CAAC,EACtE,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,SAAS,GAAG,EAAE,GACf,KAAI;AACH,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC;IAE/C,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,iBAAiB,IAAI,QAAQ,CAAC,OAAO,EAAE;AACzC,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE;;AAExB,YAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK;AAClC,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE;AAC3B,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG;QAC9B;AACF,IAAA,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAEvB,QACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAA,2FAAA,EAA8F,SAAS,CAAA,CAAE,EAAA,QAAA,EAAA,CACvHA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,2BAA2B,aACxCC,GAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,0EAA0E,EAAA,CAAG,EAC/FA,GAAA,CAAC,KAAK,EAAA,EACJ,GAAG,EAAE,QAAQ,EACb,WAAW,EAAC,oBAAoB,EAChC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC/C,SAAS,EAAC,sBAAsB,EAAA,CAChC,IACE,EACNA,GAAA,CAAA,QAAA,EAAA,EACE,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7C,SAAS,EAAC,uEAAuE,EAAA,QAAA,EAEhF,WAAW,CAAC,GAAG,CAAC,MAAM,KACrBA,GAAA,CAAA,QAAA,EAAA,EAA2B,KAAK,EAAE,MAAM,CAAC,KAAK,EAAA,QAAA,EAC3C,MAAM,CAAC,KAAK,EAAA,EADF,MAAM,CAAC,KAAK,CAEhB,CACV,CAAC,EAAA,CACK,EACTD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+DAA+D,aAC5EC,GAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,GAAG,OAAO,EAClD,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,EACvC,SAAS,EAAC,qBAAqB,EAAA,QAAA,EAE/BA,IAACC,OAAI,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,GACrB,EACTD,GAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,GAAG,OAAO,EAClD,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,EACvC,SAAS,EAAC,qBAAqB,EAAA,QAAA,EAE/BA,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,GACrB,CAAA,EAAA,CACL,EACND,IAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAAA,CAEtCC,GAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,SAAA,CAAA,EAAA,CAE5B,CAAA,EAAA,CACL;AAEV;;;;"}
1
+ {"version":3,"file":"MarketplaceControls.js","sources":["../../../../src/components/Marketplace/components/MarketplaceControls.tsx"],"sourcesContent":["import { Search, Filter, Grid2x2 as Grid, List } from 'lucide-react';\nimport { Button } from '../../Button';\nimport { Input } from '../../Input';\n\nexport interface MarketplaceControlsProps {\n searchQuery: string;\n onSearchChange: (value: string) => void;\n shouldFocusSearch?: boolean;\n sortBy: string;\n onSortChange: (value: string) => void;\n viewMode: 'grid' | 'list';\n onViewModeChange: (mode: 'grid' | 'list') => void;\n onShowFilters: () => void;\n sortOptions: { value: string; label: string }[];\n className?: string;\n}\n\nimport React, { useRef, useEffect } from 'react';\n\nexport const MarketplaceControls: React.FC<MarketplaceControlsProps> = ({\n searchQuery,\n onSearchChange,\n shouldFocusSearch,\n sortBy,\n onSortChange,\n viewMode,\n onViewModeChange,\n onShowFilters,\n sortOptions,\n className = '',\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (shouldFocusSearch && inputRef.current) {\n inputRef.current.focus();\n // Move cursor to end\n const val = inputRef.current.value;\n inputRef.current.value = '';\n inputRef.current.value = val;\n }\n }, [shouldFocusSearch]);\n\n return (\n <div className={`flex flex-col gap-2 sm:flex-row sm:items-center sm:space-x-4 mt-2 lg:mt-0 w-full sm:w-auto ${className}`}>\n <div className=\"relative w-full sm:w-auto\">\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-gray-400\" />\n <Input\n ref={inputRef}\n placeholder=\"Search products...\"\n value={searchQuery}\n onChange={(e) => onSearchChange(e.target.value)}\n className=\"pl-10 w-full sm:w-64\"\n />\n </div>\n <select\n value={sortBy}\n onChange={(e) => onSortChange(e.target.value)}\n className=\"border border-gray-300 rounded-lg px-3 py-2 bg-white w-full sm:w-auto\"\n >\n {sortOptions.map(option => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n <div className=\"flex items-center bg-gray-100 rounded-lg p-1 w-full sm:w-auto\">\n <Button\n variant={viewMode === 'grid' ? 'primary' : 'ghost'}\n size=\"sm\"\n onClick={() => onViewModeChange('grid')}\n className=\"flex-1 sm:flex-none\"\n >\n <Grid className=\"h-4 w-4\" />\n </Button>\n <Button\n variant={viewMode === 'list' ? 'primary' : 'ghost'}\n size=\"sm\"\n onClick={() => onViewModeChange('list')}\n className=\"flex-1 sm:flex-none\"\n >\n <List className=\"h-4 w-4\" />\n </Button>\n </div>\n <Button\n variant=\"outline\"\n onClick={onShowFilters}\n className=\"sm:w-auto w-full lg:hidden\"\n >\n <Filter className=\"mr-2 h-4 w-4\" />\n Filters\n </Button>\n </div>\n );\n};"],"names":["_jsxs","_jsx","Grid"],"mappings":";;;;;;AAmBO,MAAM,mBAAmB,GAAuC,CAAC,EACtE,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,SAAS,GAAG,EAAE,GACf,KAAI;AACH,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC;IAE/C,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,iBAAiB,IAAI,QAAQ,CAAC,OAAO,EAAE;AACzC,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE;;AAExB,YAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK;AAClC,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE;AAC3B,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG;QAC9B;AACF,IAAA,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAEvB,QACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAA,2FAAA,EAA8F,SAAS,CAAA,CAAE,EAAA,QAAA,EAAA,CACvHA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,2BAA2B,aACxCC,GAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,0EAA0E,EAAA,CAAG,EAC/FA,GAAA,CAAC,KAAK,EAAA,EACJ,GAAG,EAAE,QAAQ,EACb,WAAW,EAAC,oBAAoB,EAChC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC/C,SAAS,EAAC,sBAAsB,EAAA,CAChC,IACE,EACNA,GAAA,CAAA,QAAA,EAAA,EACE,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7C,SAAS,EAAC,uEAAuE,EAAA,QAAA,EAEhF,WAAW,CAAC,GAAG,CAAC,MAAM,KACrBA,GAAA,CAAA,QAAA,EAAA,EAA2B,KAAK,EAAE,MAAM,CAAC,KAAK,EAAA,QAAA,EAC3C,MAAM,CAAC,KAAK,EAAA,EADF,MAAM,CAAC,KAAK,CAEhB,CACV,CAAC,EAAA,CACK,EACTD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+DAA+D,aAC5EC,GAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,GAAG,OAAO,EAClD,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,EACvC,SAAS,EAAC,qBAAqB,EAAA,QAAA,EAE/BA,IAACC,OAAI,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,GACrB,EACTD,GAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,GAAG,OAAO,EAClD,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,EACvC,SAAS,EAAC,qBAAqB,EAAA,QAAA,EAE/BA,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,GACrB,CAAA,EAAA,CACL,EACND,IAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAAA,CAEtCC,GAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,SAAA,CAAA,EAAA,CAE5B,CAAA,EAAA,CACL;AAEV;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MarketplaceHeader.js","sources":["../../../../src/components/Marketplace/components/MarketplaceHeader.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Search, ShoppingCart, Bell, Menu, Package } from 'lucide-react';\r\nimport { Button } from '../../Button';\r\nimport { Input } from '../../Input';\r\nimport { Badge } from '../../Badge';\r\nimport { Avatar, AvatarImage, AvatarFallback } from '../../Avatar';\r\n\r\nexport interface MarketplaceHeaderProps {\r\n searchQuery: string;\r\n onSearchChange: (query: string) => void;\r\n cartItemCount: number;\r\n onCartClick: () => void;\r\n onMenuToggle: () => void;\r\n userRole?: 'buyer' | 'seller' | 'admin';\r\n className?: string;\r\n}\r\n\r\n/**\r\n * Marketplace header component with search, cart, and user controls\r\n * Extracted from main marketplace component for reusability\r\n */\r\nexport const MarketplaceHeader: React.FC<MarketplaceHeaderProps> = ({\r\n searchQuery,\r\n onSearchChange,\r\n cartItemCount,\r\n onCartClick,\r\n onMenuToggle,\r\n userRole = 'buyer',\r\n className = '',\r\n}) => {\r\n return (\r\n <header className={`bg-white border-b border-gray-200 sticky top-0 z-40 ${className}`}>\r\n <div className=\"px-6 py-4\">\r\n <div className=\"flex items-center justify-between\">\r\n {/* Left Section */}\r\n <div className=\"flex items-center space-x-4\">\r\n \r\n <div className=\"flex items-center space-x-3\">\r\n <div className=\"w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center\">\r\n <Package className=\"h-5 w-5 text-white\" />\r\n </div>\r\n <div>\r\n <h1 className=\"font-bold text-xl text-gray-900\">MarketPlace</h1>\r\n <p className=\"text-xs text-gray-500\">Your digital marketplace</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n \r\n\r\n {/* Right Section */}\r\n <div className=\"flex items-center space-x-3\">\r\n {/* Cart */}\r\n <div className=\"relative\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={onCartClick}\r\n className=\"relative\"\r\n >\r\n <ShoppingCart className=\"h-5 w-5\" />\r\n {cartItemCount > 0 && (\r\n <Badge \r\n variant=\"danger\" \r\n className=\"absolute -top-1 -right-1 h-5 w-5 text-xs p-0 flex items-center justify-center\"\r\n >\r\n {cartItemCount}\r\n </Badge>\r\n )}\r\n </Button>\r\n </div>\r\n\r\n {/* Notifications */}\r\n <Button variant=\"ghost\" size=\"sm\" className=\"relative\">\r\n <Bell className=\"h-5 w-5\" />\r\n <Badge \r\n variant=\"danger\" \r\n className=\"absolute -top-1 -right-1 h-4 w-4 text-xs p-0 flex items-center justify-center\"\r\n >\r\n 3\r\n </Badge>\r\n </Button>\r\n\r\n {/* User Profile */}\r\n <div className=\"flex items-center space-x-3 pl-3 border-l border-gray-200\">\r\n <div className=\"hidden sm:block text-right\">\r\n <p className=\"text-sm font-medium text-gray-900\">John Doe</p>\r\n <p className=\"text-xs text-gray-500 capitalize\">{userRole}</p>\r\n </div>\r\n <Avatar size=\"sm\">\r\n <AvatarImage src=\"https://images.pexels.com/photos/774909/pexels-photo-774909.jpeg?auto=compress&cs=tinysrgb&w=64\" />\r\n <AvatarFallback>JD</AvatarFallback>\r\n </Avatar>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </header>\r\n );\r\n};"],"names":["_jsx","_jsxs"],"mappings":";;;;;;AAiBA;;;AAGG;AACI,MAAM,iBAAiB,GAAqC,CAAC,EAClE,WAAW,EACX,cAAc,EACd,aAAa,EACb,WAAW,EACX,YAAY,EACZ,QAAQ,GAAG,OAAO,EAClB,SAAS,GAAG,EAAE,GACf,KAAI;IACH,QACEA,gBAAQ,SAAS,EAAE,uDAAuD,SAAS,CAAA,CAAE,YACnFA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EACxBC,cAAK,SAAS,EAAC,mCAAmC,EAAA,QAAA,EAAA,CAEhDD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6BAA6B,EAAA,QAAA,EAE1CC,cAAK,SAAS,EAAC,6BAA6B,EAAA,QAAA,EAAA,CAC1CD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oEAAoE,EAAA,QAAA,EACjFA,GAAA,CAAC,OAAO,EAAA,EAAC,SAAS,EAAC,oBAAoB,GAAG,EAAA,CACtC,EACNC,yBACED,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAAA,aAAA,EAAA,CAAiB,EAChEA,WAAG,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAA,0BAAA,EAAA,CAA6B,CAAA,EAAA,CAC7D,IACF,EAAA,CACF,EAKNC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6BAA6B,aAE1CD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,UAAU,EAAA,QAAA,EACvBC,KAAC,MAAM,EAAA,EACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,WAAW,EACpB,SAAS,EAAC,UAAU,EAAA,QAAA,EAAA,CAEpBD,GAAA,CAAC,YAAY,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EACnC,aAAa,GAAG,CAAC,KAChBA,GAAA,CAAC,KAAK,EAAA,EACJ,OAAO,EAAC,QAAQ,EAChB,SAAS,EAAC,+EAA+E,EAAA,QAAA,EAExF,aAAa,EAAA,CACR,CACT,IACM,EAAA,CACL,EAGNC,KAAC,MAAM,EAAA,EAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,UAAU,EAAA,QAAA,EAAA,CACpDD,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EAC5BA,IAAC,KAAK,EAAA,EACJ,OAAO,EAAC,QAAQ,EAChB,SAAS,EAAC,+EAA+E,EAAA,QAAA,EAAA,GAAA,EAAA,CAGnF,CAAA,EAAA,CACD,EAGTC,cAAK,SAAS,EAAC,2DAA2D,EAAA,QAAA,EAAA,CACxEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAAA,CACzCD,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,mCAAmC,EAAA,QAAA,EAAA,UAAA,EAAA,CAAa,EAC7DA,WAAG,SAAS,EAAC,kCAAkC,EAAA,QAAA,EAAE,QAAQ,EAAA,CAAK,CAAA,EAAA,CAC1D,EACNC,IAAA,CAAC,MAAM,EAAA,EAAC,IAAI,EAAC,IAAI,EAAA,QAAA,EAAA,CACfD,IAAC,WAAW,EAAA,EAAC,GAAG,EAAC,iGAAiG,EAAA,CAAG,EACrHA,GAAA,CAAC,cAAc,qBAAoB,CAAA,EAAA,CAC5B,CAAA,EAAA,CACL,IACF,CAAA,EAAA,CACF,EAAA,CACF,EAAA,CACC;AAEb;;;;"}
1
+ {"version":3,"file":"MarketplaceHeader.js","sources":["../../../../src/components/Marketplace/components/MarketplaceHeader.tsx"],"sourcesContent":["import React from 'react';\nimport { Search, ShoppingCart, Bell, Menu, Package } from 'lucide-react';\nimport { Button } from '../../Button';\nimport { Input } from '../../Input';\nimport { Badge } from '../../Badge';\nimport { Avatar, AvatarImage, AvatarFallback } from '../../Avatar';\n\nexport interface MarketplaceHeaderProps {\n searchQuery: string;\n onSearchChange: (query: string) => void;\n cartItemCount: number;\n onCartClick: () => void;\n onMenuToggle: () => void;\n userRole?: 'buyer' | 'seller' | 'admin';\n className?: string;\n}\n\n/**\n * Marketplace header component with search, cart, and user controls\n * Extracted from main marketplace component for reusability\n */\nexport const MarketplaceHeader: React.FC<MarketplaceHeaderProps> = ({\n searchQuery,\n onSearchChange,\n cartItemCount,\n onCartClick,\n onMenuToggle,\n userRole = 'buyer',\n className = '',\n}) => {\n return (\n <header className={`bg-white border-b border-gray-200 sticky top-0 z-40 ${className}`}>\n <div className=\"px-6 py-4\">\n <div className=\"flex items-center justify-between\">\n {/* Left Section */}\n <div className=\"flex items-center space-x-4\">\n \n <div className=\"flex items-center space-x-3\">\n <div className=\"w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center\">\n <Package className=\"h-5 w-5 text-white\" />\n </div>\n <div>\n <h1 className=\"font-bold text-xl text-gray-900\">MarketPlace</h1>\n <p className=\"text-xs text-gray-500\">Your digital marketplace</p>\n </div>\n </div>\n </div>\n\n \n\n {/* Right Section */}\n <div className=\"flex items-center space-x-3\">\n {/* Cart */}\n <div className=\"relative\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onCartClick}\n className=\"relative\"\n >\n <ShoppingCart className=\"h-5 w-5\" />\n {cartItemCount > 0 && (\n <Badge \n variant=\"danger\" \n className=\"absolute -top-1 -right-1 h-5 w-5 text-xs p-0 flex items-center justify-center\"\n >\n {cartItemCount}\n </Badge>\n )}\n </Button>\n </div>\n\n {/* Notifications */}\n <Button variant=\"ghost\" size=\"sm\" className=\"relative\">\n <Bell className=\"h-5 w-5\" />\n <Badge \n variant=\"danger\" \n className=\"absolute -top-1 -right-1 h-4 w-4 text-xs p-0 flex items-center justify-center\"\n >\n 3\n </Badge>\n </Button>\n\n {/* User Profile */}\n <div className=\"flex items-center space-x-3 pl-3 border-l border-gray-200\">\n <div className=\"hidden sm:block text-right\">\n <p className=\"text-sm font-medium text-gray-900\">John Doe</p>\n <p className=\"text-xs text-gray-500 capitalize\">{userRole}</p>\n </div>\n <Avatar size=\"sm\">\n <AvatarImage src=\"https://images.pexels.com/photos/774909/pexels-photo-774909.jpeg?auto=compress&cs=tinysrgb&w=64\" />\n <AvatarFallback>JD</AvatarFallback>\n </Avatar>\n </div>\n </div>\n </div>\n </div>\n </header>\n );\n};"],"names":["_jsx","_jsxs"],"mappings":";;;;;;AAiBA;;;AAGG;AACI,MAAM,iBAAiB,GAAqC,CAAC,EAClE,WAAW,EACX,cAAc,EACd,aAAa,EACb,WAAW,EACX,YAAY,EACZ,QAAQ,GAAG,OAAO,EAClB,SAAS,GAAG,EAAE,GACf,KAAI;IACH,QACEA,gBAAQ,SAAS,EAAE,uDAAuD,SAAS,CAAA,CAAE,YACnFA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EACxBC,cAAK,SAAS,EAAC,mCAAmC,EAAA,QAAA,EAAA,CAEhDD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6BAA6B,EAAA,QAAA,EAE1CC,cAAK,SAAS,EAAC,6BAA6B,EAAA,QAAA,EAAA,CAC1CD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oEAAoE,EAAA,QAAA,EACjFA,GAAA,CAAC,OAAO,EAAA,EAAC,SAAS,EAAC,oBAAoB,GAAG,EAAA,CACtC,EACNC,yBACED,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAAA,aAAA,EAAA,CAAiB,EAChEA,WAAG,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAA,0BAAA,EAAA,CAA6B,CAAA,EAAA,CAC7D,IACF,EAAA,CACF,EAKNC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6BAA6B,aAE1CD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,UAAU,EAAA,QAAA,EACvBC,KAAC,MAAM,EAAA,EACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,WAAW,EACpB,SAAS,EAAC,UAAU,EAAA,QAAA,EAAA,CAEpBD,GAAA,CAAC,YAAY,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EACnC,aAAa,GAAG,CAAC,KAChBA,GAAA,CAAC,KAAK,EAAA,EACJ,OAAO,EAAC,QAAQ,EAChB,SAAS,EAAC,+EAA+E,EAAA,QAAA,EAExF,aAAa,EAAA,CACR,CACT,IACM,EAAA,CACL,EAGNC,KAAC,MAAM,EAAA,EAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,UAAU,EAAA,QAAA,EAAA,CACpDD,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EAC5BA,IAAC,KAAK,EAAA,EACJ,OAAO,EAAC,QAAQ,EAChB,SAAS,EAAC,+EAA+E,EAAA,QAAA,EAAA,GAAA,EAAA,CAGnF,CAAA,EAAA,CACD,EAGTC,cAAK,SAAS,EAAC,2DAA2D,EAAA,QAAA,EAAA,CACxEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAAA,CACzCD,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,mCAAmC,EAAA,QAAA,EAAA,UAAA,EAAA,CAAa,EAC7DA,WAAG,SAAS,EAAC,kCAAkC,EAAA,QAAA,EAAE,QAAQ,EAAA,CAAK,CAAA,EAAA,CAC1D,EACNC,IAAA,CAAC,MAAM,EAAA,EAAC,IAAI,EAAC,IAAI,EAAA,QAAA,EAAA,CACfD,IAAC,WAAW,EAAA,EAAC,GAAG,EAAC,iGAAiG,EAAA,CAAG,EACrHA,GAAA,CAAC,cAAc,qBAAoB,CAAA,EAAA,CAC5B,CAAA,EAAA,CACL,IACF,CAAA,EAAA,CACF,EAAA,CACF,EAAA,CACC;AAEb;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProductCard.js","sources":["../../../../src/components/Marketplace/components/ProductCard.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Star, Heart, ShoppingCart, Eye } from 'lucide-react';\r\nimport { Button } from '../../Button';\r\nimport { Card, CardContent } from '../../Card';\r\nimport { Badge } from '../../Badge';\r\nimport { Image } from '../../Image';\r\nimport type { Product } from '../types';\r\nimport { useBreakpoint } from '../../../hooks/useBreakpoint';\r\n\r\nexport interface ProductCardProps {\r\n product: Product;\r\n onProductClick?: (product: Product) => void;\r\n onAddToCart?: (product: Product) => void;\r\n onQuickView?: (product: Product) => void;\r\n onToggleWishlist?: (productId: string) => void;\r\n isWishlisted?: boolean;\r\n showQuickActions?: boolean;\r\n className?: string;\r\n}\r\n\r\n/** Quick Actions Subcomponent */\r\nconst ProductQuickActions: React.FC<{\r\n isWishlisted: boolean;\r\n onToggleWishlist: (e: React.MouseEvent) => void;\r\n onQuickView: (e: React.MouseEvent) => void;\r\n isMobile: boolean;\r\n}> = ({ isWishlisted, onToggleWishlist, onQuickView, isMobile }) => (\r\n <div\r\n className={`flex ${isMobile ? 'flex-row gap-2 absolute bottom-2 left-2 z-10' : ''}`}\r\n aria-label=\"Product quick actions\"\r\n >\r\n <Button\r\n variant=\"ghost\"\r\n size={isMobile ? 'md' : 'sm'}\r\n onClick={onToggleWishlist}\r\n className={`bg-white/80 hover:bg-white rounded-full p-2 focus:outline-none focus:ring-2 focus:ring-primary transition ${\r\n isMobile ? '' : 'opacity-0 group-hover:opacity-100 absolute top-2 right-2'\r\n }`}\r\n aria-label={isWishlisted ? 'Remove from wishlist' : 'Add to wishlist'}\r\n tabIndex={0}\r\n >\r\n <Heart className={`h-5 w-5 ${isWishlisted ? 'fill-current text-red-500' : ''}`} />\r\n </Button>\r\n <Button\r\n variant=\"ghost\"\r\n size={isMobile ? 'md' : 'sm'}\r\n onClick={onQuickView}\r\n className={`bg-white/80 hover:bg-white rounded-full p-2 focus:outline-none focus:ring-2 focus:ring-primary transition ${\r\n isMobile ? '' : 'opacity-0 group-hover:opacity-100 absolute bottom-2 right-2'\r\n }`}\r\n aria-label=\"Quick view\"\r\n tabIndex={0}\r\n >\r\n <Eye className=\"h-5 w-5\" />\r\n </Button>\r\n </div>\r\n);\r\n\r\n/** Overlay Subcomponent */\r\nconst ProductOverlay: React.FC<{\r\n discount?: number;\r\n inStock: boolean;\r\n}> = ({ discount, inStock }) => (\r\n <>\r\n {discount && (\r\n <Badge variant=\"danger\" className=\"absolute top-2 left-2 text-xs px-2 py-1\">\r\n -{discount}%\r\n </Badge>\r\n )}\r\n {!inStock && (\r\n <div className=\"absolute inset-0 bg-black/50 flex items-center justify-center z-20\">\r\n <Badge variant=\"secondary\" className=\"text-xs px-2 py-1\">Out of Stock</Badge>\r\n </div>\r\n )}\r\n </>\r\n);\r\n\r\n/**\r\n * Reusable product card component for displaying product information\r\n * Used across different marketplace views (grid, list, featured, etc.)\r\n */\r\nexport const ProductCard: React.FC<ProductCardProps> = ({\r\n product,\r\n onProductClick,\r\n onAddToCart,\r\n onQuickView,\r\n onToggleWishlist,\r\n isWishlisted = false,\r\n showQuickActions = true,\r\n className = '',\r\n}) => {\r\n const { isBelow } = useBreakpoint();\r\n const isMobile = isBelow('md');\r\n\r\n const handleProductClick = () => {\r\n onProductClick?.(product);\r\n };\r\n\r\n const handleAddToCart = (e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n onAddToCart?.(product);\r\n };\r\n\r\n const handleQuickView = (e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n onQuickView?.(product);\r\n };\r\n\r\n const handleToggleWishlist = (e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n onToggleWishlist?.(product.id);\r\n };\r\n\r\n return (\r\n <Card\r\n className={`group hover:shadow-lg transition-all duration-300 cursor-pointer flex flex-col max-h-[28rem] ${className}`}\r\n tabIndex={0}\r\n aria-label={`Product card for ${product.name}`}\r\n >\r\n <div className=\"relative aspect-square bg-gray-100 rounded-t-lg overflow-hidden\">\r\n <Image\r\n src={product.images[0]}\r\n alt={product.name}\r\n className=\"w-full h-full object-cover group-hover:scale-105 transition-transform duration-300\"\r\n onClick={handleProductClick}\r\n draggable={false}\r\n />\r\n\r\n {/* Overlays */}\r\n <ProductOverlay discount={product.discount} inStock={product.inStock} />\r\n\r\n {/* Quick Actions */}\r\n {showQuickActions && (\r\n <ProductQuickActions\r\n isWishlisted={isWishlisted}\r\n onToggleWishlist={handleToggleWishlist}\r\n onQuickView={handleQuickView}\r\n isMobile={isMobile}\r\n />\r\n )}\r\n </div>\r\n\r\n <CardContent className=\"p-3 sm:p-4 flex-1 flex flex-col\">\r\n <div className=\"mb-2\">\r\n <h3\r\n className=\"font-medium text-gray-900 line-clamp-2 cursor-pointer hover:text-primary-600 text-base sm:text-lg\"\r\n onClick={handleProductClick}\r\n tabIndex={0}\r\n aria-label={`View details for ${product.name}`}\r\n >\r\n {product.name}\r\n </h3>\r\n <p className=\"text-sm text-gray-600 line-clamp-1\">{product.brand}</p>\r\n </div>\r\n\r\n {/* Rating */}\r\n <div className=\"flex items-center space-x-1 mb-2\">\r\n <Star className=\"h-4 w-4 text-yellow-400 fill-current\" />\r\n <span className=\"text-sm text-gray-600\">\r\n {product.rating} ({product.reviewCount})\r\n </span>\r\n </div>\r\n\r\n {/* Price */}\r\n <div className=\"flex items-center justify-between mb-3\">\r\n <div className=\"flex items-center space-x-2\">\r\n <span className=\"text-lg font-bold text-gray-900\">\r\n ${product.price.toFixed(2)}\r\n </span>\r\n {product.originalPrice && (\r\n <span className=\"text-sm text-gray-500 line-through\">\r\n ${product.originalPrice.toFixed(2)}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n\r\n <div className=\"mt-auto\">\r\n {/* Add to Cart Button */}\r\n <Button\r\n variant=\"primary\"\r\n size={isMobile ? 'md' : 'sm'}\r\n onClick={handleAddToCart}\r\n disabled={!product.inStock}\r\n className=\"w-full\"\r\n aria-label=\"Add to cart\"\r\n >\r\n <ShoppingCart className=\"mr-2 h-4 w-4\" />\r\n Add to Cart\r\n </Button>\r\n </div>\r\n </CardContent>\r\n </Card>\r\n );\r\n};"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"ProductCard.js","sources":["../../../../src/components/Marketplace/components/ProductCard.tsx"],"sourcesContent":["import React from 'react';\nimport { Star, Heart, ShoppingCart, Eye } from 'lucide-react';\nimport { Button } from '../../Button';\nimport { Card, CardContent } from '../../Card';\nimport { Badge } from '../../Badge';\nimport { Image } from '../../Image';\nimport type { Product } from '../types';\nimport { useBreakpoint } from '../../../hooks/useBreakpoint';\n\nexport interface ProductCardProps {\n product: Product;\n onProductClick?: (product: Product) => void;\n onAddToCart?: (product: Product) => void;\n onQuickView?: (product: Product) => void;\n onToggleWishlist?: (productId: string) => void;\n isWishlisted?: boolean;\n showQuickActions?: boolean;\n className?: string;\n}\n\n/** Quick Actions Subcomponent */\nconst ProductQuickActions: React.FC<{\n isWishlisted: boolean;\n onToggleWishlist: (e: React.MouseEvent) => void;\n onQuickView: (e: React.MouseEvent) => void;\n isMobile: boolean;\n}> = ({ isWishlisted, onToggleWishlist, onQuickView, isMobile }) => (\n <div\n className={`flex ${isMobile ? 'flex-row gap-2 absolute bottom-2 left-2 z-10' : ''}`}\n aria-label=\"Product quick actions\"\n >\n <Button\n variant=\"ghost\"\n size={isMobile ? 'md' : 'sm'}\n onClick={onToggleWishlist}\n className={`bg-white/80 hover:bg-white rounded-full p-2 focus:outline-none focus:ring-2 focus:ring-primary transition ${\n isMobile ? '' : 'opacity-0 group-hover:opacity-100 absolute top-2 right-2'\n }`}\n aria-label={isWishlisted ? 'Remove from wishlist' : 'Add to wishlist'}\n tabIndex={0}\n >\n <Heart className={`h-5 w-5 ${isWishlisted ? 'fill-current text-red-500' : ''}`} />\n </Button>\n <Button\n variant=\"ghost\"\n size={isMobile ? 'md' : 'sm'}\n onClick={onQuickView}\n className={`bg-white/80 hover:bg-white rounded-full p-2 focus:outline-none focus:ring-2 focus:ring-primary transition ${\n isMobile ? '' : 'opacity-0 group-hover:opacity-100 absolute bottom-2 right-2'\n }`}\n aria-label=\"Quick view\"\n tabIndex={0}\n >\n <Eye className=\"h-5 w-5\" />\n </Button>\n </div>\n);\n\n/** Overlay Subcomponent */\nconst ProductOverlay: React.FC<{\n discount?: number;\n inStock: boolean;\n}> = ({ discount, inStock }) => (\n <>\n {discount && (\n <Badge variant=\"danger\" className=\"absolute top-2 left-2 text-xs px-2 py-1\">\n -{discount}%\n </Badge>\n )}\n {!inStock && (\n <div className=\"absolute inset-0 bg-black/50 flex items-center justify-center z-20\">\n <Badge variant=\"secondary\" className=\"text-xs px-2 py-1\">Out of Stock</Badge>\n </div>\n )}\n </>\n);\n\n/**\n * Reusable product card component for displaying product information\n * Used across different marketplace views (grid, list, featured, etc.)\n */\nexport const ProductCard: React.FC<ProductCardProps> = ({\n product,\n onProductClick,\n onAddToCart,\n onQuickView,\n onToggleWishlist,\n isWishlisted = false,\n showQuickActions = true,\n className = '',\n}) => {\n const { isBelow } = useBreakpoint();\n const isMobile = isBelow('md');\n\n const handleProductClick = () => {\n onProductClick?.(product);\n };\n\n const handleAddToCart = (e: React.MouseEvent) => {\n e.stopPropagation();\n onAddToCart?.(product);\n };\n\n const handleQuickView = (e: React.MouseEvent) => {\n e.stopPropagation();\n onQuickView?.(product);\n };\n\n const handleToggleWishlist = (e: React.MouseEvent) => {\n e.stopPropagation();\n onToggleWishlist?.(product.id);\n };\n\n return (\n <Card\n className={`group hover:shadow-lg transition-all duration-300 cursor-pointer flex flex-col max-h-[28rem] ${className}`}\n tabIndex={0}\n aria-label={`Product card for ${product.name}`}\n >\n <div className=\"relative aspect-square bg-gray-100 rounded-t-lg overflow-hidden\">\n <Image\n src={product.images[0]}\n alt={product.name}\n className=\"w-full h-full object-cover group-hover:scale-105 transition-transform duration-300\"\n onClick={handleProductClick}\n draggable={false}\n />\n\n {/* Overlays */}\n <ProductOverlay discount={product.discount} inStock={product.inStock} />\n\n {/* Quick Actions */}\n {showQuickActions && (\n <ProductQuickActions\n isWishlisted={isWishlisted}\n onToggleWishlist={handleToggleWishlist}\n onQuickView={handleQuickView}\n isMobile={isMobile}\n />\n )}\n </div>\n\n <CardContent className=\"p-3 sm:p-4 flex-1 flex flex-col\">\n <div className=\"mb-2\">\n <h3\n className=\"font-medium text-gray-900 line-clamp-2 cursor-pointer hover:text-primary-600 text-base sm:text-lg\"\n onClick={handleProductClick}\n tabIndex={0}\n aria-label={`View details for ${product.name}`}\n >\n {product.name}\n </h3>\n <p className=\"text-sm text-gray-600 line-clamp-1\">{product.brand}</p>\n </div>\n\n {/* Rating */}\n <div className=\"flex items-center space-x-1 mb-2\">\n <Star className=\"h-4 w-4 text-yellow-400 fill-current\" />\n <span className=\"text-sm text-gray-600\">\n {product.rating} ({product.reviewCount})\n </span>\n </div>\n\n {/* Price */}\n <div className=\"flex items-center justify-between mb-3\">\n <div className=\"flex items-center space-x-2\">\n <span className=\"text-lg font-bold text-gray-900\">\n ${product.price.toFixed(2)}\n </span>\n {product.originalPrice && (\n <span className=\"text-sm text-gray-500 line-through\">\n ${product.originalPrice.toFixed(2)}\n </span>\n )}\n </div>\n </div>\n\n <div className=\"mt-auto\">\n {/* Add to Cart Button */}\n <Button\n variant=\"primary\"\n size={isMobile ? 'md' : 'sm'}\n onClick={handleAddToCart}\n disabled={!product.inStock}\n className=\"w-full\"\n aria-label=\"Add to cart\"\n >\n <ShoppingCart className=\"mr-2 h-4 w-4\" />\n Add to Cart\n </Button>\n </div>\n </CardContent>\n </Card>\n );\n};"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollToTop.js","sources":["../../../../src/components/Marketplace/hooks/useScrollToTop.ts"],"sourcesContent":["import { useEffect } from \"react\";\r\n\r\n/**\r\n * Reusable hook to scroll window or a container to top when dependencies change.\r\n * - If a ref is provided, scrolls the container.\r\n * - Otherwise, scrolls the window.\r\n * - Designed for use in product/detail views to ensure correct navigation UX.\r\n *\r\n * @param deps Dependency array (e.g., [product])\r\n * @param ref Optional: React ref to a scrollable container\r\n */\r\nexport function useScrollToTop(deps: any[] = [], ref?: React.RefObject<HTMLElement>) {\r\n useEffect(() => {\r\n if (ref?.current) {\r\n ref.current.scrollTo({ top: 0, behavior: \"smooth\" });\r\n } else {\r\n window.scrollTo({ top: 0, behavior: \"smooth\" });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n}"],"names":[],"mappings":";;AAEA;;;;;;;;AAQG;SACa,cAAc,CAAC,IAAA,GAAc,EAAE,EAAE,GAAkC,EAAA;IACjF,SAAS,CAAC,MAAK;AACb,QAEO;AACL,YAAA,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACjD;;IAEF,CAAC,EAAE,IAAI,CAAC;AACV;;;;"}
1
+ {"version":3,"file":"useScrollToTop.js","sources":["../../../../src/components/Marketplace/hooks/useScrollToTop.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\n/**\n * Reusable hook to scroll window or a container to top when dependencies change.\n * - If a ref is provided, scrolls the container.\n * - Otherwise, scrolls the window.\n * - Designed for use in product/detail views to ensure correct navigation UX.\n *\n * @param deps Dependency array (e.g., [product])\n * @param ref Optional: React ref to a scrollable container\n */\nexport function useScrollToTop(deps: any[] = [], ref?: React.RefObject<HTMLElement>) {\n useEffect(() => {\n if (ref?.current) {\n ref.current.scrollTo({ top: 0, behavior: \"smooth\" });\n } else {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}"],"names":[],"mappings":";;AAEA;;;;;;;;AAQG;SACa,cAAc,CAAC,IAAA,GAAc,EAAE,EAAE,GAAkC,EAAA;IACjF,SAAS,CAAC,MAAK;AACb,QAEO;AACL,YAAA,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QACjD;;IAEF,CAAC,EAAE,IAAI,CAAC;AACV;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizeProduct.js","sources":["../../../../src/components/Marketplace/utils/sanitizeProduct.ts"],"sourcesContent":["import type { Product } from \"../types\";\r\n\r\n/**\r\n * Ensures a Product object has all required fields and valid defaults.\r\n * Returns a sanitized copy of the product.\r\n */\r\nexport function sanitizeProduct(product: Partial<Product>): Product {\r\n return {\r\n id: product.id ?? \"unknown\",\r\n name: product.name ?? \"Unnamed Product\",\r\n description: product.description ?? \"No description available.\",\r\n price: typeof product.price === \"number\" ? product.price : 0,\r\n originalPrice: typeof product.originalPrice === \"number\" ? product.originalPrice : undefined,\r\n discount: typeof product.discount === \"number\" ? product.discount : undefined,\r\n images: Array.isArray(product.images) && product.images.length > 0\r\n ? product.images\r\n : [\"https://images.pexels.com/photos/2255935/pexels-photo-2255935.jpeg\"],\r\n category: product.category ?? \"Misc\",\r\n brand: product.brand ?? \"Unknown\",\r\n rating: typeof product.rating === \"number\" ? product.rating : 0,\r\n reviewCount: typeof product.reviewCount === \"number\" ? product.reviewCount : 0,\r\n inStock: typeof product.inStock === \"boolean\" ? product.inStock : false,\r\n specifications: product.specifications && Object.keys(product.specifications).length > 0\r\n ? product.specifications\r\n : { \"Info\": \"No specifications available\" },\r\n tags: Array.isArray(product.tags) ? product.tags : [],\r\n vendor: product.vendor && product.vendor.name\r\n ? {\r\n id: product.vendor.id ?? \"unknown\",\r\n name: product.vendor.name,\r\n rating: typeof product.vendor.rating === \"number\" ? product.vendor.rating : 0,\r\n logo: product.vendor.logo,\r\n }\r\n : {\r\n id: \"unknown\",\r\n name: \"Unknown Vendor\",\r\n rating: 0,\r\n logo: undefined,\r\n },\r\n };\r\n}"],"names":[],"mappings":"AAEA;;;AAGG;AACG,SAAU,eAAe,CAAC,OAAyB,EAAA;IACvD,OAAO;AACL,QAAA,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,SAAS;AAC3B,QAAA,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,iBAAiB;AACvC,QAAA,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,2BAA2B;AAC/D,QAAA,KAAK,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC;AAC5D,QAAA,aAAa,EAAE,OAAO,OAAO,CAAC,aAAa,KAAK,QAAQ,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS;AAC5F,QAAA,QAAQ,EAAE,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS;AAC7E,QAAA,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG;cAC7D,OAAO,CAAC;cACR,CAAC,oEAAoE,CAAC;AAC1E,QAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM;AACpC,QAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;AACjC,QAAA,MAAM,EAAE,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;AAC/D,QAAA,WAAW,EAAE,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC;AAC9E,QAAA,OAAO,EAAE,OAAO,OAAO,CAAC,OAAO,KAAK,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,KAAK;AACvE,QAAA,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG;cACnF,OAAO,CAAC;AACV,cAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE;AAC7C,QAAA,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,EAAE;QACrD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;AACvC,cAAE;AACE,gBAAA,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS;AAClC,gBAAA,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;gBACzB,MAAM,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;AAC7E,gBAAA,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;AAC1B;AACH,cAAE;AACE,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,IAAI,EAAE,SAAS;AAChB,aAAA;KACN;AACH;;;;"}
1
+ {"version":3,"file":"sanitizeProduct.js","sources":["../../../../src/components/Marketplace/utils/sanitizeProduct.ts"],"sourcesContent":["import type { Product } from \"../types\";\n\n/**\n * Ensures a Product object has all required fields and valid defaults.\n * Returns a sanitized copy of the product.\n */\nexport function sanitizeProduct(product: Partial<Product>): Product {\n return {\n id: product.id ?? \"unknown\",\n name: product.name ?? \"Unnamed Product\",\n description: product.description ?? \"No description available.\",\n price: typeof product.price === \"number\" ? product.price : 0,\n originalPrice: typeof product.originalPrice === \"number\" ? product.originalPrice : undefined,\n discount: typeof product.discount === \"number\" ? product.discount : undefined,\n images: Array.isArray(product.images) && product.images.length > 0\n ? product.images\n : [\"https://images.pexels.com/photos/2255935/pexels-photo-2255935.jpeg\"],\n category: product.category ?? \"Misc\",\n brand: product.brand ?? \"Unknown\",\n rating: typeof product.rating === \"number\" ? product.rating : 0,\n reviewCount: typeof product.reviewCount === \"number\" ? product.reviewCount : 0,\n inStock: typeof product.inStock === \"boolean\" ? product.inStock : false,\n specifications: product.specifications && Object.keys(product.specifications).length > 0\n ? product.specifications\n : { \"Info\": \"No specifications available\" },\n tags: Array.isArray(product.tags) ? product.tags : [],\n vendor: product.vendor && product.vendor.name\n ? {\n id: product.vendor.id ?? \"unknown\",\n name: product.vendor.name,\n rating: typeof product.vendor.rating === \"number\" ? product.vendor.rating : 0,\n logo: product.vendor.logo,\n }\n : {\n id: \"unknown\",\n name: \"Unknown Vendor\",\n rating: 0,\n logo: undefined,\n },\n };\n}"],"names":[],"mappings":"AAEA;;;AAGG;AACG,SAAU,eAAe,CAAC,OAAyB,EAAA;IACvD,OAAO;AACL,QAAA,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,SAAS;AAC3B,QAAA,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,iBAAiB;AACvC,QAAA,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,2BAA2B;AAC/D,QAAA,KAAK,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC;AAC5D,QAAA,aAAa,EAAE,OAAO,OAAO,CAAC,aAAa,KAAK,QAAQ,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS;AAC5F,QAAA,QAAQ,EAAE,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS;AAC7E,QAAA,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG;cAC7D,OAAO,CAAC;cACR,CAAC,oEAAoE,CAAC;AAC1E,QAAA,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM;AACpC,QAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;AACjC,QAAA,MAAM,EAAE,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;AAC/D,QAAA,WAAW,EAAE,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC;AAC9E,QAAA,OAAO,EAAE,OAAO,OAAO,CAAC,OAAO,KAAK,SAAS,GAAG,OAAO,CAAC,OAAO,GAAG,KAAK;AACvE,QAAA,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG;cACnF,OAAO,CAAC;AACV,cAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE;AAC7C,QAAA,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,EAAE;QACrD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;AACvC,cAAE;AACE,gBAAA,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS;AAClC,gBAAA,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;gBACzB,MAAM,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;AAC7E,gBAAA,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;AAC1B;AACH,cAAE;AACE,gBAAA,EAAE,EAAE,SAAS;AACb,gBAAA,IAAI,EAAE,gBAAgB;AACtB,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,IAAI,EAAE,SAAS;AAChB,aAAA;KACN;AACH;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.example.js","sources":["../../../src/components/Modal/Modal.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Modal, ModalHeader, ModalTitle, ModalContent, ModalFooter } from \"./Modal\";\r\nimport { Button } from \"../Button\";\r\n\r\nexport const ModalExample: React.FC = () => {\r\n const [open, setOpen] = React.useState(false);\r\n return (\r\n <div>\r\n <Button onClick={() => setOpen(true)}>Show Modal</Button>\r\n <Modal open={open} onOpenChange={setOpen}>\r\n <ModalHeader>\r\n <ModalTitle>Demo Modal</ModalTitle>\r\n </ModalHeader>\r\n <ModalContent>\r\n <p>This is a basic modal dialog.</p>\r\n </ModalContent>\r\n <ModalFooter>\r\n <Button variant=\"primary\" onClick={() => setOpen(false)}>Close</Button>\r\n </ModalFooter>\r\n </Modal>\r\n </div>\r\n );\r\n};"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAIO,MAAM,YAAY,GAAa,MAAK;AACzC,IAAA,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC7C,IAAA,QACEA,IAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CACEC,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAA,QAAA,EAAA,YAAA,EAAA,CAAqB,EACzDD,IAAA,CAAC,KAAK,EAAA,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAA,QAAA,EAAA,CACtCC,GAAA,CAAC,WAAW,cACVA,GAAA,CAAC,UAAU,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAAwB,EAAA,CACvB,EACdA,GAAA,CAAC,YAAY,EAAA,EAAA,QAAA,EACXA,GAAA,CAAA,GAAA,EAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,CAAoC,EAAA,CACvB,EACfA,GAAA,CAAC,WAAW,EAAA,EAAA,QAAA,EACVA,GAAA,CAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,OAAA,EAAA,CAAgB,EAAA,CAC3D,CAAA,EAAA,CACR,CAAA,EAAA,CACJ;AAEV;;;;"}
1
+ {"version":3,"file":"Modal.example.js","sources":["../../../src/components/Modal/Modal.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Modal, ModalHeader, ModalTitle, ModalContent, ModalFooter } from \"./Modal\";\nimport { Button } from \"../Button\";\n\nexport const ModalExample: React.FC = () => {\n const [open, setOpen] = React.useState(false);\n return (\n <div>\n <Button onClick={() => setOpen(true)}>Show Modal</Button>\n <Modal open={open} onOpenChange={setOpen}>\n <ModalHeader>\n <ModalTitle>Demo Modal</ModalTitle>\n </ModalHeader>\n <ModalContent>\n <p>This is a basic modal dialog.</p>\n </ModalContent>\n <ModalFooter>\n <Button variant=\"primary\" onClick={() => setOpen(false)}>Close</Button>\n </ModalFooter>\n </Modal>\n </div>\n );\n};"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAIO,MAAM,YAAY,GAAa,MAAK;AACzC,IAAA,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC7C,IAAA,QACEA,IAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CACEC,GAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAA,QAAA,EAAA,YAAA,EAAA,CAAqB,EACzDD,IAAA,CAAC,KAAK,EAAA,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAA,QAAA,EAAA,CACtCC,GAAA,CAAC,WAAW,cACVA,GAAA,CAAC,UAAU,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAAwB,EAAA,CACvB,EACdA,GAAA,CAAC,YAAY,EAAA,EAAA,QAAA,EACXA,GAAA,CAAA,GAAA,EAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,CAAoC,EAAA,CACvB,EACfA,GAAA,CAAC,WAAW,EAAA,EAAA,QAAA,EACVA,GAAA,CAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,OAAA,EAAA,CAAgB,EAAA,CAC3D,CAAA,EAAA,CACR,CAAA,EAAA,CACJ;AAEV;;;;"}
@@ -3,7 +3,7 @@ import { X } from 'lucide-react';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { cn } from '../../utils/cn.js';
5
5
 
6
- const modalVariants = cva("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-white p-6 shadow-lg duration-200 sm:rounded-lg", {
6
+ const modalVariants = cva("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-gray-200 dark:border-gray-800 bg-white dark:bg-gray-900 p-6 shadow-lg duration-200 sm:rounded-lg", {
7
7
  variants: {
8
8
  size: {
9
9
  sm: "max-w-sm",
@@ -26,8 +26,8 @@ const Modal = ({ open, onOpenChange, children, size, }) => {
26
26
  return (jsxs(Fragment, { children: [jsx("div", { className: "fixed inset-0 z-50 bg-black/50 backdrop-blur-sm", onClick: handleClose }), jsxs("div", { className: cn(modalVariants({ size })), children: [jsxs("button", { onClick: handleClose, className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 disabled:pointer-events-none", children: [jsx(X, { className: "h-4 w-4" }), jsx("span", { className: "sr-only", children: "Close" })] }), children] })] }));
27
27
  };
28
28
  const ModalHeader = ({ className, ...props }) => (jsx("div", { className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props }));
29
- const ModalTitle = ({ className, ...props }) => (jsx("h2", { className: cn("text-lg font-semibold leading-none tracking-tight", className), ...props }));
30
- const ModalDescription = ({ className, ...props }) => (jsx("p", { className: cn("text-sm text-gray-500", className), ...props }));
29
+ const ModalTitle = ({ className, ...props }) => (jsx("h2", { className: cn("text-lg font-semibold leading-none tracking-tight text-gray-900 dark:text-white", className), ...props }));
30
+ const ModalDescription = ({ className, ...props }) => (jsx("p", { className: cn("text-sm text-gray-500 dark:text-gray-400", className), ...props }));
31
31
  const ModalContent = ({ className, ...props }) => (jsx("div", { className: cn("grid gap-4 py-4", className), ...props }));
32
32
  const ModalFooter = ({ className, ...props }) => (jsx("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props }));
33
33
 
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { X } from \"lucide-react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nconst modalVariants = cva(\r\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-white p-6 shadow-lg duration-200 sm:rounded-lg\",\r\n {\r\n variants: {\r\n size: {\r\n sm: \"max-w-sm\",\r\n md: \"max-w-lg\",\r\n lg: \"max-w-2xl\",\r\n xl: \"max-w-4xl\",\r\n full: \"max-w-[95vw] max-h-[95vh]\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"md\",\r\n },\r\n }\r\n);\r\n\r\ninterface ModalProps extends VariantProps<typeof modalVariants> {\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst Modal: React.FC<ModalProps> = ({ \r\n open, \r\n onOpenChange, \r\n children, \r\n size,\r\n}) => {\r\n const handleClose = () => {\r\n onOpenChange?.(false);\r\n };\r\n\r\n if (!open) return null;\r\n\r\n return (\r\n <>\r\n {/* Backdrop */}\r\n <div\r\n className=\"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm\"\r\n onClick={handleClose}\r\n />\r\n \r\n {/* Modal Content */}\r\n <div className={cn(modalVariants({ size }))}>\r\n <button\r\n onClick={handleClose}\r\n className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 disabled:pointer-events-none\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </button>\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nconst ModalHeader: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\r\n className,\r\n ...props\r\n}) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n);\r\n\r\nconst ModalTitle: React.FC<React.HTMLAttributes<HTMLHeadingElement>> = ({\r\n className,\r\n ...props\r\n}) => (\r\n <h2\r\n className={cn(\r\n \"text-lg font-semibold leading-none tracking-tight\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n);\r\n\r\nconst ModalDescription: React.FC<React.HTMLAttributes<HTMLParagraphElement>> = ({\r\n className,\r\n ...props\r\n}) => (\r\n <p\r\n className={cn(\"text-sm text-gray-500\", className)}\r\n {...props}\r\n />\r\n);\r\n\r\nconst ModalContent: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\r\n className,\r\n ...props\r\n}) => (\r\n <div className={cn(\"grid gap-4 py-4\", className)} {...props} />\r\n);\r\n\r\nconst ModalFooter: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\r\n className,\r\n ...props\r\n}) => (\r\n <div\r\n className={cn(\r\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n);\r\n\r\nexport {\r\n Modal,\r\n ModalHeader,\r\n ModalTitle,\r\n ModalDescription,\r\n ModalContent,\r\n ModalFooter,\r\n modalVariants,\r\n};"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;AAKA,MAAM,aAAa,GAAG,GAAG,CACvB,2JAA2J,EAC3J;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,IAAI,EAAE,2BAA2B;AAClC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AASH,MAAM,KAAK,GAAyB,CAAC,EACnC,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,IAAI,GACL,KAAI;IACH,MAAM,WAAW,GAAG,MAAK;AACvB,QAAA,YAAY,GAAG,KAAK,CAAC;AACvB,IAAA,CAAC;AAED,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI;IAEtB,QACEA,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAEEC,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,iDAAiD,EAC3D,OAAO,EAAE,WAAW,EAAA,CACpB,EAGFF,cAAK,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAA,QAAA,EAAA,CACzCA,IAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,WAAW,EACpB,SAAS,EAAC,6MAA6M,aAEvNE,GAAA,CAAC,CAAC,EAAA,EAAC,SAAS,EAAC,SAAS,GAAG,EACzBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EAAA,QAAA,EAAA,OAAA,EAAA,CAAa,CAAA,EAAA,CAC/B,EACR,QAAQ,CAAA,EAAA,CACL,CAAA,EAAA,CACL;AAEP;AAEA,MAAM,WAAW,GAAmD,CAAC,EACnE,SAAS,EACT,GAAG,KAAK,EACT,MACCA,aACE,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;AAGJ,MAAM,UAAU,GAAuD,CAAC,EACtE,SAAS,EACT,GAAG,KAAK,EACT,MACCA,YACE,SAAS,EAAE,EAAE,CACX,mDAAmD,EACnD,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;AAGJ,MAAM,gBAAgB,GAAyD,CAAC,EAC9E,SAAS,EACT,GAAG,KAAK,EACT,MACCA,WACE,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC,EAAA,GAC7C,KAAK,EAAA,CACT;AAGJ,MAAM,YAAY,GAAmD,CAAC,EACpE,SAAS,EACT,GAAG,KAAK,EACT,MACCA,aAAK,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAA,GAAM,KAAK,EAAA,CAAI;AAGjE,MAAM,WAAW,GAAmD,CAAC,EACnE,SAAS,EACT,GAAG,KAAK,EACT,MACCA,aACE,SAAS,EAAE,EAAE,CACX,+DAA+D,EAC/D,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;;;;"}
1
+ {"version":3,"file":"Modal.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { X } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst modalVariants = cva(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-gray-200 dark:border-gray-800 bg-white dark:bg-gray-900 p-6 shadow-lg duration-200 sm:rounded-lg\",\n {\n variants: {\n size: {\n sm: \"max-w-sm\",\n md: \"max-w-lg\",\n lg: \"max-w-2xl\",\n xl: \"max-w-4xl\",\n full: \"max-w-[95vw] max-h-[95vh]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n);\n\ninterface ModalProps extends VariantProps<typeof modalVariants> {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n children: React.ReactNode;\n}\n\nconst Modal: React.FC<ModalProps> = ({ \n open, \n onOpenChange, \n children, \n size,\n}) => {\n const handleClose = () => {\n onOpenChange?.(false);\n };\n\n if (!open) return null;\n\n return (\n <>\n {/* Backdrop */}\n <div\n className=\"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm\"\n onClick={handleClose}\n />\n \n {/* Modal Content */}\n <div className={cn(modalVariants({ size }))}>\n <button\n onClick={handleClose}\n className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 disabled:pointer-events-none\"\n >\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </button>\n {children}\n </div>\n </>\n );\n};\n\nconst ModalHeader: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\n className,\n ...props\n}) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\n\nconst ModalTitle: React.FC<React.HTMLAttributes<HTMLHeadingElement>> = ({\n className,\n ...props\n}) => (\n <h2\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight text-gray-900 dark:text-white\",\n className\n )}\n {...props}\n />\n);\n\nconst ModalDescription: React.FC<React.HTMLAttributes<HTMLParagraphElement>> = ({\n className,\n ...props\n}) => (\n <p\n className={cn(\"text-sm text-gray-500 dark:text-gray-400\", className)}\n {...props}\n />\n);\n\nconst ModalContent: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\n className,\n ...props\n}) => (\n <div className={cn(\"grid gap-4 py-4\", className)} {...props} />\n);\n\nconst ModalFooter: React.FC<React.HTMLAttributes<HTMLDivElement>> = ({\n className,\n ...props\n}) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\n\nexport {\n Modal,\n ModalHeader,\n ModalTitle,\n ModalDescription,\n ModalContent,\n ModalFooter,\n modalVariants,\n};"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;AAKA,MAAM,aAAa,GAAG,GAAG,CACvB,iNAAiN,EACjN;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,UAAU;AACd,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,IAAI,EAAE,2BAA2B;AAClC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,IAAI;AACX,KAAA;AACF,CAAA;AASH,MAAM,KAAK,GAAyB,CAAC,EACnC,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,IAAI,GACL,KAAI;IACH,MAAM,WAAW,GAAG,MAAK;AACvB,QAAA,YAAY,GAAG,KAAK,CAAC;AACvB,IAAA,CAAC;AAED,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI;IAEtB,QACEA,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAEEC,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,iDAAiD,EAC3D,OAAO,EAAE,WAAW,EAAA,CACpB,EAGFF,cAAK,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAA,QAAA,EAAA,CACzCA,IAAA,CAAA,QAAA,EAAA,EACE,OAAO,EAAE,WAAW,EACpB,SAAS,EAAC,6MAA6M,aAEvNE,GAAA,CAAC,CAAC,EAAA,EAAC,SAAS,EAAC,SAAS,GAAG,EACzBA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EAAA,QAAA,EAAA,OAAA,EAAA,CAAa,CAAA,EAAA,CAC/B,EACR,QAAQ,CAAA,EAAA,CACL,CAAA,EAAA,CACL;AAEP;AAEA,MAAM,WAAW,GAAmD,CAAC,EACnE,SAAS,EACT,GAAG,KAAK,EACT,MACCA,aACE,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;AAGJ,MAAM,UAAU,GAAuD,CAAC,EACtE,SAAS,EACT,GAAG,KAAK,EACT,MACCA,YACE,SAAS,EAAE,EAAE,CACX,iFAAiF,EACjF,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;AAGJ,MAAM,gBAAgB,GAAyD,CAAC,EAC9E,SAAS,EACT,GAAG,KAAK,EACT,MACCA,WACE,SAAS,EAAE,EAAE,CAAC,0CAA0C,EAAE,SAAS,CAAC,EAAA,GAChE,KAAK,EAAA,CACT;AAGJ,MAAM,YAAY,GAAmD,CAAC,EACpE,SAAS,EACT,GAAG,KAAK,EACT,MACCA,aAAK,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAA,GAAM,KAAK,EAAA,CAAI;AAGjE,MAAM,WAAW,GAAmD,CAAC,EACnE,SAAS,EACT,GAAG,KAAK,EACT,MACCA,aACE,SAAS,EAAE,EAAE,CACX,+DAA+D,EAC/D,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Navbar.example.js","sources":["../../../src/components/Navbar/Navbar.example.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Navbar } from \"./Navbar\";\r\nimport { NightModeSwitch } from \"../NightModeSwitch\";\r\n\r\nexport const NavbarExample: React.FC = () => (\r\n <Navbar>\r\n <div className=\"flex items-center gap-4 px-4 w-full\">\r\n <span className=\"font-bold text-xl\">My App</span>\r\n <nav className=\"flex gap-2 ml-auto\">\r\n <a href=\"/\" className=\"text-blue-500\">Home</a>\r\n <a href=\"/about\" className=\"text-blue-500\">About</a>\r\n </nav>\r\n <NightModeSwitch className=\"ml-4\" variant=\"ghost\" size=\"md\" ariaLabel=\"Toggle dark mode\" />\r\n </div>\r\n </Navbar>\r\n);"],"names":["_jsx","_jsxs"],"mappings":";;;;AAIO,MAAM,aAAa,GAAa,OACrCA,GAAA,CAAC,MAAM,EAAA,EAAA,QAAA,EACLC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qCAAqC,EAAA,QAAA,EAAA,CAClDD,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,mBAAmB,EAAA,QAAA,EAAA,QAAA,EAAA,CAAc,EACjDC,cAAK,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,CACjCD,WAAG,IAAI,EAAC,GAAG,EAAC,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,MAAA,EAAA,CAAS,EAC9CA,GAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,OAAA,EAAA,CAAU,CAAA,EAAA,CAChD,EACNA,GAAA,CAAC,eAAe,IAAC,SAAS,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,kBAAkB,EAAA,CAAG,CAAA,EAAA,CACvF,EAAA,CACC;;;;"}
1
+ {"version":3,"file":"Navbar.example.js","sources":["../../../src/components/Navbar/Navbar.example.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Navbar } from \"./Navbar\";\nimport { NightModeSwitch } from \"../NightModeSwitch\";\n\nexport const NavbarExample: React.FC = () => (\n <Navbar>\n <div className=\"flex items-center gap-4 px-4 w-full\">\n <span className=\"font-bold text-xl\">My App</span>\n <nav className=\"flex gap-2 ml-auto\">\n <a href=\"/\" className=\"text-blue-500\">Home</a>\n <a href=\"/about\" className=\"text-blue-500\">About</a>\n </nav>\n <NightModeSwitch className=\"ml-4\" variant=\"ghost\" size=\"md\" ariaLabel=\"Toggle dark mode\" />\n </div>\n </Navbar>\n);"],"names":["_jsx","_jsxs"],"mappings":";;;;AAIO,MAAM,aAAa,GAAa,OACrCA,GAAA,CAAC,MAAM,EAAA,EAAA,QAAA,EACLC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qCAAqC,EAAA,QAAA,EAAA,CAClDD,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,mBAAmB,EAAA,QAAA,EAAA,QAAA,EAAA,CAAc,EACjDC,cAAK,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAA,CACjCD,WAAG,IAAI,EAAC,GAAG,EAAC,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,MAAA,EAAA,CAAS,EAC9CA,GAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,OAAA,EAAA,CAAU,CAAA,EAAA,CAChD,EACNA,GAAA,CAAC,eAAe,IAAC,SAAS,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,kBAAkB,EAAA,CAAG,CAAA,EAAA,CACvF,EAAA,CACC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"NightModeSwitch.js","sources":["../../../src/components/NightModeSwitch/NightModeSwitch.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { useDarkMode } from \"../../hooks/useDarkMode\";\r\nimport { Sun, Moon } from \"lucide-react\";\r\n\r\nconst switchVariants = cva(\r\n \"inline-flex items-center justify-center rounded-full transition focus:outline-none focus:ring-2 focus:ring-primary-500 dark:focus:ring-primary-400\",\r\n {\r\n variants: {\r\n variant: {\r\n primary: \"bg-primary-600 text-white hover:bg-primary-700 dark:bg-primary-400 dark:text-gray-900 dark:hover:bg-primary-500\",\r\n secondary: \"bg-secondary-600 text-white hover:bg-secondary-700 dark:bg-secondary-400 dark:text-gray-900 dark:hover:bg-secondary-500\",\r\n ghost: \"bg-transparent hover:bg-primary-100 dark:hover:bg-primary-900 text-primary-600 dark:text-primary-300\",\r\n },\r\n size: {\r\n sm: \"w-8 h-8 text-base\",\r\n md: \"w-10 h-10 text-lg\",\r\n lg: \"w-12 h-12 text-xl\",\r\n },\r\n iconStyle: {\r\n filled: \"\",\r\n outline: \"\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"ghost\",\r\n size: \"md\",\r\n iconStyle: \"filled\",\r\n },\r\n }\r\n);\r\n\r\nexport interface NightModeSwitchProps\r\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\r\n VariantProps<typeof switchVariants> {\r\n ariaLabel?: string;\r\n}\r\n\r\nexport const NightModeSwitch = React.forwardRef<HTMLButtonElement, NightModeSwitchProps>(\r\n (\r\n {\r\n className,\r\n variant,\r\n size,\r\n iconStyle,\r\n ariaLabel = \"Toggle dark mode\",\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const { isDarkMode, toggle } = useDarkMode();\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n ref={ref}\r\n aria-label={ariaLabel}\r\n aria-pressed={isDarkMode}\r\n className={cn(switchVariants({ variant, size, iconStyle, className }))}\r\n onClick={toggle}\r\n {...props}\r\n >\r\n <span className=\"sr-only\">{ariaLabel}</span>\r\n {isDarkMode ? (\r\n <Moon\r\n className=\"w-5 h-5\"\r\n strokeWidth={iconStyle === \"outline\" ? 2 : 1.5}\r\n fill={iconStyle === \"filled\" ? \"currentColor\" : \"none\"}\r\n aria-hidden=\"true\"\r\n />\r\n ) : (\r\n <Sun\r\n className=\"w-5 h-5\"\r\n strokeWidth={iconStyle === \"outline\" ? 2 : 1.5}\r\n fill={iconStyle === \"filled\" ? \"currentColor\" : \"none\"}\r\n aria-hidden=\"true\"\r\n />\r\n )}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nNightModeSwitch.displayName = \"NightModeSwitch\";"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAMA,MAAM,cAAc,GAAG,GAAG,CACxB,oJAAoJ,EACpJ;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,iHAAiH;AAC1H,YAAA,SAAS,EAAE,yHAAyH;AACpI,YAAA,KAAK,EAAE,sGAAsG;AAC9G,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,mBAAmB;AACvB,YAAA,EAAE,EAAE,mBAAmB;AACvB,YAAA,EAAE,EAAE,mBAAmB;AACxB,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,SAAS,EAAE,QAAQ;AACpB,KAAA;AACF,CAAA,CACF;AAQM,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAC7C,CACE,EACE,SAAS,EACT,OAAO,EACP,IAAI,EACJ,SAAS,EACT,SAAS,GAAG,kBAAkB,EAC9B,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE;AAE5C,IAAA,QACEA,IAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,GAAG,EAAE,GAAG,EAAA,YAAA,EACI,SAAS,EAAA,cAAA,EACP,UAAU,EACxB,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,EACtE,OAAO,EAAE,MAAM,EAAA,GACX,KAAK,EAAA,QAAA,EAAA,CAETC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EAAA,QAAA,EAAE,SAAS,EAAA,CAAQ,EAC3C,UAAU,IACTA,GAAA,CAAC,IAAI,EAAA,EACH,SAAS,EAAC,SAAS,EACnB,WAAW,EAAE,SAAS,KAAK,SAAS,GAAG,CAAC,GAAG,GAAG,EAC9C,IAAI,EAAE,SAAS,KAAK,QAAQ,GAAG,cAAc,GAAG,MAAM,EAAA,aAAA,EAC1C,MAAM,EAAA,CAClB,KAEFA,GAAA,CAAC,GAAG,EAAA,EACF,SAAS,EAAC,SAAS,EACnB,WAAW,EAAE,SAAS,KAAK,SAAS,GAAG,CAAC,GAAG,GAAG,EAC9C,IAAI,EAAE,SAAS,KAAK,QAAQ,GAAG,cAAc,GAAG,MAAM,EAAA,aAAA,EAC1C,MAAM,EAAA,CAClB,CACH,CAAA,EAAA,CACM;AAEb,CAAC;AAGH,eAAe,CAAC,WAAW,GAAG,iBAAiB;;;;"}
1
+ {"version":3,"file":"NightModeSwitch.js","sources":["../../../src/components/NightModeSwitch/NightModeSwitch.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\nimport { useDarkMode } from \"../../hooks/useDarkMode\";\nimport { Sun, Moon } from \"lucide-react\";\n\nconst switchVariants = cva(\n \"inline-flex items-center justify-center rounded-full transition focus:outline-none focus:ring-2 focus:ring-primary-500 dark:focus:ring-primary-400\",\n {\n variants: {\n variant: {\n primary: \"bg-primary-600 text-white hover:bg-primary-700 dark:bg-primary-400 dark:text-gray-900 dark:hover:bg-primary-500\",\n secondary: \"bg-secondary-600 text-white hover:bg-secondary-700 dark:bg-secondary-400 dark:text-gray-900 dark:hover:bg-secondary-500\",\n ghost: \"bg-transparent hover:bg-primary-100 dark:hover:bg-primary-900 text-primary-600 dark:text-primary-300\",\n },\n size: {\n sm: \"w-8 h-8 text-base\",\n md: \"w-10 h-10 text-lg\",\n lg: \"w-12 h-12 text-xl\",\n },\n iconStyle: {\n filled: \"\",\n outline: \"\",\n },\n },\n defaultVariants: {\n variant: \"ghost\",\n size: \"md\",\n iconStyle: \"filled\",\n },\n }\n);\n\nexport interface NightModeSwitchProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof switchVariants> {\n ariaLabel?: string;\n}\n\nexport const NightModeSwitch = React.forwardRef<HTMLButtonElement, NightModeSwitchProps>(\n (\n {\n className,\n variant,\n size,\n iconStyle,\n ariaLabel = \"Toggle dark mode\",\n ...props\n },\n ref\n ) => {\n const { isDarkMode, toggle } = useDarkMode();\n\n return (\n <button\n type=\"button\"\n ref={ref}\n aria-label={ariaLabel}\n aria-pressed={isDarkMode}\n className={cn(switchVariants({ variant, size, iconStyle, className }))}\n onClick={toggle}\n {...props}\n >\n <span className=\"sr-only\">{ariaLabel}</span>\n {isDarkMode ? (\n <Moon\n className=\"w-5 h-5\"\n strokeWidth={iconStyle === \"outline\" ? 2 : 1.5}\n fill={iconStyle === \"filled\" ? \"currentColor\" : \"none\"}\n aria-hidden=\"true\"\n />\n ) : (\n <Sun\n className=\"w-5 h-5\"\n strokeWidth={iconStyle === \"outline\" ? 2 : 1.5}\n fill={iconStyle === \"filled\" ? \"currentColor\" : \"none\"}\n aria-hidden=\"true\"\n />\n )}\n </button>\n );\n }\n);\n\nNightModeSwitch.displayName = \"NightModeSwitch\";"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAMA,MAAM,cAAc,GAAG,GAAG,CACxB,oJAAoJ,EACpJ;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,iHAAiH;AAC1H,YAAA,SAAS,EAAE,yHAAyH;AACpI,YAAA,KAAK,EAAE,sGAAsG;AAC9G,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,mBAAmB;AACvB,YAAA,EAAE,EAAE,mBAAmB;AACvB,YAAA,EAAE,EAAE,mBAAmB;AACxB,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,SAAS,EAAE,QAAQ;AACpB,KAAA;AACF,CAAA,CACF;AAQM,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAC7C,CACE,EACE,SAAS,EACT,OAAO,EACP,IAAI,EACJ,SAAS,EACT,SAAS,GAAG,kBAAkB,EAC9B,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE;AAE5C,IAAA,QACEA,IAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,GAAG,EAAE,GAAG,EAAA,YAAA,EACI,SAAS,EAAA,cAAA,EACP,UAAU,EACxB,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,EACtE,OAAO,EAAE,MAAM,EAAA,GACX,KAAK,EAAA,QAAA,EAAA,CAETC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EAAA,QAAA,EAAE,SAAS,EAAA,CAAQ,EAC3C,UAAU,IACTA,GAAA,CAAC,IAAI,EAAA,EACH,SAAS,EAAC,SAAS,EACnB,WAAW,EAAE,SAAS,KAAK,SAAS,GAAG,CAAC,GAAG,GAAG,EAC9C,IAAI,EAAE,SAAS,KAAK,QAAQ,GAAG,cAAc,GAAG,MAAM,EAAA,aAAA,EAC1C,MAAM,EAAA,CAClB,KAEFA,GAAA,CAAC,GAAG,EAAA,EACF,SAAS,EAAC,SAAS,EACnB,WAAW,EAAE,SAAS,KAAK,SAAS,GAAG,CAAC,GAAG,GAAG,EAC9C,IAAI,EAAE,SAAS,KAAK,QAAQ,GAAG,cAAc,GAAG,MAAM,EAAA,aAAA,EAC1C,MAAM,EAAA,CAClB,CACH,CAAA,EAAA,CACM;AAEb,CAAC;AAGH,eAAe,CAAC,WAAW,GAAG,iBAAiB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"EditModal.js","sources":["../../../src/components/ProfileManagement/EditModal.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Modal } from \"../Modal/Modal\";\r\nimport { Button } from \"../Button\";\r\nimport { Input } from \"../Input\";\r\nimport { Textarea } from \"../Textarea\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\nexport type EditModalField =\r\n | {\r\n type: \"text\" | \"email\" | \"tel\" | \"url\" | \"password\";\r\n label: string;\r\n name: string;\r\n value?: string;\r\n placeholder?: string;\r\n required?: boolean;\r\n autoFocus?: boolean;\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\r\n }\r\n | {\r\n type: \"textarea\";\r\n label: string;\r\n name: string;\r\n value?: string;\r\n placeholder?: string;\r\n required?: boolean;\r\n rows?: number;\r\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;\r\n }\r\n | {\r\n type: \"select\";\r\n label: string;\r\n name: string;\r\n value?: string;\r\n options: { label: string; value: string }[];\r\n placeholder?: string;\r\n required?: boolean;\r\n onChange?: (e: React.ChangeEvent<HTMLSelectElement>) => void;\r\n }\r\n | {\r\n type: \"checkbox\";\r\n label: string;\r\n name: string;\r\n checked?: boolean;\r\n required?: boolean;\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n }\r\n | {\r\n type: \"radio\";\r\n label: string;\r\n name: string;\r\n value?: string;\r\n options: { label: string; value: string }[];\r\n required?: boolean;\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n }\r\n | {\r\n type: \"switch\";\r\n label: string;\r\n name: string;\r\n checked?: boolean;\r\n required?: boolean;\r\n onChange?: (checked: boolean) => void;\r\n }\r\n | {\r\n type: \"custom\";\r\n name: string;\r\n render: () => React.ReactNode;\r\n };\r\n\r\nexport interface EditModalProps {\r\n open: boolean;\r\n title?: string;\r\n description?: string;\r\n fields: EditModalField[];\r\n onChange: (name: string, value: string) => void;\r\n onSave: () => void;\r\n onClose: () => void;\r\n saving?: boolean;\r\n saveLabel?: string;\r\n closeLabel?: string;\r\n className?: string;\r\n}\r\n\r\nexport const EditModal: React.FC<EditModalProps> = ({\r\n open,\r\n title,\r\n description,\r\n fields,\r\n onChange,\r\n onSave,\r\n onClose,\r\n saving,\r\n saveLabel = \"Save Changes\",\r\n closeLabel = \"Close\",\r\n className,\r\n}) => (\r\n <Modal open={open} onOpenChange={() => onClose()}>\r\n <div className={cn(\"max-w-2xl rounded-2xl p-0 p-8 mx-auto bg-white\", className)}>\r\n {title && <h2 className=\"text-2xl font-bold mb-1 text-gray-900\">{title}</h2>}\r\n {description && <p className=\"text-gray-500 mb-6\">{description}</p>}\r\n <form\r\n className=\"space-y-6\"\r\n onSubmit={e => {\r\n e.preventDefault();\r\n onSave();\r\n }}\r\n >\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n {fields.map((field, idx) => {\r\n if (field.type === \"custom\") {\r\n return <div key={field.name}>{field.render()}</div>;\r\n }\r\n // Title above every input/textarea/select/etc.\r\n const title = (\r\n <div key={field.name + \"-title\"} className=\"mb-1 font-medium text-gray-700\">\r\n {field.label}\r\n </div>\r\n );\r\n if (field.type === \"textarea\") {\r\n return (\r\n <React.Fragment key={field.name}>\r\n {title}\r\n <Textarea\r\n name={field.name}\r\n value={field.value}\r\n placeholder={field.placeholder}\r\n rows={field.rows || 3}\r\n required={field.required}\r\n onChange={e => field.onChange ? field.onChange(e) : onChange(field.name, e.target.value)}\r\n className=\"w-full\"\r\n />\r\n </React.Fragment>\r\n );\r\n }\r\n if (field.type === \"select\") {\r\n // Lazy import to avoid breaking if not present\r\n const { Select } = require(\"../Select/Select\");\r\n return (\r\n <React.Fragment key={field.name}>\r\n {title}\r\n <Select\r\n name={field.name}\r\n value={field.value}\r\n options={field.options}\r\n placeholder={field.placeholder}\r\n required={field.required}\r\n onChange={(e: React.ChangeEvent<HTMLSelectElement>) => field.onChange ? field.onChange(e) : onChange(field.name, e.target.value)}\r\n className=\"w-full\"\r\n />\r\n </React.Fragment>\r\n );\r\n }\r\n if (field.type === \"checkbox\") {\r\n const { Checkbox } = require(\"../Checkbox/Checkbox\");\r\n return (\r\n <React.Fragment key={field.name}>\r\n {title}\r\n <Checkbox\r\n name={field.name}\r\n checked={field.checked}\r\n required={field.required}\r\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => field.onChange ? field.onChange(e) : onChange(field.name, e.target.checked ? \"true\" : \"false\")}\r\n className=\"w-5 h-5\"\r\n />\r\n </React.Fragment>\r\n );\r\n }\r\n if (field.type === \"radio\") {\r\n const { RadioGroup } = require(\"../Radio/Radio\");\r\n return (\r\n <React.Fragment key={field.name}>\r\n {title}\r\n <RadioGroup\r\n name={field.name}\r\n value={field.value}\r\n options={field.options}\r\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => field.onChange ? field.onChange(e) : onChange(field.name, e.target.value)}\r\n />\r\n </React.Fragment>\r\n );\r\n }\r\n if (field.type === \"switch\") {\r\n const { Switch } = require(\"../Switch/Switch\");\r\n return (\r\n <React.Fragment key={field.name}>\r\n {title}\r\n <Switch\r\n name={field.name}\r\n checked={field.checked}\r\n onCheckedChange={(checked: boolean) => field.onChange ? field.onChange(checked) : onChange(field.name, checked ? \"true\" : \"false\")}\r\n />\r\n </React.Fragment>\r\n );\r\n }\r\n // Default: Input\r\n if (\r\n field.type === \"text\" ||\r\n field.type === \"email\" ||\r\n field.type === \"tel\" ||\r\n field.type === \"url\" ||\r\n field.type === \"password\"\r\n ) {\r\n return (\r\n <React.Fragment key={field.name}>\r\n {title}\r\n <Input\r\n type={field.type}\r\n name={field.name}\r\n value={field.value}\r\n placeholder={field.placeholder}\r\n required={field.required}\r\n autoFocus={field.autoFocus}\r\n onChange={e => field.onChange ? field.onChange(e) : onChange(field.name, e.target.value)}\r\n className=\"w-full\"\r\n {...field.inputProps}\r\n />\r\n </React.Fragment>\r\n );\r\n }\r\n return null;\r\n })}\r\n </div>\r\n <div className=\"flex justify-end space-x-2 mt-8\">\r\n <Button type=\"button\" variant=\"secondary\" onClick={onClose}>\r\n {closeLabel}\r\n </Button>\r\n <Button type=\"submit\" variant=\"primary\" disabled={saving}>\r\n {saveLabel}\r\n </Button>\r\n </div>\r\n </form>\r\n </div>\r\n </Modal>\r\n);\r\n\r\nEditModal.displayName = \"EditModal\";"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"EditModal.js","sources":["../../../src/components/ProfileManagement/EditModal.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Modal } from \"../Modal/Modal\";\nimport { Button } from \"../Button\";\nimport { Input } from \"../Input\";\nimport { Textarea } from \"../Textarea\";\nimport { cn } from \"../../utils/cn\";\n\nexport type EditModalField =\n | {\n type: \"text\" | \"email\" | \"tel\" | \"url\" | \"password\";\n label: string;\n name: string;\n value?: string;\n placeholder?: string;\n required?: boolean;\n autoFocus?: boolean;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n }\n | {\n type: \"textarea\";\n label: string;\n name: string;\n value?: string;\n placeholder?: string;\n required?: boolean;\n rows?: number;\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;\n }\n | {\n type: \"select\";\n label: string;\n name: string;\n value?: string;\n options: { label: string; value: string }[];\n placeholder?: string;\n required?: boolean;\n onChange?: (e: React.ChangeEvent<HTMLSelectElement>) => void;\n }\n | {\n type: \"checkbox\";\n label: string;\n name: string;\n checked?: boolean;\n required?: boolean;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n }\n | {\n type: \"radio\";\n label: string;\n name: string;\n value?: string;\n options: { label: string; value: string }[];\n required?: boolean;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n }\n | {\n type: \"switch\";\n label: string;\n name: string;\n checked?: boolean;\n required?: boolean;\n onChange?: (checked: boolean) => void;\n }\n | {\n type: \"custom\";\n name: string;\n render: () => React.ReactNode;\n };\n\nexport interface EditModalProps {\n open: boolean;\n title?: string;\n description?: string;\n fields: EditModalField[];\n onChange: (name: string, value: string) => void;\n onSave: () => void;\n onClose: () => void;\n saving?: boolean;\n saveLabel?: string;\n closeLabel?: string;\n className?: string;\n}\n\nexport const EditModal: React.FC<EditModalProps> = ({\n open,\n title,\n description,\n fields,\n onChange,\n onSave,\n onClose,\n saving,\n saveLabel = \"Save Changes\",\n closeLabel = \"Close\",\n className,\n}) => (\n <Modal open={open} onOpenChange={() => onClose()}>\n <div className={cn(\"max-w-2xl rounded-2xl p-0 p-8 mx-auto bg-white\", className)}>\n {title && <h2 className=\"text-2xl font-bold mb-1 text-gray-900\">{title}</h2>}\n {description && <p className=\"text-gray-500 mb-6\">{description}</p>}\n <form\n className=\"space-y-6\"\n onSubmit={e => {\n e.preventDefault();\n onSave();\n }}\n >\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n {fields.map((field, idx) => {\n if (field.type === \"custom\") {\n return <div key={field.name}>{field.render()}</div>;\n }\n // Title above every input/textarea/select/etc.\n const title = (\n <div key={field.name + \"-title\"} className=\"mb-1 font-medium text-gray-700\">\n {field.label}\n </div>\n );\n if (field.type === \"textarea\") {\n return (\n <React.Fragment key={field.name}>\n {title}\n <Textarea\n name={field.name}\n value={field.value}\n placeholder={field.placeholder}\n rows={field.rows || 3}\n required={field.required}\n onChange={e => field.onChange ? field.onChange(e) : onChange(field.name, e.target.value)}\n className=\"w-full\"\n />\n </React.Fragment>\n );\n }\n if (field.type === \"select\") {\n // Lazy import to avoid breaking if not present\n const { Select } = require(\"../Select/Select\");\n return (\n <React.Fragment key={field.name}>\n {title}\n <Select\n name={field.name}\n value={field.value}\n options={field.options}\n placeholder={field.placeholder}\n required={field.required}\n onChange={(e: React.ChangeEvent<HTMLSelectElement>) => field.onChange ? field.onChange(e) : onChange(field.name, e.target.value)}\n className=\"w-full\"\n />\n </React.Fragment>\n );\n }\n if (field.type === \"checkbox\") {\n const { Checkbox } = require(\"../Checkbox/Checkbox\");\n return (\n <React.Fragment key={field.name}>\n {title}\n <Checkbox\n name={field.name}\n checked={field.checked}\n required={field.required}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => field.onChange ? field.onChange(e) : onChange(field.name, e.target.checked ? \"true\" : \"false\")}\n className=\"w-5 h-5\"\n />\n </React.Fragment>\n );\n }\n if (field.type === \"radio\") {\n const { RadioGroup } = require(\"../Radio/Radio\");\n return (\n <React.Fragment key={field.name}>\n {title}\n <RadioGroup\n name={field.name}\n value={field.value}\n options={field.options}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => field.onChange ? field.onChange(e) : onChange(field.name, e.target.value)}\n />\n </React.Fragment>\n );\n }\n if (field.type === \"switch\") {\n const { Switch } = require(\"../Switch/Switch\");\n return (\n <React.Fragment key={field.name}>\n {title}\n <Switch\n name={field.name}\n checked={field.checked}\n onCheckedChange={(checked: boolean) => field.onChange ? field.onChange(checked) : onChange(field.name, checked ? \"true\" : \"false\")}\n />\n </React.Fragment>\n );\n }\n // Default: Input\n if (\n field.type === \"text\" ||\n field.type === \"email\" ||\n field.type === \"tel\" ||\n field.type === \"url\" ||\n field.type === \"password\"\n ) {\n return (\n <React.Fragment key={field.name}>\n {title}\n <Input\n type={field.type}\n name={field.name}\n value={field.value}\n placeholder={field.placeholder}\n required={field.required}\n autoFocus={field.autoFocus}\n onChange={e => field.onChange ? field.onChange(e) : onChange(field.name, e.target.value)}\n className=\"w-full\"\n {...field.inputProps}\n />\n </React.Fragment>\n );\n }\n return null;\n })}\n </div>\n <div className=\"flex justify-end space-x-2 mt-8\">\n <Button type=\"button\" variant=\"secondary\" onClick={onClose}>\n {closeLabel}\n </Button>\n <Button type=\"submit\" variant=\"primary\" disabled={saving}>\n {saveLabel}\n </Button>\n </div>\n </form>\n </div>\n </Modal>\n);\n\nEditModal.displayName = \"EditModal\";"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -9,7 +9,7 @@ import { cn } from '../../utils/cn.js';
9
9
  * - Can be used for any section (profile, info, address, custom).
10
10
  * - Theme-agnostic, accessible, and fully typed.
11
11
  */
12
- const ProfileCard = ({ header, children, footer, className, style, ...rest }) => (jsxs(Card, { className: cn("flex flex-col gap-4 p-6 rounded-xl bg-white shadow-sm border border-gray-100 mb-6", className), style: style, ...rest, children: [header && (jsx("div", { className: "flex items-center justify-between mb-2", children: header })), jsx("div", { className: "flex-1", children: children }), footer && (jsx("div", { className: "mt-4", children: footer }))] }));
12
+ const ProfileCard = ({ header, children, footer, className, style, ...rest }) => (jsxs(Card, { className: cn("flex flex-col gap-4 p-6 rounded-xl bg-white dark:bg-gray-900 shadow-sm border border-gray-100 dark:border-gray-800 mb-6", className), style: style, ...rest, children: [header && (jsx("div", { className: "flex items-center justify-between mb-2", children: header })), jsx("div", { className: "flex-1", children: children }), footer && (jsx("div", { className: "mt-4", children: footer }))] }));
13
13
  ProfileCard.displayName = "ProfileCard";
14
14
 
15
15
  export { ProfileCard };