ads-web-sdkm 2.0.24

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 (89) hide show
  1. package/README.md +369 -0
  2. package/dist/AdsCarousel.css +1 -0
  3. package/dist/AdsCarousel.d.ts +1 -0
  4. package/dist/AdsCarousel.js +519 -0
  5. package/dist/AdsCarousel.js.map +1 -0
  6. package/dist/Brandshop.css +1 -0
  7. package/dist/Brandshop.d.ts +1 -0
  8. package/dist/Brandshop.js +918 -0
  9. package/dist/Brandshop.js.map +1 -0
  10. package/dist/Brandshops.css +1 -0
  11. package/dist/Brandshops.d.ts +1 -0
  12. package/dist/Brandshops.js +103 -0
  13. package/dist/Brandshops.js.map +1 -0
  14. package/dist/Image-zvdPHg5N.js +35 -0
  15. package/dist/Image-zvdPHg5N.js.map +1 -0
  16. package/dist/ReactQueryProvider-D__k2BsQ.js +6755 -0
  17. package/dist/ReactQueryProvider-D__k2BsQ.js.map +1 -0
  18. package/dist/ads-CChrT00a.js +4470 -0
  19. package/dist/ads-CChrT00a.js.map +1 -0
  20. package/dist/api/queries/useGetAds.d.ts +16 -0
  21. package/dist/api/queries/useGetBrandshop.d.ts +14 -0
  22. package/dist/api/queries/useGetBrandshopList.d.ts +11 -0
  23. package/dist/api/queries/useGetCollection.d.ts +11 -0
  24. package/dist/api/services/getAds.d.ts +14 -0
  25. package/dist/api/services/getBrandshop.d.ts +13 -0
  26. package/dist/api/services/getBrandshopList.d.ts +11 -0
  27. package/dist/api/services/getCollection.d.ts +4 -0
  28. package/dist/components/Brandshop/Banner.d.ts +6 -0
  29. package/dist/components/Brandshop/BannerSection.d.ts +15 -0
  30. package/dist/components/Brandshop/BannerWithLink.d.ts +8 -0
  31. package/dist/components/Brandshop/Brandshop.d.ts +16 -0
  32. package/dist/components/Brandshop/BrandshopContent.d.ts +3 -0
  33. package/dist/components/Brandshop/BrandshopError.d.ts +6 -0
  34. package/dist/components/Brandshop/BrandshopSection.d.ts +18 -0
  35. package/dist/components/Brandshop/BrandshopSkeleton.d.ts +1 -0
  36. package/dist/components/Brandshop/CategorySection.d.ts +14 -0
  37. package/dist/components/Brandshop/NavigationSection.d.ts +16 -0
  38. package/dist/components/Brandshop/ProductSliderSection.d.ts +18 -0
  39. package/dist/components/Brandshop/index.d.ts +1 -0
  40. package/dist/components/Brandshops/Brandshops.d.ts +11 -0
  41. package/dist/components/Brandshops/BrandshopsList.d.ts +3 -0
  42. package/dist/components/Brandshops/BrandshopsSkeleton.d.ts +6 -0
  43. package/dist/components/Brandshops/index.d.ts +1 -0
  44. package/dist/components/Card/Card.d.ts +8 -0
  45. package/dist/components/Carousel/AdBanner.d.ts +17 -0
  46. package/dist/components/Carousel/AdBanners.d.ts +24 -0
  47. package/dist/components/Carousel/AdCarousel.d.ts +43 -0
  48. package/dist/components/Carousel/AdSkeleton.d.ts +8 -0
  49. package/dist/components/Carousel/AdsCarousel.d.ts +24 -0
  50. package/dist/components/Carousel/index.d.ts +1 -0
  51. package/dist/components/Chip/Chip.d.ts +6 -0
  52. package/dist/components/ErrorBoundary/ErrorBoundary.d.ts +18 -0
  53. package/dist/components/Image/Image.d.ts +13 -0
  54. package/dist/components/ProductsCarousel/CouponBadge.d.ts +8 -0
  55. package/dist/components/ProductsCarousel/DiscountChip.d.ts +12 -0
  56. package/dist/components/ProductsCarousel/PriceDisplay.d.ts +8 -0
  57. package/dist/components/ProductsCarousel/ProductCard.d.ts +15 -0
  58. package/dist/components/ProductsCarousel/ProductCardSkeleton.d.ts +5 -0
  59. package/dist/components/ProductsCarousel/ProductSliderSkeleton.d.ts +5 -0
  60. package/dist/components/ProductsCarousel/ProductTitle.d.ts +5 -0
  61. package/dist/components/ProductsCarousel/ProductsCarousel.d.ts +11 -0
  62. package/dist/hooks/use-async-memo.d.ts +1 -0
  63. package/dist/hooks/use-is-platform.d.ts +8 -0
  64. package/dist/hooks/useDetectScrolledToBottom.d.ts +5 -0
  65. package/dist/hooks/useSwipeThreshold.d.ts +4 -0
  66. package/dist/providers/ReactQueryProvider.d.ts +5 -0
  67. package/dist/types/ads.d.ts +116 -0
  68. package/dist/types/brandshop.d.ts +62 -0
  69. package/dist/types/brandshopsList.d.ts +32 -0
  70. package/dist/types/configTypes.d.ts +16 -0
  71. package/dist/types/enums.d.ts +8 -0
  72. package/dist/types/products.d.ts +72 -0
  73. package/dist/types/tenures.d.ts +11 -0
  74. package/dist/types/types.d.ts +2 -0
  75. package/dist/utils/analytics/trackAdsEvent.d.ts +16 -0
  76. package/dist/utils/analytics/trackBrandshopEvents.d.ts +15 -0
  77. package/dist/utils/helpers/ads.d.ts +3 -0
  78. package/dist/utils/helpers/authToken.d.ts +5 -0
  79. package/dist/utils/helpers/discountChip.d.ts +14 -0
  80. package/dist/utils/helpers/getBaseUrl.d.ts +4 -0
  81. package/dist/utils/helpers/mergeClasses.d.ts +1 -0
  82. package/dist/utils/helpers/price-utils.d.ts +1 -0
  83. package/dist/utils/helpers/productDiscounts.d.ts +3 -0
  84. package/dist/utils/helpers/products.d.ts +4 -0
  85. package/dist/utils/helpers/text.d.ts +1 -0
  86. package/dist/utils/helpers/translate.d.ts +63 -0
  87. package/dist/utils/helpers/utilities.d.ts +1 -0
  88. package/dist/utils/validations/ads.d.ts +7 -0
  89. package/package.json +81 -0
@@ -0,0 +1,116 @@
1
+ export declare enum AdsDestinationType {
2
+ Category = "category",
3
+ SingleProduct = "single product",
4
+ Collection = "collection",
5
+ Brandshop = "brandshop"
6
+ }
7
+ /**
8
+ * API device type required from the Ads server.
9
+ */
10
+ export declare enum AdsDeviceType {
11
+ Mobile = "mob",
12
+ Web = "web"
13
+ }
14
+ /**
15
+ * API response from the Ads server.
16
+ */
17
+ export type AdsApiResponse = {
18
+ success: boolean;
19
+ error: AdsApiError | null;
20
+ data: AdData[];
21
+ };
22
+ /**
23
+ * Structure of an error returned from the Ads API.
24
+ */
25
+ export type AdsApiError = {
26
+ message: string;
27
+ severity: string;
28
+ details: string;
29
+ };
30
+ /**
31
+ * Represents a single advertisement item with all necessary metadata.
32
+ */
33
+ export type AdData = {
34
+ ad_type: string;
35
+ ad_title: string;
36
+ ad_id: number | string;
37
+ ad_slot: number;
38
+ media_type: string;
39
+ media: string;
40
+ media_aspect_ratio: string;
41
+ link: AdLink;
42
+ campaign_title: string;
43
+ campaign_id: number | string;
44
+ brand_name: string;
45
+ brand_id: number | string;
46
+ default_content_id?: string;
47
+ default_content_title?: string;
48
+ };
49
+ /**
50
+ * Contains the display text and destination configuration for an ad's CTA (call to action).
51
+ */
52
+ export interface AdLink {
53
+ link_text: string;
54
+ link_destination: LinkDestination;
55
+ }
56
+ /**
57
+ * Represents the navigation target of the ad (e.g., category or single product),
58
+ * including IDs and optional filters.
59
+ */
60
+ export interface LinkDestination {
61
+ type: string;
62
+ val: string[];
63
+ filters: {
64
+ key: string;
65
+ value: string[];
66
+ }[];
67
+ }
68
+ /**
69
+ * Supported ad location identifiers.
70
+ */
71
+ export type TAdsLocations = 'Green_Category_Top_Banner' | 'Green_Home_Top_Banner';
72
+ /**
73
+ * Payload emitted when a category-type ad with single category is clicked.
74
+ */
75
+ export type SingleCategoryClickEvent = {
76
+ type: 'single_category';
77
+ value: string;
78
+ filters: {
79
+ key: string;
80
+ value: string[];
81
+ }[];
82
+ };
83
+ /**
84
+ * Payload emitted when a category-type ad with multiple category is clicked.
85
+ */
86
+ export type MultipleCategoriesClickEvent = {
87
+ type: 'multiple_categories';
88
+ value: string[];
89
+ filters: {
90
+ key: string;
91
+ value: string[];
92
+ }[];
93
+ };
94
+ /**
95
+ * Payload emitted when a single-product-type ad is clicked.
96
+ */
97
+ export type ProductClickEvent = {
98
+ type: 'single_product';
99
+ value: string;
100
+ slug?: string;
101
+ };
102
+ /**
103
+ * Payload emitted when a collection-type ad is clicked.
104
+ */
105
+ export type CollectionClickEvent = {
106
+ type: 'collection';
107
+ value: string;
108
+ };
109
+ export type BrandshopClickEvent = {
110
+ type: 'brandshop';
111
+ value: string;
112
+ };
113
+ /**
114
+ * Union of all supported ad click payloads.
115
+ */
116
+ export type TLinkClickEvent = MultipleCategoriesClickEvent | SingleCategoryClickEvent | ProductClickEvent | CollectionClickEvent | BrandshopClickEvent;
@@ -0,0 +1,62 @@
1
+ export type TSectionType = 'banner' | 'nav' | 'category' | 'productSlider';
2
+ export type TLinkDestination = {
3
+ type: string;
4
+ val: string[];
5
+ filters: {
6
+ key: string;
7
+ value: string[];
8
+ }[];
9
+ };
10
+ export type TLink = {
11
+ link_destination: TLinkDestination;
12
+ link_text: string;
13
+ link_display_order: number;
14
+ };
15
+ export type TNavigationLinkItem = {
16
+ tracking_id: string;
17
+ link: TLink;
18
+ };
19
+ export type TBrandshopDataItem = {
20
+ image?: string | null;
21
+ link: TLink | null;
22
+ display_order: number;
23
+ tracking_id: string;
24
+ category_name?: string;
25
+ logo?: string;
26
+ navigation_links?: TNavigationLinkItem[];
27
+ collection_id?: string;
28
+ };
29
+ export type TBrandshopSection = {
30
+ section_title: string;
31
+ section_type: TSectionType;
32
+ section_size: number;
33
+ show_section_title: boolean;
34
+ section_display_order: number;
35
+ tracking_id: string;
36
+ data: TBrandshopDataItem[];
37
+ };
38
+ export type TBrandshopError = {
39
+ message: string;
40
+ severity: string;
41
+ details: string;
42
+ };
43
+ export type TBrandshopData = {
44
+ id: string;
45
+ name: string;
46
+ tracking_id: string;
47
+ content: TBrandshopSection[];
48
+ slug?: string;
49
+ meta_data?: {
50
+ title?: string;
51
+ description?: string;
52
+ };
53
+ };
54
+ export type TBrandshopApiResponse = {
55
+ success: boolean;
56
+ data: TBrandshopData;
57
+ error: TBrandshopError | null;
58
+ };
59
+ export type TBrandshopCollection = {
60
+ collection_id?: string;
61
+ tracking_id: string;
62
+ };
@@ -0,0 +1,32 @@
1
+ export type TBrandshopsList = {
2
+ id: string;
3
+ name: string;
4
+ logo_url: string;
5
+ created_at: number;
6
+ updated_at: number;
7
+ slug?: string;
8
+ };
9
+ export type TPagination = {
10
+ total: number;
11
+ limit: number;
12
+ offset: number;
13
+ has_more: boolean;
14
+ };
15
+ export type TBrandshopsListSuccessResponse = {
16
+ success: boolean;
17
+ data: {
18
+ brandshops: TBrandshopsList[];
19
+ pagination: TPagination;
20
+ };
21
+ error: null;
22
+ };
23
+ export type TBrandshopsListErrorResponse = {
24
+ success: boolean;
25
+ data: null;
26
+ error: {
27
+ severity: string;
28
+ message: string;
29
+ details: string;
30
+ };
31
+ };
32
+ export type TBrandshopsResponse = TBrandshopsListSuccessResponse | TBrandshopsListErrorResponse;
@@ -0,0 +1,16 @@
1
+ export type TEnvironment = 'production' | 'staging' | 'test' | 'development';
2
+ export type TService = 'adServer';
3
+ export type TCaptureErrorOptions = {
4
+ level?: 'error' | 'warning' | 'info' | 'fatal' | 'debug' | 'log';
5
+ tags?: {
6
+ [key: string]: string;
7
+ };
8
+ context?: {
9
+ data: {
10
+ source: string;
11
+ [key: string]: unknown;
12
+ };
13
+ };
14
+ };
15
+ export type TLogError = (error: unknown, options?: TCaptureErrorOptions) => void;
16
+ export type TTrackEvents = (eventName: string, eventProperties: Record<string, unknown>) => void;
@@ -0,0 +1,8 @@
1
+ export declare enum Language {
2
+ Arabic = "ar",
3
+ English = "en"
4
+ }
5
+ export declare enum DeviceType {
6
+ Mobile = "mob",
7
+ Web = "web"
8
+ }
@@ -0,0 +1,72 @@
1
+ export declare enum DiscountValueTypesEnum {
2
+ PERCENTAGE = "PERCENTAGE",
3
+ AMOUNT = "AMOUNT"
4
+ }
5
+ export declare enum DiscountTypesEnum {
6
+ PROMOTION = 1,
7
+ COUPON = 2
8
+ }
9
+ export type TPrice = {
10
+ is_price_dropped: boolean;
11
+ currency: string;
12
+ base: string;
13
+ final: string;
14
+ final_float_price: string;
15
+ };
16
+ export type TDiscount = {
17
+ order: DiscountTypesEnum;
18
+ name: string;
19
+ description: string;
20
+ type: DiscountValueTypesEnum;
21
+ value: string;
22
+ discount_value: string;
23
+ price_after_discount: string;
24
+ };
25
+ export type TProductDiscount = {
26
+ value: string;
27
+ priceAfterDiscount: string;
28
+ };
29
+ export type TDiscountsMap = {
30
+ promotion: TProductDiscount | null;
31
+ coupon: TProductDiscount | null;
32
+ };
33
+ export type TColorVariant = {
34
+ offering_id: string;
35
+ variant_id: string;
36
+ slug: string;
37
+ id: string;
38
+ name: string;
39
+ value: string;
40
+ decorator: string;
41
+ };
42
+ export type TCollectionItem = {
43
+ offering_id: string;
44
+ variant_id: string;
45
+ title: string;
46
+ slug: string;
47
+ brand: string;
48
+ main_image: string;
49
+ formatted_main_image: string;
50
+ gallery: string[];
51
+ price: TPrice;
52
+ stock_quantity: number;
53
+ discounts: TDiscount[];
54
+ colors: TColorVariant[];
55
+ categories_tree: string[];
56
+ dimensions: string;
57
+ };
58
+ export type TApiError = {
59
+ message: string;
60
+ severity: string;
61
+ details: string;
62
+ };
63
+ export type TCollectionData = {
64
+ collection_id: string;
65
+ total_items: number;
66
+ items: TCollectionItem[];
67
+ };
68
+ export type TCollectionResponse = {
69
+ success: boolean;
70
+ data: TCollectionData | null;
71
+ error: TApiError | null;
72
+ };
@@ -0,0 +1,11 @@
1
+ export type TTenure = {
2
+ monthlyAmount: string;
3
+ murabaha: number;
4
+ tenure: string;
5
+ };
6
+ export type TMyloGetInstallmentInfoPDP = TTenure[];
7
+ export type TMyloGetInstallmentInfoPLP = {
8
+ amount: string;
9
+ tenure: string;
10
+ message: string;
11
+ };
@@ -0,0 +1,2 @@
1
+ export type TLanguage = 'ar' | 'en';
2
+ export type TDirection = 'ltr' | 'rtl';
@@ -0,0 +1,16 @@
1
+ type TAdsEventProperties = {
2
+ adTitle: string;
3
+ adFriendlyId: number | string;
4
+ campaignTitle: string;
5
+ campaignFriendlyId: number | string;
6
+ brandTitle: string;
7
+ brandFriendlyId: number | string;
8
+ location_id: string;
9
+ slot_number: string;
10
+ platform: string;
11
+ userStatus: string;
12
+ userId: string;
13
+ };
14
+ type TAdsEventNamesEnum = 'ads_banner_impression' | 'ads_banner_click';
15
+ export declare const trackAdsBannerEvent: (eventName: TAdsEventNamesEnum, { adTitle, adFriendlyId, campaignTitle, campaignFriendlyId, brandTitle, brandFriendlyId, location_id, slot_number, platform, userStatus, userId, }: TAdsEventProperties, trackEvent?: (eventName: string, eventProperties: Record<string, unknown>) => void) => void;
16
+ export {};
@@ -0,0 +1,15 @@
1
+ import { TTrackEvents } from '../../types/configTypes';
2
+
3
+ type TBrandshopLoginStatus = 'logged_in' | 'guest';
4
+ type TBrandshopEventNamesEnum = 'ads_bs_pageload' | 'ads_bs_pageend' | 'ads_bs_section_view' | 'ads_bs_content_click';
5
+ type TBrandshopEventProperties = {
6
+ userStatus: TBrandshopLoginStatus;
7
+ platform: 'Web';
8
+ brandName?: string;
9
+ sectionName?: string;
10
+ sectionOrder?: string;
11
+ contentName?: string;
12
+ contentOrder?: string;
13
+ };
14
+ export declare const trackBrandshopEvent: (eventName: TBrandshopEventNamesEnum, props: TBrandshopEventProperties, trackEvent?: TTrackEvents) => void;
15
+ export {};
@@ -0,0 +1,3 @@
1
+ import { TLinkClickEvent, LinkDestination } from '../../types/ads';
2
+
3
+ export declare const buildLinkDestination: (destination: LinkDestination) => TLinkClickEvent | null;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generates a HMAC-SHA256 token with an expiration timestamp.
3
+ * @returns A Promise resolving to a tuple of [token, expirationTimestamp].
4
+ */
5
+ export declare function generateAccessToken(adServerApiKey: string): Promise<[string, string]>;
@@ -0,0 +1,14 @@
1
+ type TDiscountChipProps = {
2
+ label: string;
3
+ variant: 'coupon' | 'promotion' | 'priceDrop';
4
+ };
5
+ type TChipInput = {
6
+ saveLabelText: string;
7
+ couponText: string;
8
+ priceDropText: string;
9
+ promotionValue?: string;
10
+ hasCoupon?: boolean;
11
+ isPriceDropped?: boolean;
12
+ };
13
+ export declare const getDiscountChipDetails: (props: TChipInput) => TDiscountChipProps | null;
14
+ export {};
@@ -0,0 +1,4 @@
1
+ import { TEnvironment, TService } from '../../types/configTypes';
2
+
3
+ export declare const ENV_SERVICE_BASE_URLS: Record<TEnvironment, Record<TService, string>>;
4
+ export declare function getBaseUrl(service: TService, env: TEnvironment): string;
@@ -0,0 +1 @@
1
+ export declare function mergeClasses(...classes: (string | false | null | undefined)[]): string;
@@ -0,0 +1 @@
1
+ export declare const parsePriceToNumber: (priceString: string) => number;
@@ -0,0 +1,3 @@
1
+ import { TDiscountsMap, TDiscount } from '../../types/products';
2
+
3
+ export declare const getDiscounts: (discounts: TDiscount[], currency: string) => TDiscountsMap;
@@ -0,0 +1,4 @@
1
+ import { LinkDestination } from '../../types/ads';
2
+ import { TCollectionItem } from '../../types/products';
3
+
4
+ export declare const mapProductToLinkDestination: (product: TCollectionItem) => LinkDestination;
@@ -0,0 +1 @@
1
+ export declare const truncateText: (text: string, maxLength: number) => string;
@@ -0,0 +1,63 @@
1
+ import { TLanguage } from '../../types/types';
2
+
3
+ export declare const translations: {
4
+ readonly en: {
5
+ readonly couponBadge: {
6
+ readonly extra: "Extra";
7
+ readonly offAtCheckout: "off at checkout";
8
+ };
9
+ readonly discountChip: {
10
+ readonly save: "Save";
11
+ readonly onlineExclusive: "Online exclusive offer";
12
+ readonly priceDrop: "Price drop";
13
+ };
14
+ readonly mylo: {
15
+ readonly from: "From";
16
+ readonly perMonth: "/mo with";
17
+ };
18
+ };
19
+ readonly ar: {
20
+ readonly couponBadge: {
21
+ readonly extra: "خصم إضافي";
22
+ readonly offAtCheckout: "يطبق عند الدفع";
23
+ };
24
+ readonly discountChip: {
25
+ readonly save: "هتوفر";
26
+ readonly onlineExclusive: "عرض أونلاين حصري";
27
+ readonly priceDrop: "سعر أقل";
28
+ };
29
+ readonly mylo: {
30
+ readonly from: "يبدأ من";
31
+ readonly perMonth: "/الشهر مع";
32
+ };
33
+ };
34
+ };
35
+ export declare const getTranslation: (language: TLanguage) => {
36
+ readonly couponBadge: {
37
+ readonly extra: "Extra";
38
+ readonly offAtCheckout: "off at checkout";
39
+ };
40
+ readonly discountChip: {
41
+ readonly save: "Save";
42
+ readonly onlineExclusive: "Online exclusive offer";
43
+ readonly priceDrop: "Price drop";
44
+ };
45
+ readonly mylo: {
46
+ readonly from: "From";
47
+ readonly perMonth: "/mo with";
48
+ };
49
+ } | {
50
+ readonly couponBadge: {
51
+ readonly extra: "خصم إضافي";
52
+ readonly offAtCheckout: "يطبق عند الدفع";
53
+ };
54
+ readonly discountChip: {
55
+ readonly save: "هتوفر";
56
+ readonly onlineExclusive: "عرض أونلاين حصري";
57
+ readonly priceDrop: "سعر أقل";
58
+ };
59
+ readonly mylo: {
60
+ readonly from: "يبدأ من";
61
+ readonly perMonth: "/الشهر مع";
62
+ };
63
+ };
@@ -0,0 +1 @@
1
+ export declare const debounce: <T extends unknown[]>(callback: (...args: T) => void, delay: number) => ((...args: T) => void);
@@ -0,0 +1,7 @@
1
+ import { TAdsLocations } from '../../types/ads';
2
+ import { TLanguage } from '../../types/types';
3
+ import { TTrackEvents, TLogError } from '../../types/configTypes';
4
+
5
+ export declare function validateLocationId(locationId: TAdsLocations): void;
6
+ export declare function validateLanguage(language: TLanguage): void;
7
+ export declare function validateTrackHandler(track?: TTrackEvents, logError?: TLogError): TTrackEvents;
package/package.json ADDED
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "ads-web-sdkm",
3
+ "version": "2.0.24",
4
+ "description": "SDK for integrating Ads Web components in B.TECH",
5
+ "type": "module",
6
+ "main": "./dist/index.umd.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ "./AdsCarousel": {
11
+ "import": "./dist/AdsCarousel.js",
12
+ "types": "./dist/AdsCarousel.d.ts"
13
+ },
14
+ "./Brandshop": {
15
+ "import": "./dist/Brandshop.js",
16
+ "types": "./dist/Brandshop.d.ts"
17
+ },
18
+ "./Brandshops": {
19
+ "import": "./dist/Brandshops.js",
20
+ "types": "./dist/Brandshops.d.ts"
21
+ },
22
+ "./AdsCarousel.css": "./dist/AdsCarousel.css",
23
+ "./Brandshop.css": "./dist/Brandshop.css",
24
+ "./Brandshops.css": "./dist/Brandshops.css"
25
+ },
26
+ "typesVersions": {
27
+ "*": {
28
+ "AdsCarousel": [
29
+ "dist/AdsCarousel.d.ts"
30
+ ],
31
+ "Brandshop": [
32
+ "dist/Brandshop.d.ts"
33
+ ],
34
+ "Brandshops": [
35
+ "dist/Brandshops.d.ts"
36
+ ]
37
+ }
38
+ },
39
+ "files": [
40
+ "dist"
41
+ ],
42
+ "scripts": {
43
+ "build": "tsc && vite build",
44
+ "dev": "vite",
45
+ "preview": "vite preview"
46
+ },
47
+ "keywords": [
48
+ "react",
49
+ "button",
50
+ "tailwind",
51
+ "component"
52
+ ],
53
+ "peerDependencies": {
54
+ "react": "^18.2.0",
55
+ "react-dom": "^18.2.0"
56
+ },
57
+ "devDependencies": {
58
+ "@tailwindcss/vite": "^4.1.11",
59
+ "@types/crypto-js": "^4.2.2",
60
+ "@types/node": "^24.0.10",
61
+ "@types/react": "^19.1.8",
62
+ "@types/react-dom": "^19.1.6",
63
+ "@vitejs/plugin-react": "^4.5.2",
64
+ "tailwindcss": "^4.1.11",
65
+ "typescript": "~5.8.3",
66
+ "vite": "^7.0.0",
67
+ "vite-plugin-dts": "^3.8.3"
68
+ },
69
+ "dependencies": {
70
+ "@tanstack/react-query": "^5.82.0",
71
+ "crypto-js": "^4.2.0",
72
+ "embla-carousel": "8.6.0",
73
+ "embla-carousel-autoplay": "^8.6.0",
74
+ "embla-carousel-react": "8.6.0",
75
+ "mylo-online-checkout-sdk": "^4.0.3",
76
+ "posthog-js": "^1.257.0",
77
+ "react-intersection-observer": "^9.16.0",
78
+ "react-loading-skeleton": "^3.5.0",
79
+ "tailwind-merge": "^3.3.1"
80
+ }
81
+ }