wgp-next-shop-ui-lib
Version:
Библиотека UI-компонентов для Next-Shop с поддержкой e-commerce функций
206 lines (190 loc) • 7.86 kB
Markdown
```
ui-lib/src/
├── index.js
├── components/
│ ├── Layout/
│ │ ├── Header/
│ │ │ ├── Header.jsx
│ │ │ ├── Navbar.jsx
│ │ │ ├── Logo.jsx
│ │ │ ├── SearchBar.jsx
│ │ │ ├── CartButton.jsx
│ │ │ ├── AccountButton.jsx
│ │ │ └── MobileMenu.jsx
│ │ ├── Footer/
│ │ │ ├── Footer.jsx
│ │ │ ├── FooterLinks.jsx
│ │ │ ├── FooterSocial.jsx
│ │ │ └── FooterCopyright.jsx
│ │ └── Sidebar/
│ │ ├── Sidebar.jsx
│ │ └── SidebarMenu.jsx
│ │
│ ├── Catalog/
│ │ ├── ProductCard/
│ │ │ ├── ProductCard.jsx
│ │ │ ├── ProductImage.jsx
│ │ │ ├── ProductInfo.jsx
│ │ │ ├── ProductPrice.jsx
│ │ │ └── ProductActions.jsx
│ │ ├── ProductGrid/
│ │ │ ├── ProductGrid.jsx
│ │ │ └── ProductGridSkeleton.jsx
│ │ ├── ProductDetail/
│ │ │ ├── ProductDetail.jsx
│ │ │ ├── ProductGallery.jsx
│ │ │ ├── ProductVariations.jsx
│ │ │ └── ProductTabs.jsx
│ │ ├── CategoryList/
│ │ │ ├── CategoryList.jsx
│ │ │ ├── CategoryCard.jsx
│ │ │ └── CategoryBreadcrumbs.jsx
│ │ └── Filters/
│ │ ├── FilterPanel.jsx
│ │ ├── PriceFilter.jsx
│ │ ├── CheckboxFilter.jsx
│ │ ├── RangeFilter.jsx
│ │ └── FilterMobile.jsx
│ │
│ ├── Cart/
│ │ ├── Cart.jsx
│ │ ├── CartItem.jsx
│ │ ├── CartSummary.jsx
│ │ ├── CartDrawer.jsx
│ │ └── MiniCart.jsx
│ │
│ ├── Search/
│ │ ├── SearchInput.jsx
│ │ ├── SearchResults.jsx
│ │ ├── SearchSuggestions.jsx
│ │ ├── SearchFilters.jsx
│ │ └── SearchModal.jsx
│ │
│ ├── Auth/
│ │ ├── LoginForm.jsx
│ │ ├── RegisterForm.jsx
│ │ ├── ForgotPassword.jsx
│ │ ├── UserProfile.jsx
│ │ └── SocialLogin.jsx
│ │
│ ├── Checkout/
│ │ ├── CheckoutForm.jsx
│ │ ├── ShippingForm.jsx
│ │ ├── PaymentForm.jsx
│ │ ├── OrderSummary.jsx
│ │ └── CheckoutSteps.jsx
│ │
│ ├── Common/
│ │ ├── Button/
│ │ │ ├── Button.jsx
│ │ │ ├── IconButton.jsx
│ │ │ └── LoadingButton.jsx
│ │ ├── Modal/
│ │ │ ├── Modal.jsx
│ │ │ ├── ModalHeader.jsx
│ │ │ ├── ModalBody.jsx
│ │ │ └── ModalFooter.jsx
│ │ ├── Form/
│ │ │ ├── Input.jsx
│ │ │ ├── Select.jsx
│ │ │ ├── Checkbox.jsx
│ │ │ ├── Radio.jsx
│ │ │ └── TextArea.jsx
│ │ ├── Loading/
│ │ │ ├── Spinner.jsx
│ │ │ ├── Skeleton.jsx
│ │ │ └── ProgressBar.jsx
│ │ ├── Feedback/
│ │ │ ├── Alert.jsx
│ │ │ ├── Toast.jsx
│ │ │ └── Notification.jsx
│ │ └── Navigation/
│ │ ├── Breadcrumbs.jsx
│ │ ├── Pagination.jsx
│ │ ├── Tabs.jsx
│ │ └── Steps.jsx
│ │
│ └── Media/
│ ├── Slider/
│ │ ├── Slider.jsx
│ │ ├── SliderDots.jsx
│ │ ├── SliderArrows.jsx
│ │ └── SliderThumbs.jsx
│ ├── Gallery/
│ │ ├── ImageGallery.jsx
│ │ ├── ImageViewer.jsx
│ │ └── ImageZoom.jsx
│ └── Banner/
│ ├── Banner.jsx
│ ├── HeroBanner.jsx
│ └── PromoBanner.jsx
│
├── hooks/
│ ├── useCart.js
│ ├── useSearch.js
│ ├── useFilters.js
│ ├── useAuth.js
│ ├── useLocalStorage.js
│ └── useDebounce.js
│
├── utils/
│ ├── api.js
│ ├── formatters.js
│ ├── constants.js
│ ├── helpers.js
│ └── validators.js
│
├── styles/
│ ├── globals.css
│ ├── components/
│ └── themes/
│ ├── default.css
│ └── dark.css
│
└── types/
├── index.ts
├── product.ts
├── cart.ts
├── user.ts
└── api.ts
```
- Каждый компонент в отдельной папке
- Четкое разделение ответственности
- Переиспользуемые подкомпоненты
- Поддержка тем через CSS переменные
- Переопределение компонентов через пропсы
- Гибкая система стилей
- TypeScript интерфейсы для всех компонентов
- Строгая типизация API
- Документация через типы
- Ленивая загрузка больших компонентов
- Мемоизация где необходимо
- Оптимизированные рендеры
```javascript
// Layout
export { Header, Navbar, Logo, SearchBar } from './components/Layout/Header';
export { Footer, FooterLinks } from './components/Layout/Footer';
// Catalog
export { ProductCard, ProductGrid, ProductDetail } from './components/Catalog';
export { CategoryList, Filters } from './components/Catalog';
// Cart
export { Cart, CartItem, CartDrawer, MiniCart } from './components/Cart';
// Search
export { SearchInput, SearchResults, SearchModal } from './components/Search';
// Common
export { Button, Modal, Input, Spinner } from './components/Common';
// Media
export { Slider, Gallery, Banner } from './components/Media';
// Hooks
export { useCart, useSearch, useAuth } from './hooks';
// Utils
export { api, formatters, constants } from './utils';
```