@cartbase/storefront 0.20.0 → 0.20.1

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 (99) hide show
  1. package/LICENSE +21 -21
  2. package/package.json +258 -258
  3. package/src/api/auth.ts +108 -108
  4. package/src/api/carts.ts +523 -523
  5. package/src/api/categories.ts +184 -184
  6. package/src/api/checkout.ts +526 -526
  7. package/src/api/collections.ts +130 -130
  8. package/src/api/consent.ts +75 -75
  9. package/src/api/content.ts +125 -125
  10. package/src/api/customers.ts +303 -303
  11. package/src/api/gift-cards.ts +112 -112
  12. package/src/api/http.ts +180 -180
  13. package/src/api/index.ts +30 -30
  14. package/src/api/menus.ts +77 -77
  15. package/src/api/metaobjects.ts +136 -136
  16. package/src/api/orders.ts +290 -290
  17. package/src/api/redirects.ts +37 -37
  18. package/src/api/regions.ts +200 -200
  19. package/src/api/search.ts +163 -163
  20. package/src/api/store.ts +35 -35
  21. package/src/api/types.ts +91 -91
  22. package/src/cart-drawer/context.tsx +778 -778
  23. package/src/cart-drawer/cross-sell-carousel.tsx +211 -211
  24. package/src/cart-drawer/cross-sell-sidebar.tsx +158 -158
  25. package/src/cart-drawer/gift-wrap.tsx +82 -82
  26. package/src/cart-drawer/item/index.tsx +162 -162
  27. package/src/cart-drawer/item/upsell.tsx +110 -110
  28. package/src/cart-drawer/labels.ts +123 -123
  29. package/src/cart-drawer/mutation-queue.ts +78 -78
  30. package/src/cart-drawer/notes.tsx +131 -131
  31. package/src/cart-drawer/sticky-footer.tsx +73 -73
  32. package/src/cart-drawer/summary-breakdown.tsx +197 -197
  33. package/src/checkout/address-error-copy.ts +117 -117
  34. package/src/checkout/boxnow-locker-selector.tsx +410 -410
  35. package/src/checkout/compare-addresses.ts +40 -40
  36. package/src/checkout/discount-section.tsx +218 -218
  37. package/src/checkout/error-copy-codes.ts +63 -63
  38. package/src/checkout/geocode.ts +154 -154
  39. package/src/checkout/gift-card-section.tsx +224 -224
  40. package/src/checkout/index.ts +72 -72
  41. package/src/checkout/labels.ts +495 -495
  42. package/src/checkout/payment-button.tsx +372 -372
  43. package/src/checkout/payment-error-copy.ts +154 -154
  44. package/src/checkout/promotion-error-copy.ts +91 -91
  45. package/src/common/country-flag.tsx +52 -52
  46. package/src/common/country-select.tsx +11 -11
  47. package/src/common/index.ts +20 -20
  48. package/src/common/market-select.tsx +57 -57
  49. package/src/index.ts +12 -12
  50. package/src/lib/country-name.ts +59 -59
  51. package/src/lib/get-product-price.ts +133 -133
  52. package/src/lib/media-image.tsx +39 -39
  53. package/src/lib/payment-constants.ts +53 -53
  54. package/src/lib/platform.ts +13 -13
  55. package/src/lib/price.tsx +39 -39
  56. package/src/lib/store-api-error.ts +36 -36
  57. package/src/lib/variant-caption.ts +32 -32
  58. package/src/locales/context.ts +37 -37
  59. package/src/locales/en.ts +26 -26
  60. package/src/locales/index.ts +19 -19
  61. package/src/locales/provider.tsx +59 -59
  62. package/src/locales/types.ts +77 -77
  63. package/src/order/index.ts +62 -62
  64. package/src/order/labels.ts +79 -79
  65. package/src/order/order-totals.tsx +250 -250
  66. package/src/primitives/select-field.tsx +93 -93
  67. package/src/products/image-gallery.tsx +43 -43
  68. package/src/products/option-select.tsx +67 -67
  69. package/src/products/product-info.tsx +5 -5
  70. package/src/products/product-price.tsx +69 -69
  71. package/src/products/product-promises.tsx +61 -61
  72. package/src/products/product-specs.tsx +65 -65
  73. package/src/products/product-tabs.tsx +123 -123
  74. package/src/products/purchase-options.tsx +130 -130
  75. package/src/products/sets.ts +110 -110
  76. package/src/products/variant-matching.ts +71 -71
  77. package/src/products/variant-url.ts +74 -74
  78. package/src/reviews-ui/lightbox-state.ts +46 -46
  79. package/src/reviews-ui/review-header.tsx +166 -166
  80. package/src/reviews-ui/review-lightbox.tsx +271 -271
  81. package/src/reviews-ui/review-list.tsx +193 -193
  82. package/src/reviews-ui/review-widget.tsx +219 -218
  83. package/src/reviews-ui/widget-options.ts +55 -55
  84. package/src/store/category-template.tsx +136 -136
  85. package/src/store/index.ts +40 -40
  86. package/src/tracking/chatgpt-pixel.tsx +99 -99
  87. package/src/tracking/consent-init.tsx +62 -62
  88. package/src/tracking/events.ts +348 -348
  89. package/src/tracking/ga4.tsx +93 -93
  90. package/src/tracking/google-ads.ts +84 -84
  91. package/src/tracking/gtm.tsx +60 -60
  92. package/src/tracking/inline-script.ts +49 -49
  93. package/src/tracking/oaiq.ts +206 -206
  94. package/src/tracking/tiktok-pixel.tsx +91 -91
  95. package/src/tracking/track-init.tsx +56 -56
  96. package/src/tracking/track-order-purchase.tsx +122 -122
  97. package/src/tracking/ttq.ts +180 -180
  98. package/src/tracking/use-tracking-config.ts +54 -54
  99. package/theme/index.css +25 -25
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Cartbase
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Cartbase
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/package.json CHANGED
@@ -1,258 +1,258 @@
1
- {
2
- "name": "@cartbase/storefront",
3
- "version": "0.20.0",
4
- "description": "Storefront SDK + UI component library for Cartbase stores: typed API client, checkout orchestration, cart drawer, product/catalog components, tracking. Source-shipped TypeScript — add it to transpilePackages.",
5
- "license": "MIT",
6
- "repository": {
7
- "type": "git",
8
- "url": "git+https://github.com/Cartbase/cartbase.git",
9
- "directory": "packages/storefront"
10
- },
11
- "type": "module",
12
- "sideEffects": false,
13
- "files": [
14
- "src",
15
- "theme",
16
- "README.md"
17
- ],
18
- "exports": {
19
- ".": "./src/index.ts",
20
- "./api": "./src/api/index.ts",
21
- "./api/http": "./src/api/http.ts",
22
- "./api/types": "./src/api/types.ts",
23
- "./api/products": "./src/api/products.ts",
24
- "./api/collections": "./src/api/collections.ts",
25
- "./api/categories": "./src/api/categories.ts",
26
- "./api/regions": "./src/api/regions.ts",
27
- "./api/store": "./src/api/store.ts",
28
- "./api/carts": "./src/api/carts.ts",
29
- "./api/gift-cards": "./src/api/gift-cards.ts",
30
- "./api/checkout": "./src/api/checkout.ts",
31
- "./api/orders": "./src/api/orders.ts",
32
- "./api/customers": "./src/api/customers.ts",
33
- "./api/auth": "./src/api/auth.ts",
34
- "./api/content": "./src/api/content.ts",
35
- "./api/menus": "./src/api/menus.ts",
36
- "./api/metaobjects": "./src/api/metaobjects.ts",
37
- "./api/reviews": "./src/api/reviews.ts",
38
- "./api/search": "./src/api/search.ts",
39
- "./api/integrations": "./src/api/integrations.ts",
40
- "./api/consent": "./src/api/consent.ts",
41
- "./api/redirects": "./src/api/redirects.ts",
42
- "./theme": "./theme/index.css",
43
- "./theme/tokens.css": "./theme/tokens.css",
44
- "./theme/theme.css": "./theme/theme.css",
45
- "./lib/utils": "./src/lib/utils.ts",
46
- "./lib/money": "./src/lib/money.ts",
47
- "./lib/cart-helpers": "./src/lib/cart-helpers.ts",
48
- "./lib/get-product-price": "./src/lib/get-product-price.ts",
49
- "./lib/get-percentage-diff": "./src/lib/get-percentage-diff.ts",
50
- "./lib/product": "./src/lib/product.ts",
51
- "./lib/sort-products": "./src/lib/sort-products.ts",
52
- "./lib/price": "./src/lib/price.tsx",
53
- "./lib/payment-constants": "./src/lib/payment-constants.ts",
54
- "./lib/country-name": "./src/lib/country-name.ts",
55
- "./lib/store-api-error": "./src/lib/store-api-error.ts",
56
- "./lib/hooks/use-intersection": "./src/lib/hooks/use-intersection.ts",
57
- "./lib/hooks/use-toggle-state": "./src/lib/hooks/use-toggle-state.ts",
58
- "./lib/cookie-names": "./src/lib/cookie-names.ts",
59
- "./lib/media-image": "./src/lib/media-image.tsx",
60
- "./lib/platform": "./src/lib/platform.ts",
61
- "./lib/visitor": "./src/lib/visitor.ts",
62
- "./platform": "./src/platform/index.ts",
63
- "./platform/identity": "./src/platform/identity.ts",
64
- "./platform/metadata": "./src/platform/metadata.ts",
65
- "./platform/platform-init": "./src/platform/platform-init.tsx",
66
- "./primitives/field": "./src/primitives/field.tsx",
67
- "./primitives/select-field": "./src/primitives/select-field.tsx",
68
- "./primitives/ui/accordion": "./src/primitives/ui/accordion.tsx",
69
- "./primitives/ui/button": "./src/primitives/ui/button.tsx",
70
- "./primitives/ui/collapsible": "./src/primitives/ui/collapsible.tsx",
71
- "./primitives/ui/dialog": "./src/primitives/ui/dialog.tsx",
72
- "./primitives/ui/input": "./src/primitives/ui/input.tsx",
73
- "./primitives/ui/label": "./src/primitives/ui/label.tsx",
74
- "./primitives/ui/popover": "./src/primitives/ui/popover.tsx",
75
- "./primitives/ui/select": "./src/primitives/ui/select.tsx",
76
- "./primitives/ui/sheet": "./src/primitives/ui/sheet.tsx",
77
- "./primitives/ui/tabs": "./src/primitives/ui/tabs.tsx",
78
- "./tracking": "./src/tracking/index.ts",
79
- "./tracking/types": "./src/tracking/types.ts",
80
- "./tracking/consent": "./src/tracking/consent.ts",
81
- "./tracking/consent-init": "./src/tracking/consent-init.tsx",
82
- "./tracking/consent-banner": "./src/tracking/consent-banner.tsx",
83
- "./tracking/meta-pixel": "./src/tracking/meta-pixel.tsx",
84
- "./tracking/ga4": "./src/tracking/ga4.tsx",
85
- "./tracking/tiktok-pixel": "./src/tracking/tiktok-pixel.tsx",
86
- "./tracking/ttq": "./src/tracking/ttq.ts",
87
- "./tracking/events": "./src/tracking/events.ts",
88
- "./tracking/storefront-tags": "./src/tracking/storefront-tags.tsx",
89
- "./tracking/track-init": "./src/tracking/track-init.tsx",
90
- "./tracking/track-order-purchase": "./src/tracking/track-order-purchase.tsx",
91
- "./tracking/gtm": "./src/tracking/gtm.tsx",
92
- "./tracking/inline-script": "./src/tracking/inline-script.ts",
93
- "./tracking/google-ads": "./src/tracking/google-ads.ts",
94
- "./tracking/rybbit": "./src/tracking/rybbit.tsx",
95
- "./tracking/rybbit-events": "./src/tracking/rybbit-events.ts",
96
- "./tracking/fbq": "./src/tracking/fbq.ts",
97
- "./tracking/gtag": "./src/tracking/gtag.ts",
98
- "./tracking/attribution": "./src/tracking/attribution.ts",
99
- "./tracking/get-tracking-config": "./src/tracking/get-tracking-config.ts",
100
- "./tracking/use-tracking-config": "./src/tracking/use-tracking-config.ts",
101
- "./tracking/get-tracking-attribution": "./src/tracking/get-tracking-attribution.ts",
102
- "./tracking/use-engagement-time": "./src/tracking/use-engagement-time.ts",
103
- "./tracking/page-views": "./src/tracking/page-views.tsx",
104
- "./tracking/live-heartbeat": "./src/tracking/live-heartbeat.tsx",
105
- "./checkout": "./src/checkout/index.ts",
106
- "./checkout/context": "./src/checkout/context.tsx",
107
- "./checkout/labels": "./src/checkout/labels.ts",
108
- "./checkout/error-message": "./src/checkout/error-message.tsx",
109
- "./checkout/stripe-wrapper": "./src/checkout/stripe-wrapper.tsx",
110
- "./checkout/payment-wrapper": "./src/checkout/payment-wrapper.tsx",
111
- "./checkout/payment-button": "./src/checkout/payment-button.tsx",
112
- "./checkout/econt-office-selector": "./src/checkout/econt-office-selector.tsx",
113
- "./checkout/boxnow-locker-selector": "./src/checkout/boxnow-locker-selector.tsx",
114
- "./checkout/address-select": "./src/checkout/address-select.tsx",
115
- "./checkout/company-details": "./src/checkout/company-details.tsx",
116
- "./checkout/discount-section": "./src/checkout/discount-section.tsx",
117
- "./checkout/gift-card-section": "./src/checkout/gift-card-section.tsx",
118
- "./checkout/line-item-card": "./src/checkout/line-item-card.tsx",
119
- "./checkout/order-summary": "./src/checkout/order-summary.tsx",
120
- "./checkout/address-form": "./src/checkout/address-form.tsx",
121
- "./checkout/shipping-method-list": "./src/checkout/shipping-method-list.tsx",
122
- "./checkout/payment-method-list": "./src/checkout/payment-method-list.tsx",
123
- "./checkout/checkout-client": "./src/checkout/checkout-client.tsx",
124
- "./checkout/use-checkout-orchestration": "./src/checkout/use-checkout-orchestration.ts",
125
- "./checkout/payment-error-copy": "./src/checkout/payment-error-copy.ts",
126
- "./checkout/address-error-copy": "./src/checkout/address-error-copy.ts",
127
- "./checkout/promotion-error-copy": "./src/checkout/promotion-error-copy.ts",
128
- "./cart-drawer": "./src/cart-drawer/index.ts",
129
- "./cart-drawer/context": "./src/cart-drawer/context.tsx",
130
- "./cart-drawer/mutation-queue": "./src/cart-drawer/mutation-queue.ts",
131
- "./cart-drawer/labels": "./src/cart-drawer/labels.ts",
132
- "./cart-drawer/cart-drawer": "./src/cart-drawer/cart-drawer.tsx",
133
- "./cart-drawer/header": "./src/cart-drawer/header.tsx",
134
- "./cart-drawer/promo-banner": "./src/cart-drawer/promo-banner.tsx",
135
- "./cart-drawer/tiered-progress": "./src/cart-drawer/tiered-progress.tsx",
136
- "./cart-drawer/item": "./src/cart-drawer/item/index.tsx",
137
- "./cart-drawer/item/quantity": "./src/cart-drawer/item/quantity.tsx",
138
- "./cart-drawer/item/variant": "./src/cart-drawer/item/variant.tsx",
139
- "./cart-drawer/item/upsell": "./src/cart-drawer/item/upsell.tsx",
140
- "./cart-drawer/free-gift": "./src/cart-drawer/free-gift.tsx",
141
- "./cart-drawer/gift-wrap": "./src/cart-drawer/gift-wrap.tsx",
142
- "./cart-drawer/notes": "./src/cart-drawer/notes.tsx",
143
- "./cart-drawer/rewards-points": "./src/cart-drawer/rewards-points.tsx",
144
- "./cart-drawer/cross-sell-sidebar": "./src/cart-drawer/cross-sell-sidebar.tsx",
145
- "./cart-drawer/cross-sell-carousel": "./src/cart-drawer/cross-sell-carousel.tsx",
146
- "./cart-drawer/summary-breakdown": "./src/cart-drawer/summary-breakdown.tsx",
147
- "./cart-drawer/sticky-footer": "./src/cart-drawer/sticky-footer.tsx",
148
- "./cart-drawer/payment-badges": "./src/cart-drawer/payment-badges.tsx",
149
- "./cart-drawer/continue-shopping": "./src/cart-drawer/continue-shopping.tsx",
150
- "./cart-drawer/empty": "./src/cart-drawer/empty.tsx",
151
- "./cart-drawer/template": "./src/cart-drawer/template.tsx",
152
- "./products": "./src/products/index.ts",
153
- "./products/context": "./src/products/context.tsx",
154
- "./products/labels": "./src/products/labels.ts",
155
- "./products/thumbnail": "./src/products/thumbnail.tsx",
156
- "./products/preview-price": "./src/products/preview-price.tsx",
157
- "./products/product-price": "./src/products/product-price.tsx",
158
- "./products/option-select": "./src/products/option-select.tsx",
159
- "./products/image-gallery": "./src/products/image-gallery.tsx",
160
- "./products/variant-url": "./src/products/variant-url.ts",
161
- "./products/sets": "./src/products/sets.ts",
162
- "./products/use-product-actions": "./src/products/use-product-actions.ts",
163
- "./products/product-actions": "./src/products/product-actions.tsx",
164
- "./products/mobile-actions": "./src/products/mobile-actions.tsx",
165
- "./products/product-tabs": "./src/products/product-tabs.tsx",
166
- "./products/product-specs": "./src/products/product-specs.tsx",
167
- "./products/product-promises": "./src/products/product-promises.tsx",
168
- "./products/product-info": "./src/products/product-info.tsx",
169
- "./products/product-preview": "./src/products/product-preview.tsx",
170
- "./products/related-products": "./src/products/related-products.tsx",
171
- "./products/product-actions-wrapper": "./src/products/product-actions-wrapper.tsx",
172
- "./products/product-template": "./src/products/product-template.tsx",
173
- "./store": "./src/store/index.ts",
174
- "./store/labels": "./src/store/labels.ts",
175
- "./store/pagination": "./src/store/pagination.tsx",
176
- "./store/sort-select": "./src/store/sort-select.tsx",
177
- "./store/paginated-products": "./src/store/paginated-products.tsx",
178
- "./store/skeleton-product-grid": "./src/store/skeleton-product-grid.tsx",
179
- "./store/store-template": "./src/store/store-template.tsx",
180
- "./store/collection-template": "./src/store/collection-template.tsx",
181
- "./store/category-template": "./src/store/category-template.tsx",
182
- "./store/search-template": "./src/store/search-template.tsx",
183
- "./order": "./src/order/index.ts",
184
- "./order/context": "./src/order/context.tsx",
185
- "./order/labels": "./src/order/labels.ts",
186
- "./order/order-confirmation-header": "./src/order/order-confirmation-header.tsx",
187
- "./order/order-item": "./src/order/order-item.tsx",
188
- "./order/order-items-list": "./src/order/order-items-list.tsx",
189
- "./order/order-totals": "./src/order/order-totals.tsx",
190
- "./order/order-address-card": "./src/order/order-address-card.tsx",
191
- "./order/order-delivery-card": "./src/order/order-delivery-card.tsx",
192
- "./order/order-payment-card": "./src/order/order-payment-card.tsx",
193
- "./order/order-timeline": "./src/order/order-timeline.tsx",
194
- "./order/order-help-section": "./src/order/order-help-section.tsx",
195
- "./order/order-completed-template": "./src/order/order-completed-template.tsx",
196
- "./common": "./src/common/index.ts",
197
- "./common/localized-link": "./src/common/localized-link.tsx",
198
- "./common/cart-button": "./src/common/cart-button.tsx",
199
- "./common/cart-button-client": "./src/common/cart-button-client.tsx",
200
- "./common/delete-button": "./src/common/delete-button.tsx",
201
- "./common/country-flag": "./src/common/country-flag.tsx",
202
- "./common/market-select": "./src/common/market-select.tsx",
203
- "./common/country-select": "./src/common/country-select.tsx",
204
- "./common/language-select": "./src/common/language-select.tsx",
205
- "./common/skeleton": "./src/common/skeleton.tsx",
206
- "./reviews-ui": "./src/reviews-ui/index.ts",
207
- "./locales": "./src/locales/index.ts",
208
- "./locales/en": "./src/locales/en.ts",
209
- "./locales/es": "./src/locales/es.ts",
210
- "./locales/bg": "./src/locales/bg.ts"
211
- },
212
- "dependencies": {
213
- "@radix-ui/react-accordion": "^1.2.12",
214
- "@radix-ui/react-collapsible": "^1.1.12",
215
- "@radix-ui/react-dialog": "^1.1.15",
216
- "@radix-ui/react-dropdown-menu": "^2.1.16",
217
- "@radix-ui/react-label": "^2.1.8",
218
- "@radix-ui/react-popover": "^1.1.15",
219
- "@radix-ui/react-select": "^2.2.6",
220
- "@radix-ui/react-slot": "^1.2.4",
221
- "@radix-ui/react-tabs": "^1.1.13",
222
- "@stripe/react-stripe-js": "^6.1.0",
223
- "@stripe/stripe-js": "^9.1.0",
224
- "class-variance-authority": "^0.7.1",
225
- "clsx": "^2.1.1",
226
- "flag-icons": "^7.5.0",
227
- "lucide-react": "^1.8.0",
228
- "tailwind-merge": "^3.5.0"
229
- },
230
- "scripts": {
231
- "typecheck": "tsc --noEmit"
232
- },
233
- "peerDependencies": {
234
- "next": "^16.0.0",
235
- "react": "^19.0.0",
236
- "react-dom": "^19.0.0"
237
- },
238
- "peerDependenciesMeta": {
239
- "next": {
240
- "optional": true
241
- },
242
- "react": {
243
- "optional": true
244
- },
245
- "react-dom": {
246
- "optional": true
247
- }
248
- },
249
- "devDependencies": {
250
- "@types/node": "^20",
251
- "@types/react": "^19",
252
- "@types/react-dom": "^19",
253
- "typescript": "^5"
254
- },
255
- "engines": {
256
- "node": ">=20"
257
- }
258
- }
1
+ {
2
+ "name": "@cartbase/storefront",
3
+ "version": "0.20.1",
4
+ "description": "Storefront SDK + UI component library for Cartbase stores: typed API client, checkout orchestration, cart drawer, product/catalog components, tracking. Source-shipped TypeScript — add it to transpilePackages.",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/Cartbase/cartbase.git",
9
+ "directory": "packages/storefront"
10
+ },
11
+ "type": "module",
12
+ "sideEffects": false,
13
+ "files": [
14
+ "src",
15
+ "theme",
16
+ "README.md"
17
+ ],
18
+ "exports": {
19
+ ".": "./src/index.ts",
20
+ "./api": "./src/api/index.ts",
21
+ "./api/http": "./src/api/http.ts",
22
+ "./api/types": "./src/api/types.ts",
23
+ "./api/products": "./src/api/products.ts",
24
+ "./api/collections": "./src/api/collections.ts",
25
+ "./api/categories": "./src/api/categories.ts",
26
+ "./api/regions": "./src/api/regions.ts",
27
+ "./api/store": "./src/api/store.ts",
28
+ "./api/carts": "./src/api/carts.ts",
29
+ "./api/gift-cards": "./src/api/gift-cards.ts",
30
+ "./api/checkout": "./src/api/checkout.ts",
31
+ "./api/orders": "./src/api/orders.ts",
32
+ "./api/customers": "./src/api/customers.ts",
33
+ "./api/auth": "./src/api/auth.ts",
34
+ "./api/content": "./src/api/content.ts",
35
+ "./api/menus": "./src/api/menus.ts",
36
+ "./api/metaobjects": "./src/api/metaobjects.ts",
37
+ "./api/reviews": "./src/api/reviews.ts",
38
+ "./api/search": "./src/api/search.ts",
39
+ "./api/integrations": "./src/api/integrations.ts",
40
+ "./api/consent": "./src/api/consent.ts",
41
+ "./api/redirects": "./src/api/redirects.ts",
42
+ "./theme": "./theme/index.css",
43
+ "./theme/tokens.css": "./theme/tokens.css",
44
+ "./theme/theme.css": "./theme/theme.css",
45
+ "./lib/utils": "./src/lib/utils.ts",
46
+ "./lib/money": "./src/lib/money.ts",
47
+ "./lib/cart-helpers": "./src/lib/cart-helpers.ts",
48
+ "./lib/get-product-price": "./src/lib/get-product-price.ts",
49
+ "./lib/get-percentage-diff": "./src/lib/get-percentage-diff.ts",
50
+ "./lib/product": "./src/lib/product.ts",
51
+ "./lib/sort-products": "./src/lib/sort-products.ts",
52
+ "./lib/price": "./src/lib/price.tsx",
53
+ "./lib/payment-constants": "./src/lib/payment-constants.ts",
54
+ "./lib/country-name": "./src/lib/country-name.ts",
55
+ "./lib/store-api-error": "./src/lib/store-api-error.ts",
56
+ "./lib/hooks/use-intersection": "./src/lib/hooks/use-intersection.ts",
57
+ "./lib/hooks/use-toggle-state": "./src/lib/hooks/use-toggle-state.ts",
58
+ "./lib/cookie-names": "./src/lib/cookie-names.ts",
59
+ "./lib/media-image": "./src/lib/media-image.tsx",
60
+ "./lib/platform": "./src/lib/platform.ts",
61
+ "./lib/visitor": "./src/lib/visitor.ts",
62
+ "./platform": "./src/platform/index.ts",
63
+ "./platform/identity": "./src/platform/identity.ts",
64
+ "./platform/metadata": "./src/platform/metadata.ts",
65
+ "./platform/platform-init": "./src/platform/platform-init.tsx",
66
+ "./primitives/field": "./src/primitives/field.tsx",
67
+ "./primitives/select-field": "./src/primitives/select-field.tsx",
68
+ "./primitives/ui/accordion": "./src/primitives/ui/accordion.tsx",
69
+ "./primitives/ui/button": "./src/primitives/ui/button.tsx",
70
+ "./primitives/ui/collapsible": "./src/primitives/ui/collapsible.tsx",
71
+ "./primitives/ui/dialog": "./src/primitives/ui/dialog.tsx",
72
+ "./primitives/ui/input": "./src/primitives/ui/input.tsx",
73
+ "./primitives/ui/label": "./src/primitives/ui/label.tsx",
74
+ "./primitives/ui/popover": "./src/primitives/ui/popover.tsx",
75
+ "./primitives/ui/select": "./src/primitives/ui/select.tsx",
76
+ "./primitives/ui/sheet": "./src/primitives/ui/sheet.tsx",
77
+ "./primitives/ui/tabs": "./src/primitives/ui/tabs.tsx",
78
+ "./tracking": "./src/tracking/index.ts",
79
+ "./tracking/types": "./src/tracking/types.ts",
80
+ "./tracking/consent": "./src/tracking/consent.ts",
81
+ "./tracking/consent-init": "./src/tracking/consent-init.tsx",
82
+ "./tracking/consent-banner": "./src/tracking/consent-banner.tsx",
83
+ "./tracking/meta-pixel": "./src/tracking/meta-pixel.tsx",
84
+ "./tracking/ga4": "./src/tracking/ga4.tsx",
85
+ "./tracking/tiktok-pixel": "./src/tracking/tiktok-pixel.tsx",
86
+ "./tracking/ttq": "./src/tracking/ttq.ts",
87
+ "./tracking/events": "./src/tracking/events.ts",
88
+ "./tracking/storefront-tags": "./src/tracking/storefront-tags.tsx",
89
+ "./tracking/track-init": "./src/tracking/track-init.tsx",
90
+ "./tracking/track-order-purchase": "./src/tracking/track-order-purchase.tsx",
91
+ "./tracking/gtm": "./src/tracking/gtm.tsx",
92
+ "./tracking/inline-script": "./src/tracking/inline-script.ts",
93
+ "./tracking/google-ads": "./src/tracking/google-ads.ts",
94
+ "./tracking/rybbit": "./src/tracking/rybbit.tsx",
95
+ "./tracking/rybbit-events": "./src/tracking/rybbit-events.ts",
96
+ "./tracking/fbq": "./src/tracking/fbq.ts",
97
+ "./tracking/gtag": "./src/tracking/gtag.ts",
98
+ "./tracking/attribution": "./src/tracking/attribution.ts",
99
+ "./tracking/get-tracking-config": "./src/tracking/get-tracking-config.ts",
100
+ "./tracking/use-tracking-config": "./src/tracking/use-tracking-config.ts",
101
+ "./tracking/get-tracking-attribution": "./src/tracking/get-tracking-attribution.ts",
102
+ "./tracking/use-engagement-time": "./src/tracking/use-engagement-time.ts",
103
+ "./tracking/page-views": "./src/tracking/page-views.tsx",
104
+ "./tracking/live-heartbeat": "./src/tracking/live-heartbeat.tsx",
105
+ "./checkout": "./src/checkout/index.ts",
106
+ "./checkout/context": "./src/checkout/context.tsx",
107
+ "./checkout/labels": "./src/checkout/labels.ts",
108
+ "./checkout/error-message": "./src/checkout/error-message.tsx",
109
+ "./checkout/stripe-wrapper": "./src/checkout/stripe-wrapper.tsx",
110
+ "./checkout/payment-wrapper": "./src/checkout/payment-wrapper.tsx",
111
+ "./checkout/payment-button": "./src/checkout/payment-button.tsx",
112
+ "./checkout/econt-office-selector": "./src/checkout/econt-office-selector.tsx",
113
+ "./checkout/boxnow-locker-selector": "./src/checkout/boxnow-locker-selector.tsx",
114
+ "./checkout/address-select": "./src/checkout/address-select.tsx",
115
+ "./checkout/company-details": "./src/checkout/company-details.tsx",
116
+ "./checkout/discount-section": "./src/checkout/discount-section.tsx",
117
+ "./checkout/gift-card-section": "./src/checkout/gift-card-section.tsx",
118
+ "./checkout/line-item-card": "./src/checkout/line-item-card.tsx",
119
+ "./checkout/order-summary": "./src/checkout/order-summary.tsx",
120
+ "./checkout/address-form": "./src/checkout/address-form.tsx",
121
+ "./checkout/shipping-method-list": "./src/checkout/shipping-method-list.tsx",
122
+ "./checkout/payment-method-list": "./src/checkout/payment-method-list.tsx",
123
+ "./checkout/checkout-client": "./src/checkout/checkout-client.tsx",
124
+ "./checkout/use-checkout-orchestration": "./src/checkout/use-checkout-orchestration.ts",
125
+ "./checkout/payment-error-copy": "./src/checkout/payment-error-copy.ts",
126
+ "./checkout/address-error-copy": "./src/checkout/address-error-copy.ts",
127
+ "./checkout/promotion-error-copy": "./src/checkout/promotion-error-copy.ts",
128
+ "./cart-drawer": "./src/cart-drawer/index.ts",
129
+ "./cart-drawer/context": "./src/cart-drawer/context.tsx",
130
+ "./cart-drawer/mutation-queue": "./src/cart-drawer/mutation-queue.ts",
131
+ "./cart-drawer/labels": "./src/cart-drawer/labels.ts",
132
+ "./cart-drawer/cart-drawer": "./src/cart-drawer/cart-drawer.tsx",
133
+ "./cart-drawer/header": "./src/cart-drawer/header.tsx",
134
+ "./cart-drawer/promo-banner": "./src/cart-drawer/promo-banner.tsx",
135
+ "./cart-drawer/tiered-progress": "./src/cart-drawer/tiered-progress.tsx",
136
+ "./cart-drawer/item": "./src/cart-drawer/item/index.tsx",
137
+ "./cart-drawer/item/quantity": "./src/cart-drawer/item/quantity.tsx",
138
+ "./cart-drawer/item/variant": "./src/cart-drawer/item/variant.tsx",
139
+ "./cart-drawer/item/upsell": "./src/cart-drawer/item/upsell.tsx",
140
+ "./cart-drawer/free-gift": "./src/cart-drawer/free-gift.tsx",
141
+ "./cart-drawer/gift-wrap": "./src/cart-drawer/gift-wrap.tsx",
142
+ "./cart-drawer/notes": "./src/cart-drawer/notes.tsx",
143
+ "./cart-drawer/rewards-points": "./src/cart-drawer/rewards-points.tsx",
144
+ "./cart-drawer/cross-sell-sidebar": "./src/cart-drawer/cross-sell-sidebar.tsx",
145
+ "./cart-drawer/cross-sell-carousel": "./src/cart-drawer/cross-sell-carousel.tsx",
146
+ "./cart-drawer/summary-breakdown": "./src/cart-drawer/summary-breakdown.tsx",
147
+ "./cart-drawer/sticky-footer": "./src/cart-drawer/sticky-footer.tsx",
148
+ "./cart-drawer/payment-badges": "./src/cart-drawer/payment-badges.tsx",
149
+ "./cart-drawer/continue-shopping": "./src/cart-drawer/continue-shopping.tsx",
150
+ "./cart-drawer/empty": "./src/cart-drawer/empty.tsx",
151
+ "./cart-drawer/template": "./src/cart-drawer/template.tsx",
152
+ "./products": "./src/products/index.ts",
153
+ "./products/context": "./src/products/context.tsx",
154
+ "./products/labels": "./src/products/labels.ts",
155
+ "./products/thumbnail": "./src/products/thumbnail.tsx",
156
+ "./products/preview-price": "./src/products/preview-price.tsx",
157
+ "./products/product-price": "./src/products/product-price.tsx",
158
+ "./products/option-select": "./src/products/option-select.tsx",
159
+ "./products/image-gallery": "./src/products/image-gallery.tsx",
160
+ "./products/variant-url": "./src/products/variant-url.ts",
161
+ "./products/sets": "./src/products/sets.ts",
162
+ "./products/use-product-actions": "./src/products/use-product-actions.ts",
163
+ "./products/product-actions": "./src/products/product-actions.tsx",
164
+ "./products/mobile-actions": "./src/products/mobile-actions.tsx",
165
+ "./products/product-tabs": "./src/products/product-tabs.tsx",
166
+ "./products/product-specs": "./src/products/product-specs.tsx",
167
+ "./products/product-promises": "./src/products/product-promises.tsx",
168
+ "./products/product-info": "./src/products/product-info.tsx",
169
+ "./products/product-preview": "./src/products/product-preview.tsx",
170
+ "./products/related-products": "./src/products/related-products.tsx",
171
+ "./products/product-actions-wrapper": "./src/products/product-actions-wrapper.tsx",
172
+ "./products/product-template": "./src/products/product-template.tsx",
173
+ "./store": "./src/store/index.ts",
174
+ "./store/labels": "./src/store/labels.ts",
175
+ "./store/pagination": "./src/store/pagination.tsx",
176
+ "./store/sort-select": "./src/store/sort-select.tsx",
177
+ "./store/paginated-products": "./src/store/paginated-products.tsx",
178
+ "./store/skeleton-product-grid": "./src/store/skeleton-product-grid.tsx",
179
+ "./store/store-template": "./src/store/store-template.tsx",
180
+ "./store/collection-template": "./src/store/collection-template.tsx",
181
+ "./store/category-template": "./src/store/category-template.tsx",
182
+ "./store/search-template": "./src/store/search-template.tsx",
183
+ "./order": "./src/order/index.ts",
184
+ "./order/context": "./src/order/context.tsx",
185
+ "./order/labels": "./src/order/labels.ts",
186
+ "./order/order-confirmation-header": "./src/order/order-confirmation-header.tsx",
187
+ "./order/order-item": "./src/order/order-item.tsx",
188
+ "./order/order-items-list": "./src/order/order-items-list.tsx",
189
+ "./order/order-totals": "./src/order/order-totals.tsx",
190
+ "./order/order-address-card": "./src/order/order-address-card.tsx",
191
+ "./order/order-delivery-card": "./src/order/order-delivery-card.tsx",
192
+ "./order/order-payment-card": "./src/order/order-payment-card.tsx",
193
+ "./order/order-timeline": "./src/order/order-timeline.tsx",
194
+ "./order/order-help-section": "./src/order/order-help-section.tsx",
195
+ "./order/order-completed-template": "./src/order/order-completed-template.tsx",
196
+ "./common": "./src/common/index.ts",
197
+ "./common/localized-link": "./src/common/localized-link.tsx",
198
+ "./common/cart-button": "./src/common/cart-button.tsx",
199
+ "./common/cart-button-client": "./src/common/cart-button-client.tsx",
200
+ "./common/delete-button": "./src/common/delete-button.tsx",
201
+ "./common/country-flag": "./src/common/country-flag.tsx",
202
+ "./common/market-select": "./src/common/market-select.tsx",
203
+ "./common/country-select": "./src/common/country-select.tsx",
204
+ "./common/language-select": "./src/common/language-select.tsx",
205
+ "./common/skeleton": "./src/common/skeleton.tsx",
206
+ "./reviews-ui": "./src/reviews-ui/index.ts",
207
+ "./locales": "./src/locales/index.ts",
208
+ "./locales/en": "./src/locales/en.ts",
209
+ "./locales/es": "./src/locales/es.ts",
210
+ "./locales/bg": "./src/locales/bg.ts"
211
+ },
212
+ "dependencies": {
213
+ "@radix-ui/react-accordion": "^1.2.12",
214
+ "@radix-ui/react-collapsible": "^1.1.12",
215
+ "@radix-ui/react-dialog": "^1.1.15",
216
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
217
+ "@radix-ui/react-label": "^2.1.8",
218
+ "@radix-ui/react-popover": "^1.1.15",
219
+ "@radix-ui/react-select": "^2.2.6",
220
+ "@radix-ui/react-slot": "^1.2.4",
221
+ "@radix-ui/react-tabs": "^1.1.13",
222
+ "@stripe/react-stripe-js": "^6.1.0",
223
+ "@stripe/stripe-js": "^9.1.0",
224
+ "class-variance-authority": "^0.7.1",
225
+ "clsx": "^2.1.1",
226
+ "flag-icons": "^7.5.0",
227
+ "lucide-react": "^1.8.0",
228
+ "tailwind-merge": "^3.5.0"
229
+ },
230
+ "scripts": {
231
+ "typecheck": "tsc --noEmit"
232
+ },
233
+ "peerDependencies": {
234
+ "next": "^16.0.0",
235
+ "react": "^19.0.0",
236
+ "react-dom": "^19.0.0"
237
+ },
238
+ "peerDependenciesMeta": {
239
+ "next": {
240
+ "optional": true
241
+ },
242
+ "react": {
243
+ "optional": true
244
+ },
245
+ "react-dom": {
246
+ "optional": true
247
+ }
248
+ },
249
+ "devDependencies": {
250
+ "@types/node": "^20",
251
+ "@types/react": "^19",
252
+ "@types/react-dom": "^19",
253
+ "typescript": "^5"
254
+ },
255
+ "engines": {
256
+ "node": ">=20"
257
+ }
258
+ }