@ekoru/ui 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,28 +1,812 @@
1
1
  import * as class_variance_authority_types from 'class-variance-authority/types';
2
- import * as React from 'react';
2
+ import * as React$1 from 'react';
3
+ import React__default from 'react';
3
4
  import { VariantProps } from 'class-variance-authority';
5
+ import { LucideIcon } from 'lucide-react';
6
+ import * as react_jsx_runtime from 'react/jsx-runtime';
4
7
  import { ClassValue } from 'clsx';
5
8
 
9
+ declare const adBannerVariants: (props?: ({
10
+ variant?: "primary" | "secondary" | "outlined" | "ghost" | null | undefined;
11
+ animated?: boolean | null | undefined;
12
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
13
+ interface AdBannerProps extends Omit<React$1.HTMLAttributes<HTMLElement>, 'onDrag' | 'onDragEnd' | 'onDragStart' | 'onAnimationStart' | 'onAnimationEnd'>, VariantProps<typeof adBannerVariants> {
14
+ icon?: LucideIcon;
15
+ title?: string;
16
+ description?: string;
17
+ cta: React$1.ReactNode;
18
+ }
19
+ declare const AdBanner: React$1.ForwardRefExoticComponent<AdBannerProps & React$1.RefAttributes<HTMLDivElement>>;
20
+
21
+ declare const bannerVariants: (props?: ({
22
+ variant?: "primary" | "secondary" | "outlined" | "ghost" | null | undefined;
23
+ animated?: boolean | null | undefined;
24
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
25
+ interface BannerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, 'onDrag' | 'onDragEnd' | 'onDragStart' | 'onAnimationStart' | 'onAnimationEnd'>, VariantProps<typeof bannerVariants> {
26
+ /**
27
+ * The main title text of the banner
28
+ */
29
+ title: string;
30
+ /**
31
+ * The description text of the banner
32
+ */
33
+ description: string;
34
+ /**
35
+ * Whether to show decorative dots around the title
36
+ */
37
+ showDots?: boolean;
38
+ }
39
+ declare const Banner: React$1.ForwardRefExoticComponent<BannerProps & React$1.RefAttributes<HTMLDivElement>>;
40
+
6
41
  declare const buttonVariants: (props?: ({
7
- variant?: "primary" | "secondary" | "outline" | "ghost" | "success" | "warning" | "error" | null | undefined;
42
+ variant?: "primary" | "secondary" | "ghost" | "outline" | "secondary_outline" | "success" | "warning" | "error" | null | undefined;
8
43
  size?: "sm" | "md" | "lg" | null | undefined;
9
44
  fullWidth?: boolean | null | undefined;
10
45
  } & class_variance_authority_types.ClassProp) | undefined) => string;
11
- interface ButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onDrag' | 'onDragEnd' | 'onDragStart' | 'onAnimationStart' | 'onAnimationEnd'>, VariantProps<typeof buttonVariants> {
46
+ interface ButtonProps extends Omit<React$1.ButtonHTMLAttributes<HTMLButtonElement>, 'onDrag' | 'onDragEnd' | 'onDragStart' | 'onAnimationStart' | 'onAnimationEnd'>, VariantProps<typeof buttonVariants> {
12
47
  /**
13
48
  * If true, the button will show a loading spinner
14
49
  */
15
50
  isLoading?: boolean;
51
+ loadingText?: string;
16
52
  /**
17
53
  * Icon to display before the button text (can be a lucide-react component or JSX element)
18
54
  */
19
- leftIcon?: React.ElementType | React.ReactElement;
55
+ leftIcon?: React$1.ElementType | React$1.ReactElement;
20
56
  /**
21
57
  * Icon to display after the button text (can be a lucide-react component or JSX element)
22
58
  */
23
- rightIcon?: React.ElementType | React.ReactElement;
59
+ rightIcon?: React$1.ElementType | React$1.ReactElement;
60
+ }
61
+ declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
62
+
63
+ interface CardProps {
64
+ title: string;
65
+ description?: string;
66
+ cta?: React.ReactNode;
67
+ image?: React.ReactNode;
68
+ hasBadge?: boolean;
69
+ badgeText?: string;
70
+ badgeColor?: string;
71
+ textColor?: string;
72
+ }
73
+ declare function Card({ image, title, description, cta, hasBadge, badgeText, badgeColor, textColor, }: CardProps): react_jsx_runtime.JSX.Element;
74
+
75
+ declare const checkboxVariants: (props?: ({
76
+ variant?: "outline" | "default" | "filled" | null | undefined;
77
+ size?: "sm" | "md" | "lg" | null | undefined;
78
+ checked?: boolean | null | undefined;
79
+ disabled?: boolean | null | undefined;
80
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
81
+ type CheckboxVariantProps = VariantProps<typeof checkboxVariants>;
82
+ interface CheckboxProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, 'size'>, Omit<CheckboxVariantProps, 'checked' | 'disabled'> {
83
+ /**
84
+ * Checkbox label text
85
+ */
86
+ label?: string;
87
+ /**
88
+ * Optional description text below the label
89
+ */
90
+ description?: string;
91
+ /**
92
+ * Error message to display
93
+ */
94
+ errorMessage?: string;
95
+ /**
96
+ * Whether the checkbox is checked
97
+ */
98
+ checked?: boolean;
99
+ /**
100
+ * Callback when checkbox state changes
101
+ */
102
+ onCheckedChange?: (checked: boolean) => void;
103
+ }
104
+ declare const Checkbox: React$1.ForwardRefExoticComponent<CheckboxProps & React$1.RefAttributes<HTMLInputElement>>;
105
+
106
+ interface EnvironmentalImpactModalProps {
107
+ isOpen?: boolean;
108
+ onClose?: () => void;
109
+ environmentalImpact: {
110
+ totalCo2SavingsKG: number;
111
+ totalWaterSavingsLT: number;
112
+ materialBreakdown: Array<{
113
+ materialType: string;
114
+ percentage: number;
115
+ weightKG: number;
116
+ co2SavingsKG: number;
117
+ waterSavingsLT: number;
118
+ }>;
119
+ };
120
+ co2SavingsTitle?: string;
121
+ waterSavingsTitle?: string;
122
+ weightLabel?: string;
123
+ co2SavingsLabel?: string;
124
+ waterSavingsLabel?: string;
125
+ materialBreakdownLabel?: string;
126
+ co2EquivalenceLabel?: string;
127
+ waterEquivalenceLabel?: string;
128
+ infoText?: string;
129
+ carDistanceLabel?: string;
130
+ showerCountLabel?: string;
131
+ }
132
+ declare function EnvironmentalImpactModal({ isOpen, onClose, environmentalImpact, co2SavingsTitle, waterSavingsTitle, weightLabel, co2SavingsLabel, waterSavingsLabel, materialBreakdownLabel, carDistanceLabel, showerCountLabel, co2EquivalenceLabel, waterEquivalenceLabel, infoText, }: EnvironmentalImpactModalProps): react_jsx_runtime.JSX.Element;
133
+
134
+ interface FooterProps {
135
+ brand?: React.ReactNode;
136
+ socialLinks?: Array<React.ReactNode>;
137
+ description?: string;
138
+ exploreLabel?: string;
139
+ communityLabel?: string;
140
+ legalLabel?: string;
141
+ exploreItems?: Array<React.ReactNode>;
142
+ communityItems?: Array<React.ReactNode>;
143
+ legalItems?: Array<React.ReactNode>;
144
+ copyRightText?: string;
145
+ }
146
+ declare function Footer({ brand, socialLinks, description, exploreItems, exploreLabel, communityItems, communityLabel, legalItems, legalLabel, copyRightText, }: FooterProps): react_jsx_runtime.JSX.Element;
147
+
148
+ declare const modalVariants: (props?: ({
149
+ size?: "sm" | "md" | "lg" | "xl" | "full" | null | undefined;
150
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
151
+ interface ModalProps extends VariantProps<typeof modalVariants> {
152
+ isOpen?: boolean;
153
+ onClose?: () => void;
154
+ children: React.ReactNode;
155
+ title?: string;
156
+ showCloseButton?: boolean;
157
+ closeOnOverlayClick?: boolean;
158
+ closeOnEscape?: boolean;
159
+ className?: string;
160
+ }
161
+ declare function Modal({ isOpen, onClose, children, title, size, showCloseButton, closeOnOverlayClick, closeOnEscape, className, }: ModalProps): React$1.ReactPortal | null;
162
+
163
+ interface NavbarProps {
164
+ brand?: React__default.ReactNode;
165
+ navigationIcons?: Array<React__default.ReactNode>;
166
+ navigationLinks?: Array<React__default.ReactNode>;
167
+ searchPlaceholder?: string;
168
+ onSearch?: (query: string) => void;
169
+ mobileMenuContent?: React__default.ReactNode;
170
+ className?: string;
171
+ searchEnabled?: boolean;
172
+ sideMenuTitle?: string;
173
+ navbarAriaLabel?: string;
174
+ userActionsAriaLabel?: string;
175
+ toggleMobileMenuAriaLabel?: string;
176
+ closeMobileMenuAriaLabel?: string;
177
+ mobileMenuTitleAriaLabel?: string;
178
+ }
179
+ declare function Navbar({ navigationIcons, navigationLinks, brand, searchPlaceholder, onSearch, mobileMenuContent, className, searchEnabled, sideMenuTitle, navbarAriaLabel, userActionsAriaLabel, toggleMobileMenuAriaLabel, closeMobileMenuAriaLabel, mobileMenuTitleAriaLabel, }: NavbarProps): react_jsx_runtime.JSX.Element;
180
+
181
+ declare const paginationButtonVariants: (props?: ({
182
+ variant?: "primary" | "outline" | "default" | null | undefined;
183
+ size?: "sm" | "md" | "lg" | null | undefined;
184
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
185
+ type PaginationVariantProps = VariantProps<typeof paginationButtonVariants>;
186
+ interface PaginationProps extends PaginationVariantProps {
187
+ /**
188
+ * Current active page (1-indexed)
189
+ */
190
+ currentPage: number;
191
+ /**
192
+ * Total number of pages
193
+ */
194
+ totalPages: number;
195
+ /**
196
+ * Callback when page changes
197
+ */
198
+ onPageChange: (page: number) => void;
199
+ /**
200
+ * Items per page value
201
+ */
202
+ itemsPerPage?: number;
203
+ /**
204
+ * Callback when items per page changes
205
+ */
206
+ onItemsPerPageChange?: (pageSize: number) => void;
207
+ /**
208
+ * Label for the previous button
209
+ */
210
+ previousLabel?: string;
211
+ /**
212
+ * Label for the next button
213
+ */
214
+ nextLabel?: string;
215
+ /**
216
+ * Show items per page selector
217
+ */
218
+ showItemsPerPage?: boolean;
219
+ /**
220
+ * Available items per page options
221
+ */
222
+ itemsPerPageOptions?: number[];
223
+ /**
224
+ * Show page info text
225
+ */
226
+ showPageInfo?: boolean;
227
+ /**
228
+ * Custom page info text template
229
+ */
230
+ pageInfoTemplate?: string;
231
+ /**
232
+ * Show icons in buttons
233
+ */
234
+ showIcons?: boolean;
235
+ /**
236
+ * Additional CSS classes
237
+ */
238
+ className?: string;
239
+ rowsLabel?: string;
240
+ previousAriaLabel?: string;
241
+ nextAriaLabel?: string;
242
+ }
243
+ declare const Pagination: React$1.ForwardRefExoticComponent<PaginationProps & React$1.RefAttributes<HTMLDivElement>>;
244
+
245
+ declare enum PersonSubscriptionPlan {
246
+ FREEMIUM = "FREEMIUM",
247
+ BASIC = "BASIC",
248
+ ADVANCED = "ADVANCED"
249
+ }
250
+ type BusinessSubscriptionPlan = 'FREEMIUM' | 'STARTUP' | 'BASIC' | 'ADVANCED' | 'EXPERT';
251
+ declare enum SellerType {
252
+ PERSON = "PERSON",
253
+ STARTUP = "STARTUP",
254
+ COMPANY = "COMPANY"
255
+ }
256
+ declare enum BusinessType {
257
+ RETAIL = "RETAIL",
258
+ SERVICES = "SERVICES",
259
+ MIXED = "MIXED"
260
+ }
261
+ declare enum ProductCondition {
262
+ NEW = "NEW",
263
+ OPEN_BOX = "OPEN_BOX",
264
+ LIKE_NEW = "LIKE_NEW",
265
+ FAIR = "FAIR",
266
+ POOR = "POOR",
267
+ FOR_PARTS = "FOR_PARTS",
268
+ REFURBISHED = "REFURBISHED"
269
+ }
270
+ declare enum ProductSize {
271
+ XS = "XS",
272
+ S = "S",
273
+ M = "M",
274
+ L = "L",
275
+ XL = "XL"
276
+ }
277
+ declare enum Badge {
278
+ POPULAR = "POPULAR",
279
+ DISCOUNTED = "DISCOUNTED",
280
+ WOMAN_OWNED = "WOMAN_OWNED",
281
+ BEST_SELLER = "BEST_SELLER",
282
+ TOP_RATED = "TOP_RATED",
283
+ COMMUNITY_FAVORITE = "COMMUNITY_FAVORITE",
284
+ LIMITED_TIME_OFFER = "LIMITED_TIME_OFFER",
285
+ FLASH_SALE = "FLASH_SALE",
286
+ BEST_VALUE = "BEST_VALUE",
287
+ HANDMADE = "HANDMADE",
288
+ SUSTAINABLE = "SUSTAINABLE",
289
+ SUPPORTS_CAUSE = "SUPPORTS_CAUSE",
290
+ FAMILY_BUSINESS = "FAMILY_BUSINESS",
291
+ CHARITY_SUPPORT = "CHARITY_SUPPORT",
292
+ LIMITED_STOCK = "LIMITED_STOCK",
293
+ SEASONAL = "SEASONAL",
294
+ FREE_SHIPPING = "FREE_SHIPPING",
295
+ FOR_REPAIR = "FOR_REPAIR",
296
+ REFURBISHED = "REFURBISHED",
297
+ EXCHANGEABLE = "EXCHANGEABLE",
298
+ LAST_PRICE = "LAST_PRICE",
299
+ FOR_GIFT = "FOR_GIFT",
300
+ OPEN_TO_OFFERS = "OPEN_TO_OFFERS",
301
+ OPEN_BOX = "OPEN_BOX",
302
+ CRUELTY_FREE = "CRUELTY_FREE",
303
+ DELIVERED_TO_HOME = "DELIVERED_TO_HOME",
304
+ IN_HOUSE_PICKUP = "IN_HOUSE_PICKUP",
305
+ IN_MID_POINT_PICKUP = "IN_MID_POINT_PICKUP"
306
+ }
307
+ declare enum ContactMethod {
308
+ EMAIL = "EMAIL",
309
+ WHATSAPP = "WHATSAPP",
310
+ PHONE = "PHONE",
311
+ INSTAGRAM = "INSTAGRAM",
312
+ FACEBOOK = "FACEBOOK",
313
+ WEBSITE = "WEBSITE",
314
+ TIKTOK = "TIKTOK"
315
+ }
316
+ declare enum WeightUnit {
317
+ KG = "KG",
318
+ LB = "LB",
319
+ OZ = "OZ",
320
+ G = "G"
321
+ }
322
+
323
+ type Country = {
324
+ id: number;
325
+ country: string;
326
+ countryConfig?: CountryConfig;
327
+ };
328
+ type Region = {
329
+ id: number;
330
+ region: string;
331
+ countryId: number;
332
+ };
333
+ type City = {
334
+ id: number;
335
+ city: string;
336
+ regionId: number;
337
+ };
338
+ type County = {
339
+ id: number;
340
+ county: string;
341
+ cityId: number;
342
+ };
343
+ type CountryConfig = {
344
+ id: number;
345
+ countryId: number;
346
+ countryCode: string;
347
+ currencyCode: string;
348
+ currencySymbol: string;
349
+ taxIdLabel: string;
350
+ taxIdFormat?: string;
351
+ defaultTimezone: string;
352
+ defaultLocale: string;
353
+ isActive: boolean;
354
+ phonePrefix: string;
355
+ availablePaymentProviders: Record<string, unknown>;
356
+ createdAt: string;
357
+ updatedAt: string;
358
+ };
359
+
360
+ type Seller = {
361
+ id: string;
362
+ email: string;
363
+ password?: string;
364
+ sellerType: SellerType;
365
+ isActive: boolean;
366
+ isVerified: boolean;
367
+ createdAt: string;
368
+ updatedAt: string;
369
+ profile: PersonProfile | BusinessProfile;
370
+ address?: string;
371
+ cityId?: number;
372
+ countryId?: number;
373
+ countyId?: number;
374
+ regionId?: number;
375
+ county?: County;
376
+ region?: Region;
377
+ country?: Country;
378
+ city?: City;
379
+ phone?: string;
380
+ website?: string;
381
+ preferredContactMethod?: ContactMethod;
382
+ socialMediaLinks?: Record<string, string>;
383
+ points: number;
384
+ sellerLevelId?: number;
385
+ sellerLevel?: SellerLevel;
386
+ sellerCategoryId?: number;
387
+ sellerCategory?: SellerCategory;
388
+ };
389
+ type PersonProfile = {
390
+ __typename: 'PersonProfile';
391
+ id: string;
392
+ sellerId: string;
393
+ firstName: string;
394
+ lastName?: string;
395
+ displayName?: string;
396
+ bio?: string;
397
+ birthday?: string;
398
+ profileImage?: string;
399
+ coverImage?: string;
400
+ allowExchanges: boolean;
401
+ personSubscriptionPlan: PersonSubscriptionPlan;
402
+ };
403
+ type BusinessProfile = {
404
+ __typename: 'BusinessProfile';
405
+ id: string;
406
+ sellerId: string;
407
+ businessName: string;
408
+ description?: string;
409
+ logo?: string;
410
+ coverImage?: string;
411
+ businessType: BusinessType;
412
+ legalBusinessName?: string;
413
+ taxId?: string;
414
+ businessStartDate?: string;
415
+ legalRepresentative?: string;
416
+ legalRepresentativeTaxId?: string;
417
+ shippingPolicy?: string;
418
+ returnPolicy?: string;
419
+ serviceArea?: string;
420
+ yearsOfExperience?: number;
421
+ certifications?: string[];
422
+ travelRadius?: number;
423
+ businessHours?: Record<string, unknown>;
424
+ businessSubscriptionPlan: BusinessSubscriptionPlan;
425
+ createdAt: string;
426
+ updatedAt: string;
427
+ };
428
+ type SellerCategory = {
429
+ id: number;
430
+ name: string;
431
+ categoryDiscountAmount: number;
432
+ pointsThreshold: number;
433
+ level: number;
434
+ };
435
+ type SellerLevel = {
436
+ id: number;
437
+ levelName: string;
438
+ minPoints: number;
439
+ maxPoints?: number;
440
+ benefits?: Record<string, unknown>;
441
+ badgeIcon?: string;
442
+ createdAt: string;
443
+ updatedAt: string;
444
+ };
445
+
446
+ interface MaterialImpactEstimate {
447
+ id: number;
448
+ materialType: string;
449
+ estimatedCo2SavingsKG: number;
450
+ estimatedWaterSavingsLT: number;
451
+ }
452
+ interface ProductCategoryMaterial {
453
+ id: number;
454
+ productCategoryId: number;
455
+ materialTypeId: number;
456
+ quantity: number;
457
+ unit: string;
458
+ isPrimary: boolean;
459
+ createdAt: string;
460
+ updatedAt: string;
461
+ material: MaterialImpactEstimate;
462
+ }
463
+ interface ProductCategory {
464
+ id: number;
465
+ departmentCategoryId: number;
466
+ keywords: string[];
467
+ productCategoryName: string;
468
+ size?: ProductSize;
469
+ averageWeight?: number;
470
+ weightUnit?: WeightUnit;
471
+ products?: MarketplaceProduct[];
472
+ materials?: ProductCategoryMaterial[];
473
+ href: string;
474
+ }
475
+ interface MarketplaceProduct {
476
+ id: number;
477
+ name: string;
478
+ description: string;
479
+ price: number;
480
+ sellerId: string;
481
+ badges: Badge[];
482
+ brand: string;
483
+ color?: string;
484
+ createdAt: string;
485
+ images: string[];
486
+ interests: string[];
487
+ isActive: boolean;
488
+ isExchangeable: boolean;
489
+ productCategoryId: number;
490
+ updatedAt: string;
491
+ condition: ProductCondition;
492
+ conditionDescription?: string;
493
+ deletedAt?: string;
494
+ seller?: Partial<Seller>;
495
+ /** Environmental impact summary, may come from product category or store category */
496
+ environmentalImpact?: EnvironmentalImpact | undefined;
497
+ productCategory?: ProductCategory;
498
+ }
499
+ type StoreProduct = {
500
+ id: number;
501
+ name: string;
502
+ description: string;
503
+ stock: number;
504
+ barcode?: string;
505
+ sku?: string;
506
+ price: number;
507
+ hasOffer: boolean;
508
+ offerPrice?: number;
509
+ sellerId: string;
510
+ seller: Partial<Seller>;
511
+ createdAt: string;
512
+ images: string[];
513
+ isActive: boolean;
514
+ updatedAt: string;
515
+ badges: Badge[];
516
+ brand?: string;
517
+ color?: string;
518
+ ratingCount: number;
519
+ averageRating: number;
520
+ reviewsNumber: number;
521
+ storeSubCategoryId: number;
522
+ storeSubCategory: StoreSubCategory;
523
+ /** Environmental impact summary, may come from product category or store category */
524
+ environmentalImpact?: EnvironmentalImpact | undefined;
525
+ deletedAt?: string;
526
+ };
527
+ interface MaterialBreakdown {
528
+ materialType: string;
529
+ percentage: number;
530
+ weightKG?: number;
531
+ co2SavingsKG?: number;
532
+ waterSavingsLT?: number;
533
+ }
534
+ interface EnvironmentalImpact {
535
+ totalCo2SavingsKG: number;
536
+ totalWaterSavingsLT: number;
537
+ materialBreakdown: MaterialBreakdown[];
538
+ }
539
+ type StoreProductMaterial = {
540
+ id: number;
541
+ storeProductId: number;
542
+ materialTypeId: number;
543
+ quantity: number;
544
+ unit: string;
545
+ isPrimary: boolean;
546
+ createdAt: string;
547
+ updatedAt: string;
548
+ };
549
+ type StoreCategory = {
550
+ id: number;
551
+ category: string;
552
+ subcategories: StoreSubCategory[];
553
+ href: string;
554
+ };
555
+ type StoreSubCategory = {
556
+ id: number;
557
+ storeCategoryId: number;
558
+ subCategory: string;
559
+ storeCategory: StoreCategory;
560
+ products: StoreProduct[];
561
+ href: string;
562
+ materials: StoreProductMaterial[];
563
+ };
564
+
565
+ interface ProductCardProps {
566
+ product: Partial<MarketplaceProduct> | Partial<StoreProduct>;
567
+ }
568
+ declare function ProductCard({ product }: ProductCardProps): react_jsx_runtime.JSX.Element;
569
+
570
+ interface FrontSideProps {
571
+ isFlipped: boolean;
572
+ setIsFlipped: (flipped: boolean) => void;
573
+ onCardClick: () => void;
574
+ productImage?: React.ReactNode;
575
+ fallbackImage?: React.ReactNode;
576
+ productCondition?: string;
577
+ brand?: string;
578
+ name?: string;
579
+ description?: string;
580
+ price?: number;
581
+ color?: string;
582
+ isExchangeable?: boolean;
583
+ isStoreProduct?: boolean;
584
+ interests?: string[];
585
+ hasOffer?: boolean;
586
+ offerLabel?: string;
587
+ offerPrice?: number;
588
+ localeString?: string;
589
+ onAddToCart?: () => void;
590
+ onExchange?: () => void;
591
+ addToCartAriaLabel?: string;
592
+ exchangeAriaLabel?: string;
593
+ addToCartLabel?: string;
594
+ exchangeLabel?: string;
595
+ }
596
+ declare function CardFrontSide({ isFlipped, setIsFlipped, onCardClick, productImage, fallbackImage, productCondition, brand, name, description, price, color, isExchangeable, isStoreProduct, hasOffer, offerPrice, onAddToCart, onExchange, addToCartAriaLabel, exchangeAriaLabel, offerLabel, localeString, addToCartLabel, exchangeLabel, interests, }: FrontSideProps): react_jsx_runtime.JSX.Element;
597
+
598
+ interface BackSideProps {
599
+ isFlipped: boolean;
600
+ setIsFlipped: (flipped: boolean) => void;
601
+ setShowImpactModal: (show: boolean) => void;
602
+ sellerName?: string;
603
+ sellerPhone?: string;
604
+ sellerAddress?: string;
605
+ environmentalImpact?: ProductCategoryMaterial[] | StoreProductMaterial[] | EnvironmentalImpactModalProps['environmentalImpact'];
606
+ impactLabel?: string;
607
+ materialsLabel?: string;
608
+ viewMoreLabel?: string;
609
+ sellerLabel?: string;
610
+ co2Label?: string;
611
+ waterLabel?: string;
612
+ }
613
+ declare function CardBackSide({ isFlipped, setIsFlipped, setShowImpactModal, environmentalImpact, sellerName, sellerPhone, sellerAddress, impactLabel, materialsLabel, viewMoreLabel, sellerLabel, co2Label, waterLabel, }: BackSideProps): react_jsx_runtime.JSX.Element;
614
+
615
+ declare const selectVariants: (props?: ({
616
+ variant?: "outline" | "default" | "filled" | null | undefined;
617
+ size?: "sm" | "md" | "lg" | null | undefined;
618
+ hasError?: boolean | null | undefined;
619
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
620
+ type SelectVariantProps = VariantProps<typeof selectVariants>;
621
+ type Option = {
622
+ label: string;
623
+ value: string | number;
624
+ iconColor?: string;
625
+ };
626
+ interface SelectProps extends Omit<SelectVariantProps, 'hasError'> {
627
+ /**
628
+ * Array of options to display in the dropdown
629
+ */
630
+ options?: Option[];
631
+ /**
632
+ * Label text displayed above the select
633
+ */
634
+ label?: string;
635
+ /**
636
+ * Icon component to display on the left side
637
+ */
638
+ leftIcon?: LucideIcon;
639
+ /**
640
+ * Error message to display below the select
641
+ */
642
+ errorMessage?: string;
643
+ /**
644
+ * Selected value
645
+ */
646
+ value?: string | number;
647
+ /**
648
+ * Name attribute for form handling
649
+ */
650
+ name?: string;
651
+ /**
652
+ * Placeholder text when no value is selected
653
+ */
654
+ placeholder?: string;
655
+ /**
656
+ * Callback when selection changes
657
+ */
658
+ onChange?: (value: string | number) => void;
659
+ /**
660
+ * Width variant of the select container
661
+ */
662
+ width?: 'sm' | 'md' | 'lg' | 'full';
663
+ /**
664
+ * Whether the select is disabled
665
+ */
666
+ disabled?: boolean;
667
+ /**
668
+ * Whether the select is read-only
669
+ */
670
+ readOnly?: boolean;
671
+ /**
672
+ * Whether to show color circles for options
673
+ */
674
+ showColorIcon?: boolean;
675
+ /**
676
+ * Custom render function for options
677
+ */
678
+ renderOption?: (option: Option, selected: boolean) => React$1.ReactNode;
679
+ /**
680
+ * Whether to enable search/filter functionality
681
+ */
682
+ searchEnabled?: boolean;
683
+ /**
684
+ * Direction for dropdown expansion
685
+ */
686
+ dropdownDirection?: 'up' | 'down';
687
+ /**
688
+ * Additional CSS classes
689
+ */
690
+ className?: string;
691
+ /**
692
+ * No results text
693
+ */
694
+ noResultsText?: string;
695
+ }
696
+ declare const Select: React$1.ForwardRefExoticComponent<SelectProps & React$1.RefAttributes<HTMLButtonElement>>;
697
+
698
+ interface StatsCardProps {
699
+ icon: LucideIcon;
700
+ mainText: string | number;
701
+ description: string;
702
+ }
703
+ declare function StatsCard({ icon: Icon, mainText, description, }: StatsCardProps): react_jsx_runtime.JSX.Element;
704
+
705
+ declare const textVariants: (props?: ({
706
+ variant?: "blockquote" | "code" | "label" | "p" | "small" | "span" | null | undefined;
707
+ size?: "base" | "sm" | "lg" | "xl" | "xs" | null | undefined;
708
+ weight?: "bold" | "normal" | "medium" | "semibold" | null | undefined;
709
+ color?: "primary" | "secondary" | "default" | "success" | "warning" | "error" | "tertiary" | "muted" | null | undefined;
710
+ align?: "center" | "left" | "right" | "justify" | null | undefined;
711
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
712
+ type TextVariantProps = VariantProps<typeof textVariants>;
713
+ interface TextProps extends Omit<React$1.HTMLAttributes<HTMLElement>, 'color'>, TextVariantProps {
714
+ /**
715
+ * The HTML element to render
716
+ */
717
+ variant?: 'p' | 'span' | 'label' | 'blockquote' | 'small' | 'code';
718
+ /**
719
+ * Content to display
720
+ */
721
+ children: React$1.ReactNode;
722
+ /**
723
+ * For label variant - associates label with input
724
+ */
725
+ htmlFor?: string;
726
+ /**
727
+ * Render as a different element while maintaining variant styling
728
+ */
729
+ as?: 'p' | 'span' | 'label' | 'blockquote' | 'small' | 'div' | 'code';
730
+ }
731
+ declare const Text: React$1.ForwardRefExoticComponent<TextProps & React$1.RefAttributes<HTMLElement>>;
732
+
733
+ declare const textareaVariants: (props?: ({
734
+ variant?: "outline" | "default" | "filled" | null | undefined;
735
+ textSize?: "sm" | "md" | "lg" | null | undefined;
736
+ hasError?: boolean | null | undefined;
737
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
738
+ type TextareaVariantProps = VariantProps<typeof textareaVariants>;
739
+ interface TextareaProps extends Omit<React$1.TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'>, Omit<TextareaVariantProps, 'hasError'> {
740
+ /**
741
+ * Label text displayed above the textarea
742
+ */
743
+ label?: string;
744
+ /**
745
+ * Error message to display below the textarea
746
+ */
747
+ errorMessage?: string;
748
+ /**
749
+ * Whether to show character count
750
+ */
751
+ showCharCount?: boolean;
752
+ /**
753
+ * Width variant of the textarea container
754
+ */
755
+ width?: 'sm' | 'md' | 'lg' | 'full';
756
+ }
757
+ declare const Textarea: React$1.ForwardRefExoticComponent<TextareaProps & React$1.RefAttributes<HTMLTextAreaElement>>;
758
+
759
+ declare const inputVariants: (props?: ({
760
+ variant?: "outline" | "default" | "filled" | null | undefined;
761
+ size?: "sm" | "md" | "lg" | null | undefined;
762
+ hasError?: boolean | null | undefined;
763
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
764
+ interface TextInputProps extends Omit<React$1.InputHTMLAttributes<HTMLInputElement>, 'size' | 'onChange'>, VariantProps<typeof inputVariants> {
765
+ /**
766
+ * Label text displayed above the input
767
+ */
768
+ label?: string;
769
+ /**
770
+ * Icon component to display on the left side
771
+ */
772
+ leftIcon?: LucideIcon;
773
+ /**
774
+ * Error message to display below the input
775
+ */
776
+ errorMessage?: string;
777
+ /**
778
+ * Callback function when input value changes
779
+ */
780
+ onChange?: (e: React$1.ChangeEvent<HTMLInputElement>) => void;
781
+ /**
782
+ * Width variant of the input container
783
+ */
784
+ width?: 'sm' | 'md' | 'lg' | 'full';
785
+ }
786
+ declare const TextInput: React$1.ForwardRefExoticComponent<TextInputProps & React$1.RefAttributes<HTMLInputElement>>;
787
+
788
+ declare const titleVariants: (props?: ({
789
+ level?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | null | undefined;
790
+ weight?: "bold" | "normal" | "medium" | "semibold" | "extrabold" | null | undefined;
791
+ color?: "primary" | "secondary" | "default" | "success" | "warning" | "error" | "tertiary" | null | undefined;
792
+ align?: "center" | "left" | "right" | null | undefined;
793
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
794
+ type TitleVariantProps = VariantProps<typeof titleVariants>;
795
+ interface TitleProps extends Omit<React$1.HTMLAttributes<HTMLHeadingElement>, 'color'>, TitleVariantProps {
796
+ /**
797
+ * The semantic heading level to render
798
+ */
799
+ level?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
800
+ /**
801
+ * Content to display
802
+ */
803
+ children: React$1.ReactNode;
804
+ /**
805
+ * Whether to render as a different heading level for styling while maintaining semantic meaning
806
+ */
807
+ as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
24
808
  }
25
- declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
809
+ declare const Title: React$1.ForwardRefExoticComponent<TitleProps & React$1.RefAttributes<HTMLHeadingElement>>;
26
810
 
27
811
  /**
28
812
  * Utility function to merge Tailwind CSS classes
@@ -33,4 +817,4 @@ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAtt
33
817
  */
34
818
  declare function cn(...inputs: ClassValue[]): string;
35
819
 
36
- export { Button, type ButtonProps, buttonVariants, cn };
820
+ export { AdBanner, type AdBannerProps, type BackSideProps, Banner, type BannerProps, Button, type ButtonProps, Card, CardBackSide, CardFrontSide, type CardProps, Checkbox, type CheckboxProps, EnvironmentalImpactModal, type EnvironmentalImpactModalProps, Footer, type FooterProps, type FrontSideProps, Modal, type ModalProps, Navbar, type NavbarProps, type Option, Pagination, type PaginationProps, ProductCard, type ProductCardProps, Select, type SelectProps, StatsCard, type StatsCardProps, Text, TextInput, type TextInputProps, type TextProps, Textarea, type TextareaProps, Title, type TitleProps, bannerVariants, buttonVariants, checkboxVariants, cn, inputVariants, paginationButtonVariants, selectVariants, textVariants, textareaVariants, titleVariants };