@shopify/hydrogen 2026.1.4 → 2026.4.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.
- package/dist/customer-account-api-types.d.ts +23 -1
- package/dist/customer-account.schema.json +1 -1
- package/dist/development/index.cjs +261 -209
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +261 -209
- package/dist/development/index.js.map +1 -1
- package/dist/oxygen/index.d.ts +63 -10
- package/dist/oxygen/index.js +21 -35
- package/dist/production/index.cjs +118 -150
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.d.cts +173 -115
- package/dist/production/index.d.ts +173 -115
- package/dist/production/index.js +118 -150
- package/dist/production/index.js.map +1 -1
- package/dist/storefront-api-types.d.ts +1467 -443
- package/dist/storefront.schema.json +1 -1
- package/dist/vite/{chunk-ZSWP2RO7.js → chunk-4O5OI3OO.js} +0 -4
- package/dist/vite/{chunk-XTDF5RJS.js → chunk-QXBQVDMY.js} +1 -2
- package/dist/vite/hydrogen-middleware.js +2 -2
- package/dist/vite/plugin.js +2 -3
- package/dist/vite/request-events.d.ts +61 -2
- package/dist/vite/request-events.js +1 -1
- package/package.json +5 -5
|
@@ -45,25 +45,30 @@ type CachingStrategy = AllCacheOptions;
|
|
|
45
45
|
type NoStoreStrategy = {
|
|
46
46
|
mode: string;
|
|
47
47
|
};
|
|
48
|
+
/** @publicDocs */
|
|
48
49
|
declare function generateCacheControlHeader(cacheOptions: CachingStrategy): string;
|
|
49
50
|
/**
|
|
50
51
|
*
|
|
51
52
|
* @public
|
|
53
|
+
* @publicDocs
|
|
52
54
|
*/
|
|
53
55
|
declare function CacheNone(): NoStoreStrategy;
|
|
54
56
|
/**
|
|
55
57
|
*
|
|
56
58
|
* @public
|
|
59
|
+
* @publicDocs
|
|
57
60
|
*/
|
|
58
61
|
declare function CacheShort(overrideOptions?: CachingStrategy): AllCacheOptions;
|
|
59
62
|
/**
|
|
60
63
|
*
|
|
61
64
|
* @public
|
|
65
|
+
* @publicDocs
|
|
62
66
|
*/
|
|
63
67
|
declare function CacheLong(overrideOptions?: CachingStrategy): AllCacheOptions;
|
|
64
68
|
/**
|
|
65
69
|
*
|
|
66
70
|
* @public
|
|
71
|
+
* @publicDocs
|
|
67
72
|
*/
|
|
68
73
|
declare function CacheCustom(overrideOptions: CachingStrategy): AllCacheOptions;
|
|
69
74
|
|
|
@@ -1115,39 +1120,51 @@ type CartGetOptions = CartQueryOptions & {
|
|
|
1115
1120
|
*/
|
|
1116
1121
|
customerAccount?: CustomerAccount;
|
|
1117
1122
|
};
|
|
1123
|
+
/** @publicDocs */
|
|
1118
1124
|
declare function cartGetDefault({ storefront, customerAccount, getCartId, cartFragment, }: CartGetOptions): CartGetFunction;
|
|
1119
1125
|
|
|
1120
1126
|
type CartCreateFunction = (input: CartInput, optionalParams?: CartOptionalInput) => Promise<CartQueryDataReturn>;
|
|
1127
|
+
/** @publicDocs */
|
|
1121
1128
|
declare function cartCreateDefault(options: CartQueryOptions): CartCreateFunction;
|
|
1122
1129
|
|
|
1123
1130
|
type CartLinesAddFunction = (lines: Array<CartLineInput>, optionalParams?: CartOptionalInput) => Promise<CartQueryDataReturn>;
|
|
1131
|
+
/** @publicDocs */
|
|
1124
1132
|
declare function cartLinesAddDefault(options: CartQueryOptions): CartLinesAddFunction;
|
|
1125
1133
|
|
|
1126
1134
|
type CartLinesUpdateFunction = (lines: CartLineUpdateInput[], optionalParams?: CartOptionalInput) => Promise<CartQueryDataReturn>;
|
|
1135
|
+
/** @publicDocs */
|
|
1127
1136
|
declare function cartLinesUpdateDefault(options: CartQueryOptions): CartLinesUpdateFunction;
|
|
1128
1137
|
|
|
1129
1138
|
type CartLinesRemoveFunction = (lineIds: string[], optionalParams?: CartOptionalInput) => Promise<CartQueryDataReturn>;
|
|
1139
|
+
/** @publicDocs */
|
|
1130
1140
|
declare function cartLinesRemoveDefault(options: CartQueryOptions): CartLinesRemoveFunction;
|
|
1131
1141
|
|
|
1132
1142
|
type CartDiscountCodesUpdateFunction = (discountCodes: string[], optionalParams?: CartOptionalInput) => Promise<CartQueryDataReturn>;
|
|
1143
|
+
/** @publicDocs */
|
|
1133
1144
|
declare function cartDiscountCodesUpdateDefault(options: CartQueryOptions): CartDiscountCodesUpdateFunction;
|
|
1134
1145
|
|
|
1135
1146
|
type CartBuyerIdentityUpdateFunction = (buyerIdentity: CartBuyerIdentityInput, optionalParams?: CartOptionalInput) => Promise<CartQueryDataReturn>;
|
|
1147
|
+
/** @publicDocs */
|
|
1136
1148
|
declare function cartBuyerIdentityUpdateDefault(options: CartQueryOptions): CartBuyerIdentityUpdateFunction;
|
|
1137
1149
|
|
|
1138
1150
|
type CartNoteUpdateFunction = (note: string, optionalParams?: CartOptionalInput) => Promise<CartQueryDataReturn>;
|
|
1151
|
+
/** @publicDocs */
|
|
1139
1152
|
declare function cartNoteUpdateDefault(options: CartQueryOptions): CartNoteUpdateFunction;
|
|
1140
1153
|
|
|
1141
1154
|
type CartSelectedDeliveryOptionsUpdateFunction = (selectedDeliveryOptions: CartSelectedDeliveryOptionInput[], optionalParams?: CartOptionalInput) => Promise<CartQueryDataReturn>;
|
|
1155
|
+
/** @publicDocs */
|
|
1142
1156
|
declare function cartSelectedDeliveryOptionsUpdateDefault(options: CartQueryOptions): CartSelectedDeliveryOptionsUpdateFunction;
|
|
1143
1157
|
|
|
1144
1158
|
type CartAttributesUpdateFunction = (attributes: AttributeInput[], optionalParams?: CartOptionalInput) => Promise<CartQueryDataReturn>;
|
|
1159
|
+
/** @publicDocs */
|
|
1145
1160
|
declare function cartAttributesUpdateDefault(options: CartQueryOptions): CartAttributesUpdateFunction;
|
|
1146
1161
|
|
|
1147
1162
|
type CartMetafieldsSetFunction = (metafields: MetafieldWithoutOwnerId[], optionalParams?: CartOptionalInput) => Promise<CartQueryDataReturn>;
|
|
1163
|
+
/** @publicDocs */
|
|
1148
1164
|
declare function cartMetafieldsSetDefault(options: CartQueryOptions): CartMetafieldsSetFunction;
|
|
1149
1165
|
|
|
1150
1166
|
type CartMetafieldDeleteFunction = (key: Scalars['String']['input'], optionalParams?: CartOptionalInput) => Promise<CartQueryDataReturn>;
|
|
1167
|
+
/** @publicDocs */
|
|
1151
1168
|
declare function cartMetafieldDeleteDefault(options: CartQueryOptions): CartMetafieldDeleteFunction;
|
|
1152
1169
|
|
|
1153
1170
|
type CartGiftCardCodesUpdateFunction = (giftCardCodes: string[], optionalParams?: CartOptionalInput) => Promise<CartQueryDataReturn>;
|
|
@@ -1162,6 +1179,7 @@ type CartGiftCardCodesUpdateFunction = (giftCardCodes: string[], optionalParams?
|
|
|
1162
1179
|
* @example Replace all gift card codes
|
|
1163
1180
|
* const updateGiftCardCodes = cartGiftCardCodesUpdateDefault({ storefront, getCartId });
|
|
1164
1181
|
* await updateGiftCardCodes(['SUMMER2025', 'WELCOME10']);
|
|
1182
|
+
* @publicDocs
|
|
1165
1183
|
*/
|
|
1166
1184
|
declare function cartGiftCardCodesUpdateDefault(options: CartQueryOptions): CartGiftCardCodesUpdateFunction;
|
|
1167
1185
|
|
|
@@ -1178,10 +1196,12 @@ type CartGiftCardCodesAddFunction = (giftCardCodes: string[], optionalParams?: C
|
|
|
1178
1196
|
* @example Add gift card codes
|
|
1179
1197
|
* const addGiftCardCodes = cartGiftCardCodesAddDefault({ storefront, getCartId });
|
|
1180
1198
|
* await addGiftCardCodes(['SUMMER2025', 'WELCOME10']);
|
|
1199
|
+
* @publicDocs
|
|
1181
1200
|
*/
|
|
1182
1201
|
declare function cartGiftCardCodesAddDefault(options: CartQueryOptions): CartGiftCardCodesAddFunction;
|
|
1183
1202
|
|
|
1184
1203
|
type CartGiftCardCodesRemoveFunction = (appliedGiftCardIds: string[], optionalParams?: CartOptionalInput) => Promise<CartQueryDataReturn>;
|
|
1204
|
+
/** @publicDocs */
|
|
1185
1205
|
declare function cartGiftCardCodesRemoveDefault(options: CartQueryOptions): CartGiftCardCodesRemoveFunction;
|
|
1186
1206
|
|
|
1187
1207
|
type CartDeliveryAddressesAddFunction = (addresses: Array<CartSelectableAddressInput>, optionalParams?: CartOptionalInput) => Promise<CartQueryDataReturn>;
|
|
@@ -1205,6 +1225,7 @@ type CartDeliveryAddressesAddFunction = (addresses: Array<CartSelectableAddressI
|
|
|
1205
1225
|
* }
|
|
1206
1226
|
* ], { someOptionalParam: 'value' }
|
|
1207
1227
|
* );
|
|
1228
|
+
* @publicDocs
|
|
1208
1229
|
*/
|
|
1209
1230
|
declare function cartDeliveryAddressesAddDefault(options: CartQueryOptions): CartDeliveryAddressesAddFunction;
|
|
1210
1231
|
|
|
@@ -1224,6 +1245,7 @@ type CartDeliveryAddressesRemoveFunction = (addressIds: Array<Scalars['ID']['inp
|
|
|
1224
1245
|
* "gid://shopify/<objectName>/10079785100"
|
|
1225
1246
|
* ],
|
|
1226
1247
|
* { someOptionalParam: 'value' });
|
|
1248
|
+
* @publicDocs
|
|
1227
1249
|
*/
|
|
1228
1250
|
declare function cartDeliveryAddressesRemoveDefault(options: CartQueryOptions): CartDeliveryAddressesRemoveFunction;
|
|
1229
1251
|
|
|
@@ -1265,6 +1287,7 @@ type CartDeliveryAddressesUpdateFunction = (addresses: Array<CartSelectableAddre
|
|
|
1265
1287
|
"validationStrategy": "COUNTRY_CODE_ONLY"
|
|
1266
1288
|
}
|
|
1267
1289
|
],{ someOptionalParam: 'value' });
|
|
1290
|
+
* @publicDocs
|
|
1268
1291
|
*/
|
|
1269
1292
|
declare function cartDeliveryAddressesUpdateDefault(options: CartQueryOptions): CartDeliveryAddressesUpdateFunction;
|
|
1270
1293
|
|
|
@@ -1293,6 +1316,7 @@ type CartDeliveryAddressesReplaceFunction = (addresses: Array<CartSelectableAddr
|
|
|
1293
1316
|
* }
|
|
1294
1317
|
* ], { someOptionalParam: 'value' }
|
|
1295
1318
|
* );
|
|
1319
|
+
* @publicDocs
|
|
1296
1320
|
*/
|
|
1297
1321
|
declare function cartDeliveryAddressesReplaceDefault(options: CartQueryOptions): CartDeliveryAddressesReplaceFunction;
|
|
1298
1322
|
|
|
@@ -1425,11 +1449,11 @@ type HydrogenCart = {
|
|
|
1425
1449
|
replaceDeliveryAddresses: ReturnType<typeof cartDeliveryAddressesReplaceDefault>;
|
|
1426
1450
|
};
|
|
1427
1451
|
type HydrogenCartCustom<TCustomMethods extends Partial<HydrogenCart> & CustomMethodsBase> = Omit<HydrogenCart, keyof TCustomMethods> & TCustomMethods;
|
|
1452
|
+
/** @publicDocs */
|
|
1428
1453
|
declare function createCartHandler(options: CartHandlerOptions): HydrogenCart;
|
|
1429
1454
|
declare function createCartHandler<TCustomMethods extends CustomMethodsBase>(options: CartHandlerOptionsWithCustom<TCustomMethods>): HydrogenCartCustom<TCustomMethods>;
|
|
1430
1455
|
|
|
1431
1456
|
type RequestEventPayload = {
|
|
1432
|
-
__fromVite?: boolean;
|
|
1433
1457
|
url: string;
|
|
1434
1458
|
eventType: 'request' | 'subrequest';
|
|
1435
1459
|
requestId?: string | null;
|
|
@@ -1460,6 +1484,102 @@ type RequestEventPayload = {
|
|
|
1460
1484
|
declare const CUSTOMER_ACCOUNT_SESSION_KEY = "customerAccount";
|
|
1461
1485
|
declare const BUYER_SESSION_KEY = "buyer";
|
|
1462
1486
|
|
|
1487
|
+
type ConsentStatus = boolean | undefined;
|
|
1488
|
+
type VisitorConsent = {
|
|
1489
|
+
marketing: ConsentStatus;
|
|
1490
|
+
analytics: ConsentStatus;
|
|
1491
|
+
preferences: ConsentStatus;
|
|
1492
|
+
sale_of_data: ConsentStatus;
|
|
1493
|
+
};
|
|
1494
|
+
type VisitorConsentCollected = {
|
|
1495
|
+
analyticsAllowed: boolean;
|
|
1496
|
+
firstPartyMarketingAllowed: boolean;
|
|
1497
|
+
marketingAllowed: boolean;
|
|
1498
|
+
preferencesAllowed: boolean;
|
|
1499
|
+
saleOfDataAllowed: boolean;
|
|
1500
|
+
thirdPartyMarketingAllowed: boolean;
|
|
1501
|
+
};
|
|
1502
|
+
type CustomerPrivacyApiLoaded = boolean;
|
|
1503
|
+
type CustomerPrivacyConsentConfig = {
|
|
1504
|
+
checkoutRootDomain: string;
|
|
1505
|
+
storefrontRootDomain?: string;
|
|
1506
|
+
storefrontAccessToken: string;
|
|
1507
|
+
country?: CountryCode$1;
|
|
1508
|
+
/** The privacyBanner refers to `language` as `locale` */
|
|
1509
|
+
locale?: LanguageCode$1;
|
|
1510
|
+
};
|
|
1511
|
+
type SetConsentHeadlessParams = VisitorConsent & CustomerPrivacyConsentConfig & {
|
|
1512
|
+
headlessStorefront?: boolean;
|
|
1513
|
+
};
|
|
1514
|
+
/**
|
|
1515
|
+
Ideally this type should come from the Custoemr Privacy API sdk
|
|
1516
|
+
analyticsProcessingAllowed -
|
|
1517
|
+
currentVisitorConsent
|
|
1518
|
+
doesMerchantSupportGranularConsent
|
|
1519
|
+
firstPartyMarketingAllowed
|
|
1520
|
+
getCCPAConsent
|
|
1521
|
+
getTrackingConsent
|
|
1522
|
+
marketingAllowed
|
|
1523
|
+
preferencesProcessingAllowed
|
|
1524
|
+
saleOfDataAllowed
|
|
1525
|
+
saleOfDataRegion
|
|
1526
|
+
setTrackingConsent
|
|
1527
|
+
shouldShowBanner
|
|
1528
|
+
shouldShowGDPRBanner
|
|
1529
|
+
thirdPartyMarketingAllowed
|
|
1530
|
+
**/
|
|
1531
|
+
type OriginalCustomerPrivacy = {
|
|
1532
|
+
currentVisitorConsent: () => VisitorConsent;
|
|
1533
|
+
preferencesProcessingAllowed: () => boolean;
|
|
1534
|
+
saleOfDataAllowed: () => boolean;
|
|
1535
|
+
marketingAllowed: () => boolean;
|
|
1536
|
+
analyticsProcessingAllowed: () => boolean;
|
|
1537
|
+
setTrackingConsent: (consent: SetConsentHeadlessParams, callback: (data: {
|
|
1538
|
+
error: string;
|
|
1539
|
+
} | undefined) => void) => void;
|
|
1540
|
+
shouldShowBanner: () => boolean;
|
|
1541
|
+
};
|
|
1542
|
+
type CustomerPrivacy = Omit<OriginalCustomerPrivacy, 'setTrackingConsent'> & {
|
|
1543
|
+
setTrackingConsent: (consent: VisitorConsent, // we have already applied the headlessStorefront in the override
|
|
1544
|
+
callback: (data: {
|
|
1545
|
+
error: string;
|
|
1546
|
+
} | undefined) => void) => void;
|
|
1547
|
+
};
|
|
1548
|
+
type PrivacyBanner = {
|
|
1549
|
+
loadBanner: (options?: Partial<CustomerPrivacyConsentConfig>) => void;
|
|
1550
|
+
showPreferences: (options?: Partial<CustomerPrivacyConsentConfig>) => void;
|
|
1551
|
+
};
|
|
1552
|
+
interface CustomEventMap$1 {
|
|
1553
|
+
visitorConsentCollected: CustomEvent<VisitorConsentCollected>;
|
|
1554
|
+
customerPrivacyApiLoaded: CustomEvent<CustomerPrivacyApiLoaded>;
|
|
1555
|
+
}
|
|
1556
|
+
type CustomerPrivacyApiProps = {
|
|
1557
|
+
/** The production shop checkout domain url. */
|
|
1558
|
+
checkoutDomain: string;
|
|
1559
|
+
/** The storefront access token for the shop. */
|
|
1560
|
+
storefrontAccessToken: string;
|
|
1561
|
+
/** Whether to load the Shopify privacy banner as configured in Shopify admin. Defaults to true. */
|
|
1562
|
+
withPrivacyBanner?: boolean;
|
|
1563
|
+
/** Country code for the shop. */
|
|
1564
|
+
country?: CountryCode$1;
|
|
1565
|
+
/** Language code for the shop. */
|
|
1566
|
+
locale?: LanguageCode$1;
|
|
1567
|
+
/** Callback to be called when visitor consent is collected. */
|
|
1568
|
+
onVisitorConsentCollected?: (consent: VisitorConsentCollected) => void;
|
|
1569
|
+
/** Callback to be call when customer privacy api is ready. */
|
|
1570
|
+
onReady?: () => void;
|
|
1571
|
+
/**
|
|
1572
|
+
* Whether consent libraries can use same-domain requests to the Storefront API.
|
|
1573
|
+
* Defaults to true if the standard route proxy is enabled in Hydrogen server.
|
|
1574
|
+
*/
|
|
1575
|
+
sameDomainForStorefrontApi?: boolean;
|
|
1576
|
+
};
|
|
1577
|
+
/** @publicDocs */
|
|
1578
|
+
declare function useCustomerPrivacy(props: CustomerPrivacyApiProps): {
|
|
1579
|
+
customerPrivacy: CustomerPrivacy | null;
|
|
1580
|
+
privacyBanner?: PrivacyBanner | null;
|
|
1581
|
+
};
|
|
1582
|
+
|
|
1463
1583
|
interface HydrogenSessionData {
|
|
1464
1584
|
[CUSTOMER_ACCOUNT_SESSION_KEY]: {
|
|
1465
1585
|
accessToken?: string;
|
|
@@ -1544,7 +1664,9 @@ declare global {
|
|
|
1544
1664
|
interface Window {
|
|
1545
1665
|
privacyBanner: PrivacyBanner;
|
|
1546
1666
|
Shopify: {
|
|
1547
|
-
customerPrivacy
|
|
1667
|
+
customerPrivacy?: Partial<CustomerPrivacy> & {
|
|
1668
|
+
backendConsentEnabled?: boolean;
|
|
1669
|
+
};
|
|
1548
1670
|
};
|
|
1549
1671
|
}
|
|
1550
1672
|
interface Document {
|
|
@@ -1664,12 +1786,14 @@ type StorefrontQueryOptions = StorefrontCommonExtraParams & {
|
|
|
1664
1786
|
cache?: CachingStrategy;
|
|
1665
1787
|
};
|
|
1666
1788
|
/**
|
|
1667
|
-
* This function extends `createStorefrontClient` from [Hydrogen React](/docs/api/hydrogen-react/2026-
|
|
1789
|
+
* This function extends `createStorefrontClient` from [Hydrogen React](/docs/api/hydrogen-react/2026-04/utilities/createstorefrontclient). The additional arguments enable internationalization (i18n), caching, and other features particular to Remix and Oxygen.
|
|
1668
1790
|
*
|
|
1669
1791
|
* Learn more about [data fetching in Hydrogen](/docs/custom-storefronts/hydrogen/data-fetching/fetch-data).
|
|
1792
|
+
* @publicDocs
|
|
1670
1793
|
*/
|
|
1671
1794
|
declare function createStorefrontClient<TI18n extends I18nBase>(options: CreateStorefrontClientOptions<TI18n>): StorefrontClient<TI18n>;
|
|
1672
1795
|
declare function formatAPIResult<T>(data: T, errors: StorefrontApiErrors): T & StorefrontError;
|
|
1796
|
+
/** @publicDocs */
|
|
1673
1797
|
type CreateStorefrontClientForDocs<TI18n extends I18nBase> = {
|
|
1674
1798
|
storefront?: StorefrontForDoc<TI18n>;
|
|
1675
1799
|
};
|
|
@@ -1690,13 +1814,13 @@ type StorefrontForDoc<TI18n extends I18nBase = I18nBase> = {
|
|
|
1690
1814
|
CacheCustom?: typeof CacheCustom;
|
|
1691
1815
|
/** Re-export of [`generateCacheControlHeader`](/docs/api/hydrogen/utilities/generatecachecontrolheader). */
|
|
1692
1816
|
generateCacheControlHeader?: typeof generateCacheControlHeader;
|
|
1693
|
-
/** Returns an object that contains headers that are needed for each query to Storefront API GraphQL endpoint. See [`getPublicTokenHeaders` in Hydrogen React](/docs/api/hydrogen-react/2026-
|
|
1817
|
+
/** Returns an object that contains headers that are needed for each query to Storefront API GraphQL endpoint. See [`getPublicTokenHeaders` in Hydrogen React](/docs/api/hydrogen-react/2026-04/utilities/createstorefrontclient#:~:text=%27graphql%27.-,getPublicTokenHeaders,-(props%3F%3A) for more details. */
|
|
1694
1818
|
getPublicTokenHeaders?: ReturnType<typeof createStorefrontClient$1>['getPublicTokenHeaders'];
|
|
1695
|
-
/** Returns an object that contains headers that are needed for each query to Storefront API GraphQL endpoint for API calls made from a server. See [`getPrivateTokenHeaders` in Hydrogen React](/docs/api/hydrogen-react/2026-
|
|
1819
|
+
/** Returns an object that contains headers that are needed for each query to Storefront API GraphQL endpoint for API calls made from a server. See [`getPrivateTokenHeaders` in Hydrogen React](/docs/api/hydrogen-react/2026-04/utilities/createstorefrontclient#:~:text=storefrontApiVersion-,getPrivateTokenHeaders,-(props%3F%3A) for more details.*/
|
|
1696
1820
|
getPrivateTokenHeaders?: ReturnType<typeof createStorefrontClient$1>['getPrivateTokenHeaders'];
|
|
1697
|
-
/** Creates the fully-qualified URL to your myshopify.com domain. See [`getShopifyDomain` in Hydrogen React](/docs/api/hydrogen-react/2026-
|
|
1821
|
+
/** Creates the fully-qualified URL to your myshopify.com domain. See [`getShopifyDomain` in Hydrogen React](/docs/api/hydrogen-react/2026-04/utilities/createstorefrontclient#:~:text=StorefrontClientReturn-,getShopifyDomain,-(props%3F%3A) for more details. */
|
|
1698
1822
|
getShopifyDomain?: ReturnType<typeof createStorefrontClient$1>['getShopifyDomain'];
|
|
1699
|
-
/** Creates the fully-qualified URL to your store's GraphQL endpoint. See [`getStorefrontApiUrl` in Hydrogen React](/docs/api/hydrogen-react/2026-
|
|
1823
|
+
/** Creates the fully-qualified URL to your store's GraphQL endpoint. See [`getStorefrontApiUrl` in Hydrogen React](/docs/api/hydrogen-react/2026-04/utilities/createstorefrontclient#:~:text=storeDomain-,getStorefrontApiUrl,-(props%3F%3A) for more details.*/
|
|
1700
1824
|
getApiUrl?: ReturnType<typeof createStorefrontClient$1>['getStorefrontApiUrl'];
|
|
1701
1825
|
/** The `i18n` object passed in from the `createStorefrontClient` argument. */
|
|
1702
1826
|
i18n?: TI18n;
|
|
@@ -1894,107 +2018,17 @@ type CustomViewProps = {
|
|
|
1894
2018
|
data?: OtherData;
|
|
1895
2019
|
customData?: OtherData;
|
|
1896
2020
|
};
|
|
2021
|
+
/** @publicDocs */
|
|
1897
2022
|
declare function AnalyticsProductView(props: ProductViewProps): react_jsx_runtime.JSX.Element;
|
|
2023
|
+
/** @publicDocs */
|
|
1898
2024
|
declare function AnalyticsCollectionView(props: CollectionViewProps): react_jsx_runtime.JSX.Element;
|
|
2025
|
+
/** @publicDocs */
|
|
1899
2026
|
declare function AnalyticsCartView(props: BasicViewProps): react_jsx_runtime.JSX.Element;
|
|
2027
|
+
/** @publicDocs */
|
|
1900
2028
|
declare function AnalyticsSearchView(props: SearchViewProps): react_jsx_runtime.JSX.Element;
|
|
2029
|
+
/** @publicDocs */
|
|
1901
2030
|
declare function AnalyticsCustomView(props: CustomViewProps): react_jsx_runtime.JSX.Element;
|
|
1902
2031
|
|
|
1903
|
-
type ConsentStatus = boolean | undefined;
|
|
1904
|
-
type VisitorConsent = {
|
|
1905
|
-
marketing: ConsentStatus;
|
|
1906
|
-
analytics: ConsentStatus;
|
|
1907
|
-
preferences: ConsentStatus;
|
|
1908
|
-
sale_of_data: ConsentStatus;
|
|
1909
|
-
};
|
|
1910
|
-
type VisitorConsentCollected = {
|
|
1911
|
-
analyticsAllowed: boolean;
|
|
1912
|
-
firstPartyMarketingAllowed: boolean;
|
|
1913
|
-
marketingAllowed: boolean;
|
|
1914
|
-
preferencesAllowed: boolean;
|
|
1915
|
-
saleOfDataAllowed: boolean;
|
|
1916
|
-
thirdPartyMarketingAllowed: boolean;
|
|
1917
|
-
};
|
|
1918
|
-
type CustomerPrivacyApiLoaded = boolean;
|
|
1919
|
-
type CustomerPrivacyConsentConfig = {
|
|
1920
|
-
checkoutRootDomain: string;
|
|
1921
|
-
storefrontRootDomain?: string;
|
|
1922
|
-
storefrontAccessToken: string;
|
|
1923
|
-
country?: CountryCode$1;
|
|
1924
|
-
/** The privacyBanner refers to `language` as `locale` */
|
|
1925
|
-
locale?: LanguageCode$1;
|
|
1926
|
-
};
|
|
1927
|
-
type SetConsentHeadlessParams = VisitorConsent & CustomerPrivacyConsentConfig & {
|
|
1928
|
-
headlessStorefront?: boolean;
|
|
1929
|
-
};
|
|
1930
|
-
/**
|
|
1931
|
-
Ideally this type should come from the Custoemr Privacy API sdk
|
|
1932
|
-
analyticsProcessingAllowed -
|
|
1933
|
-
currentVisitorConsent
|
|
1934
|
-
doesMerchantSupportGranularConsent
|
|
1935
|
-
firstPartyMarketingAllowed
|
|
1936
|
-
getCCPAConsent
|
|
1937
|
-
getTrackingConsent
|
|
1938
|
-
marketingAllowed
|
|
1939
|
-
preferencesProcessingAllowed
|
|
1940
|
-
saleOfDataAllowed
|
|
1941
|
-
saleOfDataRegion
|
|
1942
|
-
setTrackingConsent
|
|
1943
|
-
shouldShowBanner
|
|
1944
|
-
shouldShowGDPRBanner
|
|
1945
|
-
thirdPartyMarketingAllowed
|
|
1946
|
-
**/
|
|
1947
|
-
type OriginalCustomerPrivacy = {
|
|
1948
|
-
currentVisitorConsent: () => VisitorConsent;
|
|
1949
|
-
preferencesProcessingAllowed: () => boolean;
|
|
1950
|
-
saleOfDataAllowed: () => boolean;
|
|
1951
|
-
marketingAllowed: () => boolean;
|
|
1952
|
-
analyticsProcessingAllowed: () => boolean;
|
|
1953
|
-
setTrackingConsent: (consent: SetConsentHeadlessParams, callback: (data: {
|
|
1954
|
-
error: string;
|
|
1955
|
-
} | undefined) => void) => void;
|
|
1956
|
-
shouldShowBanner: () => boolean;
|
|
1957
|
-
};
|
|
1958
|
-
type CustomerPrivacy$1 = Omit<OriginalCustomerPrivacy, 'setTrackingConsent'> & {
|
|
1959
|
-
setTrackingConsent: (consent: VisitorConsent, // we have already applied the headlessStorefront in the override
|
|
1960
|
-
callback: (data: {
|
|
1961
|
-
error: string;
|
|
1962
|
-
} | undefined) => void) => void;
|
|
1963
|
-
};
|
|
1964
|
-
type PrivacyBanner$1 = {
|
|
1965
|
-
loadBanner: (options?: Partial<CustomerPrivacyConsentConfig>) => void;
|
|
1966
|
-
showPreferences: (options?: Partial<CustomerPrivacyConsentConfig>) => void;
|
|
1967
|
-
};
|
|
1968
|
-
interface CustomEventMap$1 {
|
|
1969
|
-
visitorConsentCollected: CustomEvent<VisitorConsentCollected>;
|
|
1970
|
-
customerPrivacyApiLoaded: CustomEvent<CustomerPrivacyApiLoaded>;
|
|
1971
|
-
}
|
|
1972
|
-
type CustomerPrivacyApiProps = {
|
|
1973
|
-
/** The production shop checkout domain url. */
|
|
1974
|
-
checkoutDomain: string;
|
|
1975
|
-
/** The storefront access token for the shop. */
|
|
1976
|
-
storefrontAccessToken: string;
|
|
1977
|
-
/** Whether to load the Shopify privacy banner as configured in Shopify admin. Defaults to true. */
|
|
1978
|
-
withPrivacyBanner?: boolean;
|
|
1979
|
-
/** Country code for the shop. */
|
|
1980
|
-
country?: CountryCode$1;
|
|
1981
|
-
/** Language code for the shop. */
|
|
1982
|
-
locale?: LanguageCode$1;
|
|
1983
|
-
/** Callback to be called when visitor consent is collected. */
|
|
1984
|
-
onVisitorConsentCollected?: (consent: VisitorConsentCollected) => void;
|
|
1985
|
-
/** Callback to be call when customer privacy api is ready. */
|
|
1986
|
-
onReady?: () => void;
|
|
1987
|
-
/**
|
|
1988
|
-
* Whether consent libraries can use same-domain requests to the Storefront API.
|
|
1989
|
-
* Defaults to true if the standard route proxy is enabled in Hydrogen server.
|
|
1990
|
-
*/
|
|
1991
|
-
sameDomainForStorefrontApi?: boolean;
|
|
1992
|
-
};
|
|
1993
|
-
declare function useCustomerPrivacy(props: CustomerPrivacyApiProps): {
|
|
1994
|
-
customerPrivacy: CustomerPrivacy$1 | null;
|
|
1995
|
-
privacyBanner?: PrivacyBanner$1 | null;
|
|
1996
|
-
};
|
|
1997
|
-
|
|
1998
2032
|
type ShopAnalytics = {
|
|
1999
2033
|
/** The shop ID. */
|
|
2000
2034
|
shopId: string;
|
|
@@ -2008,6 +2042,7 @@ type ShopAnalytics = {
|
|
|
2008
2042
|
type Consent = Partial<Pick<CustomerPrivacyApiProps, 'checkoutDomain' | 'sameDomainForStorefrontApi' | 'storefrontAccessToken' | 'withPrivacyBanner' | 'country'>> & {
|
|
2009
2043
|
language?: LanguageCode$1;
|
|
2010
2044
|
};
|
|
2045
|
+
/** @publicDocs */
|
|
2011
2046
|
type AnalyticsProviderProps = {
|
|
2012
2047
|
/** React children to render. */
|
|
2013
2048
|
children?: ReactNode;
|
|
@@ -2046,9 +2081,9 @@ type AnalyticsContextValue = {
|
|
|
2046
2081
|
/** A function to subscribe to analytics events. */
|
|
2047
2082
|
subscribe: typeof subscribe;
|
|
2048
2083
|
/** The privacy banner SDK methods with the config applied */
|
|
2049
|
-
privacyBanner: PrivacyBanner
|
|
2084
|
+
privacyBanner: PrivacyBanner | null;
|
|
2050
2085
|
/** The customer privacy SDK methods with the config applied */
|
|
2051
|
-
customerPrivacy: CustomerPrivacy
|
|
2086
|
+
customerPrivacy: CustomerPrivacy | null;
|
|
2052
2087
|
};
|
|
2053
2088
|
declare function subscribe(event: typeof AnalyticsEvent.PAGE_VIEWED, callback: (payload: PageViewPayload) => void): void;
|
|
2054
2089
|
declare function subscribe(event: typeof AnalyticsEvent.PRODUCT_VIEWED, callback: (payload: ProductViewPayload) => void): void;
|
|
@@ -2068,6 +2103,7 @@ declare function publish(event: typeof AnalyticsEvent.PRODUCT_ADD_TO_CART, paylo
|
|
|
2068
2103
|
declare function publish(event: typeof AnalyticsEvent.PRODUCT_REMOVED_FROM_CART, payload: CartLineUpdatePayload): void;
|
|
2069
2104
|
declare function publish(event: typeof AnalyticsEvent.CUSTOM_EVENT, payload: OtherData): void;
|
|
2070
2105
|
declare function AnalyticsProvider({ canTrack: customCanTrack, cart: currentCart, children, consent, customData, shop: shopProp, cookieDomain, }: AnalyticsProviderProps): JSX.Element;
|
|
2106
|
+
/** @publicDocs */
|
|
2071
2107
|
declare function useAnalytics(): AnalyticsContextValue;
|
|
2072
2108
|
type ShopAnalyticsProps = {
|
|
2073
2109
|
/**
|
|
@@ -2079,6 +2115,7 @@ type ShopAnalyticsProps = {
|
|
|
2079
2115
|
*/
|
|
2080
2116
|
publicStorefrontId: string;
|
|
2081
2117
|
};
|
|
2118
|
+
/** @publicDocs */
|
|
2082
2119
|
declare function getShopAnalytics({ storefront, publicStorefrontId, }: ShopAnalyticsProps): Promise<ShopAnalytics | null>;
|
|
2083
2120
|
declare const Analytics: {
|
|
2084
2121
|
CartView: typeof AnalyticsCartView;
|
|
@@ -2139,6 +2176,7 @@ type WithCache = {
|
|
|
2139
2176
|
response: Response;
|
|
2140
2177
|
}>;
|
|
2141
2178
|
};
|
|
2179
|
+
/** @publicDocs */
|
|
2142
2180
|
declare function createWithCache(cacheOptions: CreateWithCacheOptions): WithCache;
|
|
2143
2181
|
|
|
2144
2182
|
/**
|
|
@@ -2146,6 +2184,7 @@ declare function createWithCache(cacheOptions: CreateWithCacheOptions): WithCach
|
|
|
2146
2184
|
* It only supports the `cache-control` header.
|
|
2147
2185
|
* It does NOT support `age` or `expires` headers.
|
|
2148
2186
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/Cache
|
|
2187
|
+
* @publicDocs
|
|
2149
2188
|
*/
|
|
2150
2189
|
declare class InMemoryCache implements Cache {
|
|
2151
2190
|
#private;
|
|
@@ -2408,6 +2447,7 @@ type CartFormCommonProps = {
|
|
|
2408
2447
|
type CartActionInputProps = CartAttributesUpdateProps | CartBuyerIdentityUpdateProps | CartCreateProps | CartDiscountCodesUpdateProps | CartGiftCardCodesUpdateProps | CartGiftCardCodesAddProps | CartGiftCardCodesRemoveProps | CartLinesAddProps | CartLinesUpdateProps | CartLinesRemoveProps | CartNoteUpdateProps | CartSelectedDeliveryOptionsUpdateProps | CartMetafieldsSetProps | CartMetafieldDeleteProps | CartDeliveryAddressesAddProps | CartDeliveryAddressesRemoveProps | CartDeliveryAddressesUpdateProps | CartDeliveryAddressesReplaceProps | CartCustomProps;
|
|
2409
2448
|
type CartActionInput = CartAttributesUpdateRequire | CartBuyerIdentityUpdateRequire | CartCreateRequire | CartDiscountCodesUpdateRequire | CartGiftCardCodesUpdateRequire | CartGiftCardCodesAddRequire | CartGiftCardCodesRemoveRequire | CartLinesAddRequire | CartLinesUpdateRequire | CartLinesRemoveRequire | CartNoteUpdateRequire | CartSelectedDeliveryOptionsUpdateRequire | CartMetafieldsSetRequire | CartMetafieldDeleteRequire | CartDeliveryAddressesAddRequire | CartDeliveryAddressesRemoveRequire | CartDeliveryAddressesUpdateRequire | CartDeliveryAddressesReplaceRequire | CartCustomRequire;
|
|
2410
2449
|
type CartFormProps = CartActionInputProps & CartFormCommonProps;
|
|
2450
|
+
/** @publicDocs */
|
|
2411
2451
|
declare function CartForm({ children, action, inputs, route, fetcherKey, }: CartFormProps): JSX.Element;
|
|
2412
2452
|
declare namespace CartForm {
|
|
2413
2453
|
var INPUT_NAME: string;
|
|
@@ -2434,6 +2474,7 @@ declare namespace CartForm {
|
|
|
2434
2474
|
var getFormInput: (formData: FormData) => CartActionInput;
|
|
2435
2475
|
}
|
|
2436
2476
|
|
|
2477
|
+
/** @publicDocs */
|
|
2437
2478
|
declare const cartGetIdDefault: (requestHeaders: CrossRuntimeRequest["headers"]) => () => string | undefined;
|
|
2438
2479
|
|
|
2439
2480
|
type CookieOptions = {
|
|
@@ -2445,6 +2486,7 @@ type CookieOptions = {
|
|
|
2445
2486
|
domain?: string;
|
|
2446
2487
|
path?: string;
|
|
2447
2488
|
};
|
|
2489
|
+
/** @publicDocs */
|
|
2448
2490
|
declare const cartSetIdDefault: (cookieOptions?: CookieOptions) => (cartId: string) => Headers;
|
|
2449
2491
|
|
|
2450
2492
|
type LikeACart = {
|
|
@@ -2475,6 +2517,7 @@ type OptimisticCart<T = CartReturn> = T extends undefined | null ? // This is th
|
|
|
2475
2517
|
* @param cart The cart object from `context.cart.get()` returned by a server loader.
|
|
2476
2518
|
*
|
|
2477
2519
|
* @returns A new cart object augmented with optimistic state for `lines` and `totalQuantity`. Each cart line item that is optimistically added includes an `isOptimistic` property. Also if the cart has _any_ optimistic state, a root property `isOptimistic` will be set to `true`.
|
|
2520
|
+
* @publicDocs
|
|
2478
2521
|
*/
|
|
2479
2522
|
declare function useOptimisticCart<DefaultCart = {
|
|
2480
2523
|
lines?: {
|
|
@@ -2510,6 +2553,7 @@ declare function changelogHandler({ request, changelogUrl, }: {
|
|
|
2510
2553
|
* const cart = context.get(hydrogenContext.cart);
|
|
2511
2554
|
* }
|
|
2512
2555
|
* ```
|
|
2556
|
+
* @publicDocs
|
|
2513
2557
|
*/
|
|
2514
2558
|
declare const hydrogenContext: {
|
|
2515
2559
|
readonly storefront: react_router.RouterContext<Storefront<I18nBase>>;
|
|
@@ -2590,6 +2634,7 @@ interface HydrogenContext<TSession extends HydrogenSession = HydrogenSession, TC
|
|
|
2590
2634
|
/** Any cookie implementation. By default Hydrogen ships with cookie session storage, but you can use [another session storage](https://remix.run/docs/en/main/utils/sessions) implementation. */
|
|
2591
2635
|
session: TSession;
|
|
2592
2636
|
}
|
|
2637
|
+
/** @publicDocs */
|
|
2593
2638
|
declare function createHydrogenContext<TSession extends HydrogenSession, TCustomMethods extends CustomMethodsBase | undefined = {}, TI18n extends I18nBase = I18nBase, TEnv extends HydrogenEnv = Env, TAdditionalContext extends Record<string, any> = {}>(options: HydrogenContextOptions<TSession, TCustomMethods, TI18n, TEnv>, additionalContext?: TAdditionalContext): HydrogenRouterContextProvider<TSession, TCustomMethods, TI18n, TEnv> & TAdditionalContext;
|
|
2594
2639
|
|
|
2595
2640
|
type CreateRequestHandlerOptions<Context = unknown> = {
|
|
@@ -2615,20 +2660,15 @@ type CreateRequestHandlerOptions<Context = unknown> = {
|
|
|
2615
2660
|
* @default true
|
|
2616
2661
|
*/
|
|
2617
2662
|
collectTrackingInformation?: boolean;
|
|
2618
|
-
/**
|
|
2619
|
-
* Whether to proxy standard routes such as `/api/.../graphql.json` (Storefront API).
|
|
2620
|
-
* You can disable this if you are handling these routes yourself. Ensure that
|
|
2621
|
-
* the proxy works if you rely on Hydrogen's built-in behaviors such as analytics.
|
|
2622
|
-
* @default true
|
|
2623
|
-
*/
|
|
2624
|
-
proxyStandardRoutes?: boolean;
|
|
2625
2663
|
};
|
|
2626
2664
|
/**
|
|
2627
2665
|
* Creates a request handler for Hydrogen apps using React Router.
|
|
2666
|
+
* @publicDocs
|
|
2628
2667
|
*/
|
|
2629
|
-
declare function createRequestHandler<Context = unknown>({ build, mode, poweredByHeader, getLoadContext, collectTrackingInformation,
|
|
2668
|
+
declare function createRequestHandler<Context = unknown>({ build, mode, poweredByHeader, getLoadContext, collectTrackingInformation, }: CreateRequestHandlerOptions<Context>): (request: Request) => Promise<Response>;
|
|
2630
2669
|
|
|
2631
2670
|
declare const NonceProvider: react.Provider<string | undefined>;
|
|
2671
|
+
/** @publicDocs */
|
|
2632
2672
|
declare const useNonce: () => string | undefined;
|
|
2633
2673
|
type ContentSecurityPolicy = {
|
|
2634
2674
|
/** A randomly generated nonce string that should be passed to any custom `script` element */
|
|
@@ -2678,6 +2718,7 @@ type ShopProp = {
|
|
|
2678
2718
|
};
|
|
2679
2719
|
/**
|
|
2680
2720
|
* @param directives - Pass custom [content security policy directives](https://content-security-policy.com/). This is important if you load content in your app from third-party domains.
|
|
2721
|
+
* @publicDocs
|
|
2681
2722
|
*/
|
|
2682
2723
|
declare function createContentSecurityPolicy(props?: CreateContentSecurityPolicy & ShopProp): ContentSecurityPolicy;
|
|
2683
2724
|
|
|
@@ -2687,12 +2728,15 @@ interface HydrogenScriptProps {
|
|
|
2687
2728
|
}
|
|
2688
2729
|
interface ScriptAttributes extends ScriptHTMLAttributes<HTMLScriptElement> {
|
|
2689
2730
|
}
|
|
2731
|
+
/** @publicDocs */
|
|
2690
2732
|
declare const Script: react.ForwardRefExoticComponent<HydrogenScriptProps & ScriptAttributes & react.RefAttributes<HTMLScriptElement>>;
|
|
2691
2733
|
|
|
2734
|
+
/** @publicDocs */
|
|
2692
2735
|
declare function createCustomerAccountClient({ session, customerAccountId, shopId, customerApiVersion, request, waitUntil, authUrl, customAuthStatusHandler, logErrors, loginPath, authorizePath, defaultRedirectPath, language, useCustomAuthDomain, }: CustomerAccountOptions): CustomerAccount;
|
|
2693
2736
|
|
|
2694
2737
|
declare function hydrogenRoutes(currentRoutes: Array<RouteConfigEntry>): Promise<Array<RouteConfigEntry>>;
|
|
2695
2738
|
|
|
2739
|
+
/** @publicDocs */
|
|
2696
2740
|
declare function useOptimisticData<T>(identifier: string): T;
|
|
2697
2741
|
type OptimisticInputProps = {
|
|
2698
2742
|
/**
|
|
@@ -2706,6 +2750,7 @@ type OptimisticInputProps = {
|
|
|
2706
2750
|
*/
|
|
2707
2751
|
data: Record<string, unknown>;
|
|
2708
2752
|
};
|
|
2753
|
+
/** @publicDocs */
|
|
2709
2754
|
declare function OptimisticInput({ id, data }: OptimisticInputProps): react_jsx_runtime.JSX.Element;
|
|
2710
2755
|
|
|
2711
2756
|
declare global {
|
|
@@ -2765,6 +2810,7 @@ type PaginationRenderProp<NodesType> = FC<PaginationInfo<NodesType>>;
|
|
|
2765
2810
|
*
|
|
2766
2811
|
* @prop connection The response from `storefront.query` for a paginated request. Make sure the query is passed pagination variables and that the query has `pageInfo` with `hasPreviousPage`, `hasNextpage`, `startCursor`, and `endCursor` defined.
|
|
2767
2812
|
* @prop children A render prop that includes pagination data and helpers.
|
|
2813
|
+
* @publicDocs
|
|
2768
2814
|
*/
|
|
2769
2815
|
declare function Pagination<NodesType>({ connection, children, namespace, }: PaginationProps<NodesType>): ReturnType<FC>;
|
|
2770
2816
|
/**
|
|
@@ -2772,6 +2818,7 @@ declare function Pagination<NodesType>({ connection, children, namespace, }: Pag
|
|
|
2772
2818
|
* @param options Options for how to configure the pagination variables. Includes the ability to change how many nodes are within each page as well as a namespace to avoid URL param conflicts when using multiple `Pagination` components on a single page.
|
|
2773
2819
|
*
|
|
2774
2820
|
* @returns Variables to be used with the `storefront.query` function
|
|
2821
|
+
* @publicDocs
|
|
2775
2822
|
*/
|
|
2776
2823
|
declare function getPaginationVariables(request: Request, options?: {
|
|
2777
2824
|
pageBy: number;
|
|
@@ -2793,6 +2840,7 @@ type OptimisticProductVariants = Array<PartialDeep<ProductVariant>> | Promise<Ar
|
|
|
2793
2840
|
* @param selectedVariant The `selectedVariant` field queried with `variantBySelectedOptions`.
|
|
2794
2841
|
* @param variants The available product variants for the product. This can be an array of variants, a promise that resolves to an array of variants, or an object with a `product` key that contains the variants.
|
|
2795
2842
|
* @returns A new product object where the `selectedVariant` property is set to the variant that matches the current URL search params. If no variant is found, the original product object is returned. The `isOptimistic` property is set to `true` if the `selectedVariant` has been optimistically changed.
|
|
2843
|
+
* @publicDocs
|
|
2796
2844
|
*/
|
|
2797
2845
|
declare function useOptimisticVariant<SelectedVariant = OptimisticVariantInput, Variants = OptimisticProductVariants>(selectedVariant: SelectedVariant, variants: Variants): OptimisticVariant<SelectedVariant>;
|
|
2798
2846
|
|
|
@@ -2827,9 +2875,9 @@ type VariantOptionValue = {
|
|
|
2827
2875
|
type VariantSelectorProps = {
|
|
2828
2876
|
/** The product handle for all of the variants */
|
|
2829
2877
|
handle: string;
|
|
2830
|
-
/** Product options from the [Storefront API](/docs/api/storefront/2026-
|
|
2878
|
+
/** Product options from the [Storefront API](/docs/api/storefront/2026-04/objects/ProductOption). Make sure both `name` and `values` are a part of your query. */
|
|
2831
2879
|
options: Array<PartialProductOption> | undefined;
|
|
2832
|
-
/** Product variants from the [Storefront API](/docs/api/storefront/2026-
|
|
2880
|
+
/** Product variants from the [Storefront API](/docs/api/storefront/2026-04/objects/ProductVariant). You only need to pass this prop if you want to show product availability. If a product option combination is not found within `variants`, it is assumed to be available. Make sure to include `availableForSale` and `selectedOptions.name` and `selectedOptions.value`. */
|
|
2833
2881
|
variants?: PartialDeep<ProductVariantConnection> | Array<PartialDeep<ProductVariant>>;
|
|
2834
2882
|
/** By default all products are under /products. Use this prop to provide a custom path. */
|
|
2835
2883
|
productPath?: string;
|
|
@@ -2848,10 +2896,12 @@ type VariantSelectorProps = {
|
|
|
2848
2896
|
* [getAdjacentAndFirstAvailableVariants](https://shopify.dev/docs/api/hydrogen/latest/utilities/getadjacentandfirstavailablevariants) utils instead.
|
|
2849
2897
|
* and [useSelectedOptionInUrlParam](https://shopify.dev/docs/api/hydrogen/latest/utilities/useselectedoptioninurlparam)
|
|
2850
2898
|
* For a full implementation see the Skeleton template [routes/product.$handle.tsx](https://github.com/Shopify/hydrogen/blob/main/templates/skeleton/app/routes/products.%24handle.tsx).
|
|
2899
|
+
* @publicDocs
|
|
2851
2900
|
*/
|
|
2852
2901
|
declare function VariantSelector({ handle, options: _options, variants: _variants, productPath, waitForNavigation, selectedVariant, children, }: VariantSelectorProps): react.FunctionComponentElement<{
|
|
2853
2902
|
children?: ReactNode | undefined;
|
|
2854
2903
|
}>;
|
|
2904
|
+
/** @publicDocs */
|
|
2855
2905
|
type GetSelectedProductOptions = (request: Request) => SelectedOptionInput[];
|
|
2856
2906
|
/**
|
|
2857
2907
|
* Extract searchParams from a Request instance and return an array of selected options.
|
|
@@ -2872,6 +2922,7 @@ type GetSelectedProductOptions = (request: Request) => SelectedOptionInput[];
|
|
|
2872
2922
|
* // {name: 'size', value: 'large'}
|
|
2873
2923
|
* // ]
|
|
2874
2924
|
* ```
|
|
2925
|
+
* @publicDocs
|
|
2875
2926
|
**/
|
|
2876
2927
|
declare const getSelectedProductOptions: GetSelectedProductOptions;
|
|
2877
2928
|
|
|
@@ -2919,7 +2970,9 @@ declare function hydrogenPreset(): Preset;
|
|
|
2919
2970
|
|
|
2920
2971
|
declare const RichText: typeof RichText$1;
|
|
2921
2972
|
|
|
2973
|
+
/** @publicDocs */
|
|
2922
2974
|
type GraphiQLLoader = (args: LoaderFunctionArgs) => Promise<Response>;
|
|
2975
|
+
/** @publicDocs */
|
|
2923
2976
|
declare const graphiqlLoader: GraphiQLLoader;
|
|
2924
2977
|
|
|
2925
2978
|
type StorefrontRedirect = {
|
|
@@ -2941,6 +2994,7 @@ type StorefrontRedirect = {
|
|
|
2941
2994
|
* conditionally redirecting after a 404 response.
|
|
2942
2995
|
*
|
|
2943
2996
|
* @see {@link https://help.shopify.com/en/manual/online-store/menus-and-links/url-redirect Creating URL redirects in Shopify}
|
|
2997
|
+
* @publicDocs
|
|
2944
2998
|
*/
|
|
2945
2999
|
declare function storefrontRedirect(options: StorefrontRedirect): Promise<Response>;
|
|
2946
3000
|
|
|
@@ -3212,6 +3266,7 @@ type GetSeoMetaReturn = ReturnType<MetaFunction>;
|
|
|
3212
3266
|
type Optional<T> = T | null | undefined;
|
|
3213
3267
|
/**
|
|
3214
3268
|
* Generate a Remix meta array from one or more SEO configuration objects. This is useful to pass SEO configuration for the parent route(s) and the current route. Similar to `Object.assign()`, each property is overwritten based on the object order. The exception is `jsonLd`, which is preserved so that each route has it's own independent jsonLd meta data.
|
|
3269
|
+
* @publicDocs
|
|
3215
3270
|
*/
|
|
3216
3271
|
declare function getSeoMeta(...seoInputs: Optional<SeoConfig>[]): GetSeoMetaReturn;
|
|
3217
3272
|
|
|
@@ -3232,6 +3287,7 @@ interface SeoProps {
|
|
|
3232
3287
|
}
|
|
3233
3288
|
/**
|
|
3234
3289
|
* @deprecated - use `getSeoMeta` instead
|
|
3290
|
+
* @publicDocs
|
|
3235
3291
|
*/
|
|
3236
3292
|
declare function Seo({ debug }: SeoProps): react.FunctionComponentElement<{
|
|
3237
3293
|
children?: react.ReactNode | undefined;
|
|
@@ -3252,6 +3308,7 @@ interface SitemapIndexOptions {
|
|
|
3252
3308
|
}
|
|
3253
3309
|
/**
|
|
3254
3310
|
* Generate a sitemap index that links to separate sitemaps for each resource type. Returns a standard Response object.
|
|
3311
|
+
* @publicDocs
|
|
3255
3312
|
*/
|
|
3256
3313
|
declare function getSitemapIndex(options: SitemapIndexOptions): Promise<Response>;
|
|
3257
3314
|
interface GetSiteMapOptions {
|
|
@@ -3280,7 +3337,8 @@ interface GetSiteMapOptions {
|
|
|
3280
3337
|
}
|
|
3281
3338
|
/**
|
|
3282
3339
|
* Generate a sitemap for a specific resource type.
|
|
3340
|
+
* @publicDocs
|
|
3283
3341
|
*/
|
|
3284
3342
|
declare function getSitemap(options: GetSiteMapOptions): Promise<Response>;
|
|
3285
3343
|
|
|
3286
|
-
export { Analytics, AnalyticsEvent, CacheCustom, type CacheKey, CacheLong, CacheNone, CacheShort, type CachingStrategy, type CartActionInput, CartForm, type CartLineUpdatePayload, type CartQueryDataReturn, type CartQueryOptions, type CartQueryReturn, type CartReturn, type CartUpdatePayload, type CartViewPayload, type CollectionViewPayload, type ConsentStatus, type CookieOptions, type CreateStorefrontClientForDocs, type CreateStorefrontClientOptions, type CustomEventMap$1 as CustomEventMap, type CustomerAccount, type CustomerAccountMutations, type CustomerAccountQueries, type CustomerPrivacy
|
|
3344
|
+
export { Analytics, AnalyticsEvent, CacheCustom, type CacheKey, CacheLong, CacheNone, CacheShort, type CachingStrategy, type CartActionInput, CartForm, type CartLineUpdatePayload, type CartQueryDataReturn, type CartQueryOptions, type CartQueryReturn, type CartReturn, type CartUpdatePayload, type CartViewPayload, type CollectionViewPayload, type ConsentStatus, type CookieOptions, type CreateStorefrontClientForDocs, type CreateStorefrontClientOptions, type CustomEventMap$1 as CustomEventMap, type CustomerAccount, type CustomerAccountMutations, type CustomerAccountQueries, type CustomerPrivacy, type CustomerPrivacyApiProps, type CustomerPrivacyConsentConfig, type HydrogenCart, type HydrogenCartCustom, type HydrogenContext, type HydrogenEnv, type HydrogenRouterContextProvider, type HydrogenSession, type HydrogenSessionData, type I18nBase, InMemoryCache, type MetafieldWithoutOwnerId, type NoStoreStrategy, NonceProvider, type OptimisticCart, type OptimisticCartLine, type OptimisticCartLineInput, OptimisticInput, type PageViewPayload, Pagination, type PrivacyBanner, type ProductViewPayload, RichText, Script, type SearchViewPayload, Seo, type SeoConfig, type SeoHandleFunction, type SetConsentHeadlessParams, type ShopAnalytics, ShopPayButton, type Storefront, type StorefrontApiErrors, type StorefrontClient, type StorefrontForDoc, type StorefrontMutationOptionsForDocs, type StorefrontMutations, type StorefrontQueries, type StorefrontQueryOptionsForDocs, type VariantOption, type VariantOptionValue, VariantSelector, type VisitorConsent, type VisitorConsentCollected, type WithCache, cartAttributesUpdateDefault, cartBuyerIdentityUpdateDefault, cartCreateDefault, cartDiscountCodesUpdateDefault, cartGetDefault, cartGetIdDefault, cartGiftCardCodesAddDefault, cartGiftCardCodesRemoveDefault, cartGiftCardCodesUpdateDefault, cartLinesAddDefault, cartLinesRemoveDefault, cartLinesUpdateDefault, cartMetafieldDeleteDefault, cartMetafieldsSetDefault, cartNoteUpdateDefault, cartSelectedDeliveryOptionsUpdateDefault, cartSetIdDefault, changelogHandler, createCartHandler, createContentSecurityPolicy, createCustomerAccountClient, createHydrogenContext, createRequestHandler, createStorefrontClient, createWithCache, formatAPIResult, generateCacheControlHeader, getPaginationVariables, getSelectedProductOptions, getSeoMeta, getShopAnalytics, getSitemap, getSitemapIndex, graphiqlLoader, hydrogenContext, hydrogenPreset, hydrogenRoutes, storefrontRedirect, useAnalytics, useCustomerPrivacy, useNonce, useOptimisticCart, useOptimisticData, useOptimisticVariant };
|