@nok-integration/storefront-react 0.18.1 → 0.18.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +8 -3
- package/dist/index.mjs +67 -19
- package/dist/standalone/storefront.mjs +67 -19
- package/dist/standalone/styles.css +32 -19
- package/dist/styles.css +32 -19
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -3580,9 +3580,14 @@ export declare interface OrderConfirmationViewProps {
|
|
|
3580
3580
|
/**
|
|
3581
3581
|
* The frame's "Done". Omit it and no button renders.
|
|
3582
3582
|
*
|
|
3583
|
-
*
|
|
3584
|
-
*
|
|
3585
|
-
*
|
|
3583
|
+
* **It leaves the shop.** DAZN settled this on 21 Aug 2026: "Done = DAZN home, X = DAZN
|
|
3584
|
+
* Shop home". The two are not the same destination and wiring both to the shop home —
|
|
3585
|
+
* which is what the first integration did — loses the only way out of the shop at the
|
|
3586
|
+
* end of a purchase.
|
|
3587
|
+
*
|
|
3588
|
+
* We cannot make that trip ourselves: the DAZN app's own home is not a route on our
|
|
3589
|
+
* `/v1` surface and not something a `navigate('/')` can reach. So this stays the host's
|
|
3590
|
+
* callback, and the header's `onClose` is the one that goes to the shop home.
|
|
3586
3591
|
*/
|
|
3587
3592
|
onDone?: () => void;
|
|
3588
3593
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
3
|
+
import { useContext, useEffect, useState, useRef, useCallback, useMemo, createContext, forwardRef } from "react";
|
|
4
4
|
var client = {};
|
|
5
5
|
var catalog = {};
|
|
6
6
|
var zod = {};
|
|
@@ -5542,6 +5542,38 @@ function withAuthorization(init, token) {
|
|
|
5542
5542
|
headers.set("authorization", `Bearer ${token}`);
|
|
5543
5543
|
return { ...init, headers };
|
|
5544
5544
|
}
|
|
5545
|
+
const ScreenTitleContext = createContext({ title: void 0, claim: () => () => {
|
|
5546
|
+
} });
|
|
5547
|
+
const SuppressedContext = createContext(false);
|
|
5548
|
+
function ScreenTitleProvider({ children }) {
|
|
5549
|
+
const [title2, setTitle] = useState(void 0);
|
|
5550
|
+
const held = useRef(void 0);
|
|
5551
|
+
const claim = useCallback((next) => {
|
|
5552
|
+
held.current = next;
|
|
5553
|
+
setTitle(next);
|
|
5554
|
+
return () => {
|
|
5555
|
+
if (held.current !== next) return;
|
|
5556
|
+
held.current = void 0;
|
|
5557
|
+
setTitle(void 0);
|
|
5558
|
+
};
|
|
5559
|
+
}, []);
|
|
5560
|
+
const value2 = useMemo(() => ({ title: title2, claim }), [title2, claim]);
|
|
5561
|
+
return /* @__PURE__ */ jsx(ScreenTitleContext.Provider, { value: value2, children });
|
|
5562
|
+
}
|
|
5563
|
+
function useScreenTitle() {
|
|
5564
|
+
return useContext(ScreenTitleContext).title;
|
|
5565
|
+
}
|
|
5566
|
+
function useSetScreenTitle(title2) {
|
|
5567
|
+
const { claim } = useContext(ScreenTitleContext);
|
|
5568
|
+
const suppressed = useContext(SuppressedContext);
|
|
5569
|
+
useEffect(() => {
|
|
5570
|
+
if (suppressed || title2 === void 0) return;
|
|
5571
|
+
return claim(title2);
|
|
5572
|
+
}, [claim, title2, suppressed]);
|
|
5573
|
+
}
|
|
5574
|
+
function NoScreenTitle({ children }) {
|
|
5575
|
+
return /* @__PURE__ */ jsx(SuppressedContext.Provider, { value: true, children });
|
|
5576
|
+
}
|
|
5545
5577
|
const ShopContext = createContext(null);
|
|
5546
5578
|
function DaznShopProvider({
|
|
5547
5579
|
children,
|
|
@@ -5631,7 +5663,7 @@ function DaznShopProvider({
|
|
|
5631
5663
|
}),
|
|
5632
5664
|
[api, market, theme, notifications, locale, assetBaseUrl, emit, subscribe, navigate]
|
|
5633
5665
|
);
|
|
5634
|
-
return /* @__PURE__ */ jsx(ShopContext.Provider, { value: value2, children });
|
|
5666
|
+
return /* @__PURE__ */ jsx(ShopContext.Provider, { value: value2, children: /* @__PURE__ */ jsx(ScreenTitleProvider, { children }) });
|
|
5635
5667
|
}
|
|
5636
5668
|
function useShopOptional() {
|
|
5637
5669
|
return useContext(ShopContext);
|
|
@@ -6893,20 +6925,20 @@ function ReasonSheet({
|
|
|
6893
6925
|
}
|
|
6894
6926
|
) });
|
|
6895
6927
|
}
|
|
6896
|
-
const page$6 = "
|
|
6897
|
-
const widget = "
|
|
6898
|
-
const titleRow = "
|
|
6899
|
-
const headline$1 = "
|
|
6900
|
-
const track$5 = "
|
|
6901
|
-
const rule = "
|
|
6902
|
-
const help = "
|
|
6903
|
-
const helpTitle = "
|
|
6904
|
-
const helpRows = "
|
|
6905
|
-
const helpRow = "
|
|
6906
|
-
const cancel = "
|
|
6907
|
-
const cancelledHead = "
|
|
6908
|
-
const cancelledTitle = "
|
|
6909
|
-
const cancelledMeta = "
|
|
6928
|
+
const page$6 = "_page_1v9my_8";
|
|
6929
|
+
const widget = "_widget_1v9my_18";
|
|
6930
|
+
const titleRow = "_titleRow_1v9my_26";
|
|
6931
|
+
const headline$1 = "_headline_1v9my_42";
|
|
6932
|
+
const track$5 = "_track_1v9my_74";
|
|
6933
|
+
const rule = "_rule_1v9my_99";
|
|
6934
|
+
const help = "_help_1v9my_109";
|
|
6935
|
+
const helpTitle = "_helpTitle_1v9my_115";
|
|
6936
|
+
const helpRows = "_helpRows_1v9my_122";
|
|
6937
|
+
const helpRow = "_helpRow_1v9my_122";
|
|
6938
|
+
const cancel = "_cancel_1v9my_180";
|
|
6939
|
+
const cancelledHead = "_cancelledHead_1v9my_204";
|
|
6940
|
+
const cancelledTitle = "_cancelledTitle_1v9my_210";
|
|
6941
|
+
const cancelledMeta = "_cancelledMeta_1v9my_219";
|
|
6910
6942
|
const styles$A = {
|
|
6911
6943
|
page: page$6,
|
|
6912
6944
|
widget,
|
|
@@ -7542,6 +7574,19 @@ const styles$w = {
|
|
|
7542
7574
|
function OrderConfirmationView(props) {
|
|
7543
7575
|
return /* @__PURE__ */ jsx(ShopSurface, { tone: "light", fill: true, children: /* @__PURE__ */ jsx(OrderConfirmationContent, { ...props }) });
|
|
7544
7576
|
}
|
|
7577
|
+
const CONFIRMATION_LABELS = {
|
|
7578
|
+
packing: "Order placed",
|
|
7579
|
+
on_its_way: "On the way"
|
|
7580
|
+
};
|
|
7581
|
+
function confirmationProgress(progress2) {
|
|
7582
|
+
return progress2.map((entry) => {
|
|
7583
|
+
if (entry.step === "delivered" && !entry.at) {
|
|
7584
|
+
return { ...entry, label: "Estimated delivery" };
|
|
7585
|
+
}
|
|
7586
|
+
const relabelled = CONFIRMATION_LABELS[entry.step];
|
|
7587
|
+
return relabelled ? { ...entry, label: relabelled } : { ...entry };
|
|
7588
|
+
});
|
|
7589
|
+
}
|
|
7545
7590
|
function OrderConfirmationContent({ orderRef, locale: localeProp, onDone }) {
|
|
7546
7591
|
const { api } = useShop();
|
|
7547
7592
|
const locale = useLocale(localeProp);
|
|
@@ -7581,7 +7626,7 @@ function OrderConfirmationContent({ orderRef, locale: localeProp, onDone }) {
|
|
|
7581
7626
|
/* @__PURE__ */ jsx(
|
|
7582
7627
|
OrderTimeline,
|
|
7583
7628
|
{
|
|
7584
|
-
progress: order.progress,
|
|
7629
|
+
progress: confirmationProgress(order.progress),
|
|
7585
7630
|
...order.estimated_delivery ? { estimatedDelivery: order.estimated_delivery } : {},
|
|
7586
7631
|
locale
|
|
7587
7632
|
}
|
|
@@ -8454,6 +8499,7 @@ const styles$j = {
|
|
|
8454
8499
|
lines
|
|
8455
8500
|
};
|
|
8456
8501
|
function CartView(props = {}) {
|
|
8502
|
+
useSetScreenTitle("Cart");
|
|
8457
8503
|
return /* @__PURE__ */ jsx(ShopSurface, { tone: "light", fill: true, className: styles$j.surface, children: /* @__PURE__ */ jsx(CartViewContent, { ...props }) });
|
|
8458
8504
|
}
|
|
8459
8505
|
function CartViewContent({
|
|
@@ -8644,7 +8690,7 @@ function CartSheetProvider({ children }) {
|
|
|
8644
8690
|
const api = useMemo(() => ({ open, close: close2, isOpen }), [open, close2, isOpen]);
|
|
8645
8691
|
return /* @__PURE__ */ jsxs(CartSheetContext.Provider, { value: api, children: [
|
|
8646
8692
|
children,
|
|
8647
|
-
isOpen && /* @__PURE__ */ jsx(BottomSheet, { open: true, onClose: close2, title: "Cart", children: /* @__PURE__ */ jsx(CartView, { onContinueShopping: close2 }) })
|
|
8693
|
+
isOpen && /* @__PURE__ */ jsx(BottomSheet, { open: true, onClose: close2, title: "Cart", children: /* @__PURE__ */ jsx(NoScreenTitle, { children: /* @__PURE__ */ jsx(CartView, { onContinueShopping: close2 }) }) })
|
|
8648
8694
|
] });
|
|
8649
8695
|
}
|
|
8650
8696
|
const gallery = "_gallery_10mch_1";
|
|
@@ -10124,6 +10170,8 @@ function ShopBar({
|
|
|
10124
10170
|
className
|
|
10125
10171
|
}) {
|
|
10126
10172
|
const cartCount = useCartCount();
|
|
10173
|
+
const screenTitle = useScreenTitle();
|
|
10174
|
+
const shownTitle = title2 ?? screenTitle;
|
|
10127
10175
|
const atTop = useScrolledUnder(floating2 && scrolled2 === void 0);
|
|
10128
10176
|
const isScrolled = scrolled2 ?? atTop;
|
|
10129
10177
|
const cartLabel = cartCount === null ? "Cart" : cartCount === 0 ? "Cart, empty" : `Cart, ${cartCount} item${cartCount === 1 ? "" : "s"}`;
|
|
@@ -10135,7 +10183,7 @@ function ShopBar({
|
|
|
10135
10183
|
].filter(Boolean).join(" ");
|
|
10136
10184
|
return /* @__PURE__ */ jsxs("header", { className: classes, children: [
|
|
10137
10185
|
onBack ? /* @__PURE__ */ jsx("button", { type: "button", className: styles$1.iconBtn, "aria-label": backLabel, onClick: onBack, children: /* @__PURE__ */ jsx(ChevronLeft, {}) }) : /* @__PURE__ */ jsx("span", { className: styles$1.spacer, "aria-hidden": "true" }),
|
|
10138
|
-
|
|
10186
|
+
shownTitle ? /* @__PURE__ */ jsx("span", { className: styles$1.title, children: shownTitle }) : null,
|
|
10139
10187
|
/* @__PURE__ */ jsxs("div", { className: styles$1.right, children: [
|
|
10140
10188
|
showCart ? /* @__PURE__ */ jsxs(CartTrigger, { className: styles$1.iconBtn, "aria-label": cartLabel, children: [
|
|
10141
10189
|
/* @__PURE__ */ jsx(CartIcon, {}),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
3
|
+
import { useContext, useEffect, useState, useRef, useCallback, useMemo, createContext, forwardRef } from "react";
|
|
4
4
|
var client = {};
|
|
5
5
|
var catalog = {};
|
|
6
6
|
var zod = {};
|
|
@@ -5542,6 +5542,38 @@ function withAuthorization(init, token) {
|
|
|
5542
5542
|
headers.set("authorization", `Bearer ${token}`);
|
|
5543
5543
|
return { ...init, headers };
|
|
5544
5544
|
}
|
|
5545
|
+
const ScreenTitleContext = createContext({ title: void 0, claim: () => () => {
|
|
5546
|
+
} });
|
|
5547
|
+
const SuppressedContext = createContext(false);
|
|
5548
|
+
function ScreenTitleProvider({ children }) {
|
|
5549
|
+
const [title2, setTitle] = useState(void 0);
|
|
5550
|
+
const held = useRef(void 0);
|
|
5551
|
+
const claim = useCallback((next) => {
|
|
5552
|
+
held.current = next;
|
|
5553
|
+
setTitle(next);
|
|
5554
|
+
return () => {
|
|
5555
|
+
if (held.current !== next) return;
|
|
5556
|
+
held.current = void 0;
|
|
5557
|
+
setTitle(void 0);
|
|
5558
|
+
};
|
|
5559
|
+
}, []);
|
|
5560
|
+
const value2 = useMemo(() => ({ title: title2, claim }), [title2, claim]);
|
|
5561
|
+
return /* @__PURE__ */ jsx(ScreenTitleContext.Provider, { value: value2, children });
|
|
5562
|
+
}
|
|
5563
|
+
function useScreenTitle() {
|
|
5564
|
+
return useContext(ScreenTitleContext).title;
|
|
5565
|
+
}
|
|
5566
|
+
function useSetScreenTitle(title2) {
|
|
5567
|
+
const { claim } = useContext(ScreenTitleContext);
|
|
5568
|
+
const suppressed = useContext(SuppressedContext);
|
|
5569
|
+
useEffect(() => {
|
|
5570
|
+
if (suppressed || title2 === void 0) return;
|
|
5571
|
+
return claim(title2);
|
|
5572
|
+
}, [claim, title2, suppressed]);
|
|
5573
|
+
}
|
|
5574
|
+
function NoScreenTitle({ children }) {
|
|
5575
|
+
return /* @__PURE__ */ jsx(SuppressedContext.Provider, { value: true, children });
|
|
5576
|
+
}
|
|
5545
5577
|
const ShopContext = createContext(null);
|
|
5546
5578
|
function DaznShopProvider({
|
|
5547
5579
|
children,
|
|
@@ -5631,7 +5663,7 @@ function DaznShopProvider({
|
|
|
5631
5663
|
}),
|
|
5632
5664
|
[api, market, theme, notifications, locale, assetBaseUrl, emit, subscribe, navigate]
|
|
5633
5665
|
);
|
|
5634
|
-
return /* @__PURE__ */ jsx(ShopContext.Provider, { value: value2, children });
|
|
5666
|
+
return /* @__PURE__ */ jsx(ShopContext.Provider, { value: value2, children: /* @__PURE__ */ jsx(ScreenTitleProvider, { children }) });
|
|
5635
5667
|
}
|
|
5636
5668
|
function useShopOptional() {
|
|
5637
5669
|
return useContext(ShopContext);
|
|
@@ -6893,20 +6925,20 @@ function ReasonSheet({
|
|
|
6893
6925
|
}
|
|
6894
6926
|
) });
|
|
6895
6927
|
}
|
|
6896
|
-
const page$6 = "
|
|
6897
|
-
const widget = "
|
|
6898
|
-
const titleRow = "
|
|
6899
|
-
const headline$1 = "
|
|
6900
|
-
const track$5 = "
|
|
6901
|
-
const rule = "
|
|
6902
|
-
const help = "
|
|
6903
|
-
const helpTitle = "
|
|
6904
|
-
const helpRows = "
|
|
6905
|
-
const helpRow = "
|
|
6906
|
-
const cancel = "
|
|
6907
|
-
const cancelledHead = "
|
|
6908
|
-
const cancelledTitle = "
|
|
6909
|
-
const cancelledMeta = "
|
|
6928
|
+
const page$6 = "_page_1v9my_8";
|
|
6929
|
+
const widget = "_widget_1v9my_18";
|
|
6930
|
+
const titleRow = "_titleRow_1v9my_26";
|
|
6931
|
+
const headline$1 = "_headline_1v9my_42";
|
|
6932
|
+
const track$5 = "_track_1v9my_74";
|
|
6933
|
+
const rule = "_rule_1v9my_99";
|
|
6934
|
+
const help = "_help_1v9my_109";
|
|
6935
|
+
const helpTitle = "_helpTitle_1v9my_115";
|
|
6936
|
+
const helpRows = "_helpRows_1v9my_122";
|
|
6937
|
+
const helpRow = "_helpRow_1v9my_122";
|
|
6938
|
+
const cancel = "_cancel_1v9my_180";
|
|
6939
|
+
const cancelledHead = "_cancelledHead_1v9my_204";
|
|
6940
|
+
const cancelledTitle = "_cancelledTitle_1v9my_210";
|
|
6941
|
+
const cancelledMeta = "_cancelledMeta_1v9my_219";
|
|
6910
6942
|
const styles$A = {
|
|
6911
6943
|
page: page$6,
|
|
6912
6944
|
widget,
|
|
@@ -7542,6 +7574,19 @@ const styles$w = {
|
|
|
7542
7574
|
function OrderConfirmationView(props) {
|
|
7543
7575
|
return /* @__PURE__ */ jsx(ShopSurface, { tone: "light", fill: true, children: /* @__PURE__ */ jsx(OrderConfirmationContent, { ...props }) });
|
|
7544
7576
|
}
|
|
7577
|
+
const CONFIRMATION_LABELS = {
|
|
7578
|
+
packing: "Order placed",
|
|
7579
|
+
on_its_way: "On the way"
|
|
7580
|
+
};
|
|
7581
|
+
function confirmationProgress(progress2) {
|
|
7582
|
+
return progress2.map((entry) => {
|
|
7583
|
+
if (entry.step === "delivered" && !entry.at) {
|
|
7584
|
+
return { ...entry, label: "Estimated delivery" };
|
|
7585
|
+
}
|
|
7586
|
+
const relabelled = CONFIRMATION_LABELS[entry.step];
|
|
7587
|
+
return relabelled ? { ...entry, label: relabelled } : { ...entry };
|
|
7588
|
+
});
|
|
7589
|
+
}
|
|
7545
7590
|
function OrderConfirmationContent({ orderRef, locale: localeProp, onDone }) {
|
|
7546
7591
|
const { api } = useShop();
|
|
7547
7592
|
const locale = useLocale(localeProp);
|
|
@@ -7581,7 +7626,7 @@ function OrderConfirmationContent({ orderRef, locale: localeProp, onDone }) {
|
|
|
7581
7626
|
/* @__PURE__ */ jsx(
|
|
7582
7627
|
OrderTimeline,
|
|
7583
7628
|
{
|
|
7584
|
-
progress: order.progress,
|
|
7629
|
+
progress: confirmationProgress(order.progress),
|
|
7585
7630
|
...order.estimated_delivery ? { estimatedDelivery: order.estimated_delivery } : {},
|
|
7586
7631
|
locale
|
|
7587
7632
|
}
|
|
@@ -8454,6 +8499,7 @@ const styles$j = {
|
|
|
8454
8499
|
lines
|
|
8455
8500
|
};
|
|
8456
8501
|
function CartView(props = {}) {
|
|
8502
|
+
useSetScreenTitle("Cart");
|
|
8457
8503
|
return /* @__PURE__ */ jsx(ShopSurface, { tone: "light", fill: true, className: styles$j.surface, children: /* @__PURE__ */ jsx(CartViewContent, { ...props }) });
|
|
8458
8504
|
}
|
|
8459
8505
|
function CartViewContent({
|
|
@@ -8644,7 +8690,7 @@ function CartSheetProvider({ children }) {
|
|
|
8644
8690
|
const api = useMemo(() => ({ open, close: close2, isOpen }), [open, close2, isOpen]);
|
|
8645
8691
|
return /* @__PURE__ */ jsxs(CartSheetContext.Provider, { value: api, children: [
|
|
8646
8692
|
children,
|
|
8647
|
-
isOpen && /* @__PURE__ */ jsx(BottomSheet, { open: true, onClose: close2, title: "Cart", children: /* @__PURE__ */ jsx(CartView, { onContinueShopping: close2 }) })
|
|
8693
|
+
isOpen && /* @__PURE__ */ jsx(BottomSheet, { open: true, onClose: close2, title: "Cart", children: /* @__PURE__ */ jsx(NoScreenTitle, { children: /* @__PURE__ */ jsx(CartView, { onContinueShopping: close2 }) }) })
|
|
8648
8694
|
] });
|
|
8649
8695
|
}
|
|
8650
8696
|
const gallery = "_gallery_10mch_1";
|
|
@@ -10124,6 +10170,8 @@ function ShopBar({
|
|
|
10124
10170
|
className
|
|
10125
10171
|
}) {
|
|
10126
10172
|
const cartCount = useCartCount();
|
|
10173
|
+
const screenTitle = useScreenTitle();
|
|
10174
|
+
const shownTitle = title2 ?? screenTitle;
|
|
10127
10175
|
const atTop = useScrolledUnder(floating2 && scrolled2 === void 0);
|
|
10128
10176
|
const isScrolled = scrolled2 ?? atTop;
|
|
10129
10177
|
const cartLabel = cartCount === null ? "Cart" : cartCount === 0 ? "Cart, empty" : `Cart, ${cartCount} item${cartCount === 1 ? "" : "s"}`;
|
|
@@ -10135,7 +10183,7 @@ function ShopBar({
|
|
|
10135
10183
|
].filter(Boolean).join(" ");
|
|
10136
10184
|
return /* @__PURE__ */ jsxs("header", { className: classes, children: [
|
|
10137
10185
|
onBack ? /* @__PURE__ */ jsx("button", { type: "button", className: styles$1.iconBtn, "aria-label": backLabel, onClick: onBack, children: /* @__PURE__ */ jsx(ChevronLeft, {}) }) : /* @__PURE__ */ jsx("span", { className: styles$1.spacer, "aria-hidden": "true" }),
|
|
10138
|
-
|
|
10186
|
+
shownTitle ? /* @__PURE__ */ jsx("span", { className: styles$1.title, children: shownTitle }) : null,
|
|
10139
10187
|
/* @__PURE__ */ jsxs("div", { className: styles$1.right, children: [
|
|
10140
10188
|
showCart ? /* @__PURE__ */ jsxs(CartTrigger, { className: styles$1.iconBtn, "aria-label": cartLabel, children: [
|
|
10141
10189
|
/* @__PURE__ */ jsx(CartIcon, {}),
|
|
@@ -1560,7 +1560,7 @@
|
|
|
1560
1560
|
* everything below it is 32 apart: widget, rule, rows, address, summary. Same rhythm and
|
|
1561
1561
|
* same padding as the confirmation, which is the same page from the fold down.
|
|
1562
1562
|
*/
|
|
1563
|
-
.
|
|
1563
|
+
._page_1v9my_8 {
|
|
1564
1564
|
display: flex;
|
|
1565
1565
|
flex-direction: column;
|
|
1566
1566
|
gap: var(--space-32);
|
|
@@ -1570,7 +1570,7 @@
|
|
|
1570
1570
|
/* ── Order number + timeline ───────────────────────────────────────────────── */
|
|
1571
1571
|
|
|
1572
1572
|
/* `mobile/order/delivery-widget`: the title row, then the steps, 32 apart. */
|
|
1573
|
-
.
|
|
1573
|
+
._widget_1v9my_18 {
|
|
1574
1574
|
display: flex;
|
|
1575
1575
|
flex-direction: column;
|
|
1576
1576
|
gap: var(--space-32);
|
|
@@ -1578,7 +1578,7 @@
|
|
|
1578
1578
|
|
|
1579
1579
|
/* The number on the left, the carrier link hard right — and nothing between them, so a
|
|
1580
1580
|
long reference runs into the space the link is not using rather than under it. */
|
|
1581
|
-
.
|
|
1581
|
+
._titleRow_1v9my_26 {
|
|
1582
1582
|
display: flex;
|
|
1583
1583
|
align-items: center;
|
|
1584
1584
|
justify-content: space-between;
|
|
@@ -1594,8 +1594,21 @@
|
|
|
1594
1594
|
*
|
|
1595
1595
|
* Nothing clips it, so the cap-height box needs no descender protection.
|
|
1596
1596
|
*/
|
|
1597
|
-
.
|
|
1598
|
-
|
|
1597
|
+
._headline_1v9my_42 {
|
|
1598
|
+
/*
|
|
1599
|
+
* The padding is what the trim costs, and this rule went out without it.
|
|
1600
|
+
*
|
|
1601
|
+
* A 14px box on 20px text is the cap height, so the glyphs deliberately overflow it —
|
|
1602
|
+
* exactly as they do in Figma. That is fine until something clips, and the ellipsis
|
|
1603
|
+
* below does: `overflow: hidden` cuts in both directions and takes the bottom off the
|
|
1604
|
+
* letters. DAZN reported it on the order screen, where the heading is `Order #611887`.
|
|
1605
|
+
*
|
|
1606
|
+
* Nine each way clears 20px glyphs the way six clears 16px ones on the confirmation
|
|
1607
|
+
* subtitle, and the equal negative margin takes the room straight back out, so the box
|
|
1608
|
+
* stays 14 and the row does not move.
|
|
1609
|
+
*/
|
|
1610
|
+
margin: -9px 0;
|
|
1611
|
+
padding: 9px 0;
|
|
1599
1612
|
min-width: 0;
|
|
1600
1613
|
font-size: var(--type-heading-md-size);
|
|
1601
1614
|
line-height: 14px;
|
|
@@ -1613,7 +1626,7 @@
|
|
|
1613
1626
|
* An anchor rather than a button because the destination is a real page on somebody else's
|
|
1614
1627
|
* site, and it has to behave like one: middle-click, long-press, open in a new tab.
|
|
1615
1628
|
*/
|
|
1616
|
-
.
|
|
1629
|
+
._track_1v9my_74 {
|
|
1617
1630
|
display: inline-flex;
|
|
1618
1631
|
align-items: center;
|
|
1619
1632
|
gap: var(--space-6);
|
|
@@ -1625,7 +1638,7 @@
|
|
|
1625
1638
|
text-decoration: none;
|
|
1626
1639
|
}
|
|
1627
1640
|
|
|
1628
|
-
.
|
|
1641
|
+
._track_1v9my_74:focus-visible {
|
|
1629
1642
|
outline: none;
|
|
1630
1643
|
box-shadow: var(--focus-ring);
|
|
1631
1644
|
border-radius: var(--radius-4);
|
|
@@ -1638,7 +1651,7 @@
|
|
|
1638
1651
|
* separates, with the hairline drawn on that boundary. The negative margin takes the
|
|
1639
1652
|
* pixel back out of the layout so the two gaps stay 32 rather than becoming 32 and 33.
|
|
1640
1653
|
*/
|
|
1641
|
-
.
|
|
1654
|
+
._rule_1v9my_99 {
|
|
1642
1655
|
height: 1px;
|
|
1643
1656
|
margin: 0 0 -1px;
|
|
1644
1657
|
border: 0;
|
|
@@ -1648,20 +1661,20 @@
|
|
|
1648
1661
|
/* ── Need help? ────────────────────────────────────────────────────────────── */
|
|
1649
1662
|
|
|
1650
1663
|
/* `mobile/explore`: the heading, then the rows, 6 apart. */
|
|
1651
|
-
.
|
|
1664
|
+
._help_1v9my_109 {
|
|
1652
1665
|
display: flex;
|
|
1653
1666
|
flex-direction: column;
|
|
1654
1667
|
gap: var(--space-6);
|
|
1655
1668
|
}
|
|
1656
1669
|
|
|
1657
|
-
.
|
|
1670
|
+
._helpTitle_1v9my_115 {
|
|
1658
1671
|
margin: 0;
|
|
1659
1672
|
font-size: var(--type-heading-md-size);
|
|
1660
1673
|
line-height: 1.32;
|
|
1661
1674
|
font-weight: var(--font-weight-bold);
|
|
1662
1675
|
}
|
|
1663
1676
|
|
|
1664
|
-
.
|
|
1677
|
+
._helpRows_1v9my_122 {
|
|
1665
1678
|
display: flex;
|
|
1666
1679
|
flex-direction: column;
|
|
1667
1680
|
}
|
|
@@ -1670,7 +1683,7 @@
|
|
|
1670
1683
|
* 48 tall: 16 of padding either side of a 16px chevron, which is what sets the height. The
|
|
1671
1684
|
* label is cap-trimmed to 10 and is shorter than the mark beside it.
|
|
1672
1685
|
*/
|
|
1673
|
-
.
|
|
1686
|
+
._helpRow_1v9my_122 {
|
|
1674
1687
|
display: flex;
|
|
1675
1688
|
align-items: center;
|
|
1676
1689
|
justify-content: space-between;
|
|
@@ -1700,11 +1713,11 @@
|
|
|
1700
1713
|
* padding and its 16px chevron rather than from a `height`, so the hairline adds to the
|
|
1701
1714
|
* row instead of eating into it. 48, the line, then 48 — the frame's own 97 for the pair.
|
|
1702
1715
|
*/
|
|
1703
|
-
.
|
|
1716
|
+
._helpRow_1v9my_122 + ._helpRow_1v9my_122 {
|
|
1704
1717
|
border-top: 1px solid var(--color-border-subtle);
|
|
1705
1718
|
}
|
|
1706
1719
|
|
|
1707
|
-
.
|
|
1720
|
+
._helpRow_1v9my_122:focus-visible {
|
|
1708
1721
|
outline: none;
|
|
1709
1722
|
box-shadow: var(--focus-ring);
|
|
1710
1723
|
}
|
|
@@ -1719,7 +1732,7 @@
|
|
|
1719
1732
|
* would put a fourth variant in the primitive for a single use — this is the one control
|
|
1720
1733
|
* in the package drawn this way, so it is drawn here.
|
|
1721
1734
|
*/
|
|
1722
|
-
.
|
|
1735
|
+
._cancel_1v9my_180 {
|
|
1723
1736
|
display: inline-flex;
|
|
1724
1737
|
align-items: center;
|
|
1725
1738
|
justify-content: center;
|
|
@@ -1737,19 +1750,19 @@
|
|
|
1737
1750
|
cursor: pointer;
|
|
1738
1751
|
}
|
|
1739
1752
|
|
|
1740
|
-
.
|
|
1753
|
+
._cancel_1v9my_180:focus-visible {
|
|
1741
1754
|
outline: none;
|
|
1742
1755
|
box-shadow: var(--focus-ring);
|
|
1743
1756
|
}
|
|
1744
1757
|
|
|
1745
1758
|
/* Screen 3. The head is a title and one meta line, 8 apart. */
|
|
1746
|
-
.
|
|
1759
|
+
._cancelledHead_1v9my_204 {
|
|
1747
1760
|
display: flex;
|
|
1748
1761
|
flex-direction: column;
|
|
1749
1762
|
gap: var(--space-8);
|
|
1750
1763
|
}
|
|
1751
1764
|
|
|
1752
|
-
.
|
|
1765
|
+
._cancelledTitle_1v9my_210 {
|
|
1753
1766
|
margin: 0;
|
|
1754
1767
|
font-size: var(--type-heading-md-size);
|
|
1755
1768
|
line-height: 1.32;
|
|
@@ -1758,7 +1771,7 @@
|
|
|
1758
1771
|
}
|
|
1759
1772
|
|
|
1760
1773
|
/* The reference and the date it was placed, cap-trimmed to 10 on 14. */
|
|
1761
|
-
.
|
|
1774
|
+
._cancelledMeta_1v9my_219 {
|
|
1762
1775
|
font-size: var(--type-trimmed-sm-size);
|
|
1763
1776
|
line-height: 10px;
|
|
1764
1777
|
padding: 5px 0;
|
package/dist/styles.css
CHANGED
|
@@ -1560,7 +1560,7 @@
|
|
|
1560
1560
|
* everything below it is 32 apart: widget, rule, rows, address, summary. Same rhythm and
|
|
1561
1561
|
* same padding as the confirmation, which is the same page from the fold down.
|
|
1562
1562
|
*/
|
|
1563
|
-
.
|
|
1563
|
+
._page_1v9my_8 {
|
|
1564
1564
|
display: flex;
|
|
1565
1565
|
flex-direction: column;
|
|
1566
1566
|
gap: var(--space-32);
|
|
@@ -1570,7 +1570,7 @@
|
|
|
1570
1570
|
/* ── Order number + timeline ───────────────────────────────────────────────── */
|
|
1571
1571
|
|
|
1572
1572
|
/* `mobile/order/delivery-widget`: the title row, then the steps, 32 apart. */
|
|
1573
|
-
.
|
|
1573
|
+
._widget_1v9my_18 {
|
|
1574
1574
|
display: flex;
|
|
1575
1575
|
flex-direction: column;
|
|
1576
1576
|
gap: var(--space-32);
|
|
@@ -1578,7 +1578,7 @@
|
|
|
1578
1578
|
|
|
1579
1579
|
/* The number on the left, the carrier link hard right — and nothing between them, so a
|
|
1580
1580
|
long reference runs into the space the link is not using rather than under it. */
|
|
1581
|
-
.
|
|
1581
|
+
._titleRow_1v9my_26 {
|
|
1582
1582
|
display: flex;
|
|
1583
1583
|
align-items: center;
|
|
1584
1584
|
justify-content: space-between;
|
|
@@ -1594,8 +1594,21 @@
|
|
|
1594
1594
|
*
|
|
1595
1595
|
* Nothing clips it, so the cap-height box needs no descender protection.
|
|
1596
1596
|
*/
|
|
1597
|
-
.
|
|
1598
|
-
|
|
1597
|
+
._headline_1v9my_42 {
|
|
1598
|
+
/*
|
|
1599
|
+
* The padding is what the trim costs, and this rule went out without it.
|
|
1600
|
+
*
|
|
1601
|
+
* A 14px box on 20px text is the cap height, so the glyphs deliberately overflow it —
|
|
1602
|
+
* exactly as they do in Figma. That is fine until something clips, and the ellipsis
|
|
1603
|
+
* below does: `overflow: hidden` cuts in both directions and takes the bottom off the
|
|
1604
|
+
* letters. DAZN reported it on the order screen, where the heading is `Order #611887`.
|
|
1605
|
+
*
|
|
1606
|
+
* Nine each way clears 20px glyphs the way six clears 16px ones on the confirmation
|
|
1607
|
+
* subtitle, and the equal negative margin takes the room straight back out, so the box
|
|
1608
|
+
* stays 14 and the row does not move.
|
|
1609
|
+
*/
|
|
1610
|
+
margin: -9px 0;
|
|
1611
|
+
padding: 9px 0;
|
|
1599
1612
|
min-width: 0;
|
|
1600
1613
|
font-size: var(--type-heading-md-size);
|
|
1601
1614
|
line-height: 14px;
|
|
@@ -1613,7 +1626,7 @@
|
|
|
1613
1626
|
* An anchor rather than a button because the destination is a real page on somebody else's
|
|
1614
1627
|
* site, and it has to behave like one: middle-click, long-press, open in a new tab.
|
|
1615
1628
|
*/
|
|
1616
|
-
.
|
|
1629
|
+
._track_1v9my_74 {
|
|
1617
1630
|
display: inline-flex;
|
|
1618
1631
|
align-items: center;
|
|
1619
1632
|
gap: var(--space-6);
|
|
@@ -1625,7 +1638,7 @@
|
|
|
1625
1638
|
text-decoration: none;
|
|
1626
1639
|
}
|
|
1627
1640
|
|
|
1628
|
-
.
|
|
1641
|
+
._track_1v9my_74:focus-visible {
|
|
1629
1642
|
outline: none;
|
|
1630
1643
|
box-shadow: var(--focus-ring);
|
|
1631
1644
|
border-radius: var(--radius-4);
|
|
@@ -1638,7 +1651,7 @@
|
|
|
1638
1651
|
* separates, with the hairline drawn on that boundary. The negative margin takes the
|
|
1639
1652
|
* pixel back out of the layout so the two gaps stay 32 rather than becoming 32 and 33.
|
|
1640
1653
|
*/
|
|
1641
|
-
.
|
|
1654
|
+
._rule_1v9my_99 {
|
|
1642
1655
|
height: 1px;
|
|
1643
1656
|
margin: 0 0 -1px;
|
|
1644
1657
|
border: 0;
|
|
@@ -1648,20 +1661,20 @@
|
|
|
1648
1661
|
/* ── Need help? ────────────────────────────────────────────────────────────── */
|
|
1649
1662
|
|
|
1650
1663
|
/* `mobile/explore`: the heading, then the rows, 6 apart. */
|
|
1651
|
-
.
|
|
1664
|
+
._help_1v9my_109 {
|
|
1652
1665
|
display: flex;
|
|
1653
1666
|
flex-direction: column;
|
|
1654
1667
|
gap: var(--space-6);
|
|
1655
1668
|
}
|
|
1656
1669
|
|
|
1657
|
-
.
|
|
1670
|
+
._helpTitle_1v9my_115 {
|
|
1658
1671
|
margin: 0;
|
|
1659
1672
|
font-size: var(--type-heading-md-size);
|
|
1660
1673
|
line-height: 1.32;
|
|
1661
1674
|
font-weight: var(--font-weight-bold);
|
|
1662
1675
|
}
|
|
1663
1676
|
|
|
1664
|
-
.
|
|
1677
|
+
._helpRows_1v9my_122 {
|
|
1665
1678
|
display: flex;
|
|
1666
1679
|
flex-direction: column;
|
|
1667
1680
|
}
|
|
@@ -1670,7 +1683,7 @@
|
|
|
1670
1683
|
* 48 tall: 16 of padding either side of a 16px chevron, which is what sets the height. The
|
|
1671
1684
|
* label is cap-trimmed to 10 and is shorter than the mark beside it.
|
|
1672
1685
|
*/
|
|
1673
|
-
.
|
|
1686
|
+
._helpRow_1v9my_122 {
|
|
1674
1687
|
display: flex;
|
|
1675
1688
|
align-items: center;
|
|
1676
1689
|
justify-content: space-between;
|
|
@@ -1700,11 +1713,11 @@
|
|
|
1700
1713
|
* padding and its 16px chevron rather than from a `height`, so the hairline adds to the
|
|
1701
1714
|
* row instead of eating into it. 48, the line, then 48 — the frame's own 97 for the pair.
|
|
1702
1715
|
*/
|
|
1703
|
-
.
|
|
1716
|
+
._helpRow_1v9my_122 + ._helpRow_1v9my_122 {
|
|
1704
1717
|
border-top: 1px solid var(--color-border-subtle);
|
|
1705
1718
|
}
|
|
1706
1719
|
|
|
1707
|
-
.
|
|
1720
|
+
._helpRow_1v9my_122:focus-visible {
|
|
1708
1721
|
outline: none;
|
|
1709
1722
|
box-shadow: var(--focus-ring);
|
|
1710
1723
|
}
|
|
@@ -1719,7 +1732,7 @@
|
|
|
1719
1732
|
* would put a fourth variant in the primitive for a single use — this is the one control
|
|
1720
1733
|
* in the package drawn this way, so it is drawn here.
|
|
1721
1734
|
*/
|
|
1722
|
-
.
|
|
1735
|
+
._cancel_1v9my_180 {
|
|
1723
1736
|
display: inline-flex;
|
|
1724
1737
|
align-items: center;
|
|
1725
1738
|
justify-content: center;
|
|
@@ -1737,19 +1750,19 @@
|
|
|
1737
1750
|
cursor: pointer;
|
|
1738
1751
|
}
|
|
1739
1752
|
|
|
1740
|
-
.
|
|
1753
|
+
._cancel_1v9my_180:focus-visible {
|
|
1741
1754
|
outline: none;
|
|
1742
1755
|
box-shadow: var(--focus-ring);
|
|
1743
1756
|
}
|
|
1744
1757
|
|
|
1745
1758
|
/* Screen 3. The head is a title and one meta line, 8 apart. */
|
|
1746
|
-
.
|
|
1759
|
+
._cancelledHead_1v9my_204 {
|
|
1747
1760
|
display: flex;
|
|
1748
1761
|
flex-direction: column;
|
|
1749
1762
|
gap: var(--space-8);
|
|
1750
1763
|
}
|
|
1751
1764
|
|
|
1752
|
-
.
|
|
1765
|
+
._cancelledTitle_1v9my_210 {
|
|
1753
1766
|
margin: 0;
|
|
1754
1767
|
font-size: var(--type-heading-md-size);
|
|
1755
1768
|
line-height: 1.32;
|
|
@@ -1758,7 +1771,7 @@
|
|
|
1758
1771
|
}
|
|
1759
1772
|
|
|
1760
1773
|
/* The reference and the date it was placed, cap-trimmed to 10 on 14. */
|
|
1761
|
-
.
|
|
1774
|
+
._cancelledMeta_1v9my_219 {
|
|
1762
1775
|
font-size: var(--type-trimmed-sm-size);
|
|
1763
1776
|
line-height: 10px;
|
|
1764
1777
|
padding: 5px 0;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nok-integration/storefront-react",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.3",
|
|
4
4
|
"description": "Mountable React storefront components: catalogue, product detail and cart, mounted directly into a host DOM tree. No iframe.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|