@nok-integration/storefront-react 0.18.4 → 0.19.0
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 +5 -5
- package/dist/index.mjs +381 -137
- package/dist/standalone/storefront.mjs +381 -137
- package/dist/standalone/styles.css +35 -15
- package/dist/styles.css +35 -15
- package/package.json +26 -9
|
@@ -5397,7 +5397,7 @@
|
|
|
5397
5397
|
* the sticky CTA bar (50), the size-guide sheet (60), the bottom sheets (900) and the
|
|
5398
5398
|
* toast (1000).
|
|
5399
5399
|
*/
|
|
5400
|
-
.
|
|
5400
|
+
._header_8o3d7_25 {
|
|
5401
5401
|
position: sticky;
|
|
5402
5402
|
top: 0;
|
|
5403
5403
|
z-index: 40;
|
|
@@ -5462,7 +5462,7 @@
|
|
|
5462
5462
|
* Declared after `.header` so it wins the background: both are one class, so the later
|
|
5463
5463
|
* rule takes it.
|
|
5464
5464
|
*/
|
|
5465
|
-
.
|
|
5465
|
+
._floating_8o3d7_44 {
|
|
5466
5466
|
position: sticky;
|
|
5467
5467
|
top: 0;
|
|
5468
5468
|
/* Out of the flow without leaving it: the artwork below starts at y=0 and is drawn
|
|
@@ -5519,12 +5519,12 @@
|
|
|
5519
5519
|
* Fixed rather than tokenised, like the hero's own palette: it is drawn over a photograph
|
|
5520
5520
|
* and does not follow the surface.
|
|
5521
5521
|
*/
|
|
5522
|
-
.
|
|
5522
|
+
._floating_8o3d7_44._scrolled_8o3d7_79 {
|
|
5523
5523
|
background: rgba(8, 14, 18, 0.6);
|
|
5524
5524
|
}
|
|
5525
5525
|
|
|
5526
5526
|
@media (prefers-reduced-motion: reduce) {
|
|
5527
|
-
.
|
|
5527
|
+
._floating_8o3d7_44 {
|
|
5528
5528
|
transition: none;
|
|
5529
5529
|
}
|
|
5530
5530
|
}
|
|
@@ -5544,7 +5544,7 @@
|
|
|
5544
5544
|
* the dark screens, and the light PDP header (5295:75116) has an empty title slot. Written
|
|
5545
5545
|
* as a static white it would be invisible the first time a host passed one on a light page.
|
|
5546
5546
|
*/
|
|
5547
|
-
.
|
|
5547
|
+
._title_8o3d7_172 {
|
|
5548
5548
|
flex: 0 0 auto;
|
|
5549
5549
|
width: 222px;
|
|
5550
5550
|
min-width: 0;
|
|
@@ -5557,7 +5557,27 @@
|
|
|
5557
5557
|
white-space: nowrap;
|
|
5558
5558
|
}
|
|
5559
5559
|
|
|
5560
|
-
|
|
5560
|
+
/*
|
|
5561
|
+
* The same title, on a bar that carries no icons — the cart (`4661:136810`) and the order
|
|
5562
|
+
* screens.
|
|
5563
|
+
*
|
|
5564
|
+
* The 222px above is measured against a bar with the full 72px icon cluster on the right.
|
|
5565
|
+
* Take the cluster away and `space-between` has 97px of slack to share between two gaps,
|
|
5566
|
+
* which lands the text at x=88.5 — a title floating in the middle of an otherwise empty
|
|
5567
|
+
* bar. The frame puts "Cart" hard against the chevron: box at x=16..40, text from 57, so
|
|
5568
|
+
* one 16px gap and no more. DAZN reported it on 21 Aug 2026.
|
|
5569
|
+
*
|
|
5570
|
+
* `flex: 1 1 auto` rather than a second measured width, because there is nothing on the
|
|
5571
|
+
* right to measure against: the title simply takes what is left, and a long order
|
|
5572
|
+
* reference ellipsises instead of pushing a layout that has no other content in it.
|
|
5573
|
+
*/
|
|
5574
|
+
._title_8o3d7_172._leading_8o3d7_199 {
|
|
5575
|
+
flex: 1 1 auto;
|
|
5576
|
+
width: auto;
|
|
5577
|
+
margin-left: var(--space-16);
|
|
5578
|
+
}
|
|
5579
|
+
|
|
5580
|
+
._right_8o3d7_205 {
|
|
5561
5581
|
display: flex;
|
|
5562
5582
|
align-items: center;
|
|
5563
5583
|
gap: var(--space-16);
|
|
@@ -5570,12 +5590,12 @@
|
|
|
5570
5590
|
* header without a back button would silently re-lay-out rather than simply losing one
|
|
5571
5591
|
* icon. 24px is the icon box it stands in for.
|
|
5572
5592
|
*/
|
|
5573
|
-
.
|
|
5593
|
+
._spacer_8o3d7_218 {
|
|
5574
5594
|
width: 24px;
|
|
5575
5595
|
height: 24px;
|
|
5576
5596
|
}
|
|
5577
5597
|
|
|
5578
|
-
.
|
|
5598
|
+
._iconBtn_8o3d7_223 {
|
|
5579
5599
|
position: relative;
|
|
5580
5600
|
display: inline-flex;
|
|
5581
5601
|
align-items: center;
|
|
@@ -5591,7 +5611,7 @@
|
|
|
5591
5611
|
}
|
|
5592
5612
|
|
|
5593
5613
|
/* Expand the hit area to >=44px without moving the 24px icon off the 16px inset. */
|
|
5594
|
-
.
|
|
5614
|
+
._iconBtn_8o3d7_223::after {
|
|
5595
5615
|
content: '';
|
|
5596
5616
|
position: absolute;
|
|
5597
5617
|
inset: -10px;
|
|
@@ -5602,12 +5622,12 @@
|
|
|
5602
5622
|
* its glyph on the design's centre line — 16px from the right edge, not 12. Its own icon
|
|
5603
5623
|
* stays 24px.
|
|
5604
5624
|
*/
|
|
5605
|
-
.
|
|
5625
|
+
._menuBtn_8o3d7_250 {
|
|
5606
5626
|
width: 32px;
|
|
5607
5627
|
height: 32px;
|
|
5608
5628
|
}
|
|
5609
5629
|
|
|
5610
|
-
.
|
|
5630
|
+
._menuBtn_8o3d7_250::after {
|
|
5611
5631
|
inset: -6px;
|
|
5612
5632
|
}
|
|
5613
5633
|
|
|
@@ -5630,7 +5650,7 @@
|
|
|
5630
5650
|
*
|
|
5631
5651
|
* Sits above the ::after hit area so the number is never painted underneath it.
|
|
5632
5652
|
*/
|
|
5633
|
-
.
|
|
5653
|
+
._badge_8o3d7_278 {
|
|
5634
5654
|
position: absolute;
|
|
5635
5655
|
top: -6px;
|
|
5636
5656
|
left: 14px;
|
|
@@ -5657,13 +5677,13 @@
|
|
|
5657
5677
|
* `context=checkout` (5295:74075). Both side slots are the 32px box the frame draws — the
|
|
5658
5678
|
* left one empty, so the title centres on the screen rather than on what is left over.
|
|
5659
5679
|
*/
|
|
5660
|
-
.
|
|
5680
|
+
._closeSlot_8o3d7_305 {
|
|
5661
5681
|
flex: 0 0 auto;
|
|
5662
5682
|
width: 32px;
|
|
5663
5683
|
height: 32px;
|
|
5664
5684
|
}
|
|
5665
5685
|
|
|
5666
|
-
.
|
|
5686
|
+
._closeSlot_8o3d7_305._iconBtn_8o3d7_223::after {
|
|
5667
5687
|
inset: -6px;
|
|
5668
5688
|
}
|
|
5669
5689
|
|
|
@@ -5672,7 +5692,7 @@
|
|
|
5672
5692
|
* centres "Order #2304" between two equal slots, so it is the free space, not a measured
|
|
5673
5693
|
* width. Same size, weight and colour as the shop entry's — one text style, two positions.
|
|
5674
5694
|
*/
|
|
5675
|
-
.
|
|
5695
|
+
._centred_8o3d7_320 {
|
|
5676
5696
|
flex: 1 1 auto;
|
|
5677
5697
|
width: auto;
|
|
5678
5698
|
text-align: center;
|
package/dist/styles.css
CHANGED
|
@@ -5397,7 +5397,7 @@
|
|
|
5397
5397
|
* the sticky CTA bar (50), the size-guide sheet (60), the bottom sheets (900) and the
|
|
5398
5398
|
* toast (1000).
|
|
5399
5399
|
*/
|
|
5400
|
-
.
|
|
5400
|
+
._header_8o3d7_25 {
|
|
5401
5401
|
position: sticky;
|
|
5402
5402
|
top: 0;
|
|
5403
5403
|
z-index: 40;
|
|
@@ -5462,7 +5462,7 @@
|
|
|
5462
5462
|
* Declared after `.header` so it wins the background: both are one class, so the later
|
|
5463
5463
|
* rule takes it.
|
|
5464
5464
|
*/
|
|
5465
|
-
.
|
|
5465
|
+
._floating_8o3d7_44 {
|
|
5466
5466
|
position: sticky;
|
|
5467
5467
|
top: 0;
|
|
5468
5468
|
/* Out of the flow without leaving it: the artwork below starts at y=0 and is drawn
|
|
@@ -5519,12 +5519,12 @@
|
|
|
5519
5519
|
* Fixed rather than tokenised, like the hero's own palette: it is drawn over a photograph
|
|
5520
5520
|
* and does not follow the surface.
|
|
5521
5521
|
*/
|
|
5522
|
-
.
|
|
5522
|
+
._floating_8o3d7_44._scrolled_8o3d7_79 {
|
|
5523
5523
|
background: rgba(8, 14, 18, 0.6);
|
|
5524
5524
|
}
|
|
5525
5525
|
|
|
5526
5526
|
@media (prefers-reduced-motion: reduce) {
|
|
5527
|
-
.
|
|
5527
|
+
._floating_8o3d7_44 {
|
|
5528
5528
|
transition: none;
|
|
5529
5529
|
}
|
|
5530
5530
|
}
|
|
@@ -5544,7 +5544,7 @@
|
|
|
5544
5544
|
* the dark screens, and the light PDP header (5295:75116) has an empty title slot. Written
|
|
5545
5545
|
* as a static white it would be invisible the first time a host passed one on a light page.
|
|
5546
5546
|
*/
|
|
5547
|
-
.
|
|
5547
|
+
._title_8o3d7_172 {
|
|
5548
5548
|
flex: 0 0 auto;
|
|
5549
5549
|
width: 222px;
|
|
5550
5550
|
min-width: 0;
|
|
@@ -5557,7 +5557,27 @@
|
|
|
5557
5557
|
white-space: nowrap;
|
|
5558
5558
|
}
|
|
5559
5559
|
|
|
5560
|
-
|
|
5560
|
+
/*
|
|
5561
|
+
* The same title, on a bar that carries no icons — the cart (`4661:136810`) and the order
|
|
5562
|
+
* screens.
|
|
5563
|
+
*
|
|
5564
|
+
* The 222px above is measured against a bar with the full 72px icon cluster on the right.
|
|
5565
|
+
* Take the cluster away and `space-between` has 97px of slack to share between two gaps,
|
|
5566
|
+
* which lands the text at x=88.5 — a title floating in the middle of an otherwise empty
|
|
5567
|
+
* bar. The frame puts "Cart" hard against the chevron: box at x=16..40, text from 57, so
|
|
5568
|
+
* one 16px gap and no more. DAZN reported it on 21 Aug 2026.
|
|
5569
|
+
*
|
|
5570
|
+
* `flex: 1 1 auto` rather than a second measured width, because there is nothing on the
|
|
5571
|
+
* right to measure against: the title simply takes what is left, and a long order
|
|
5572
|
+
* reference ellipsises instead of pushing a layout that has no other content in it.
|
|
5573
|
+
*/
|
|
5574
|
+
._title_8o3d7_172._leading_8o3d7_199 {
|
|
5575
|
+
flex: 1 1 auto;
|
|
5576
|
+
width: auto;
|
|
5577
|
+
margin-left: var(--space-16);
|
|
5578
|
+
}
|
|
5579
|
+
|
|
5580
|
+
._right_8o3d7_205 {
|
|
5561
5581
|
display: flex;
|
|
5562
5582
|
align-items: center;
|
|
5563
5583
|
gap: var(--space-16);
|
|
@@ -5570,12 +5590,12 @@
|
|
|
5570
5590
|
* header without a back button would silently re-lay-out rather than simply losing one
|
|
5571
5591
|
* icon. 24px is the icon box it stands in for.
|
|
5572
5592
|
*/
|
|
5573
|
-
.
|
|
5593
|
+
._spacer_8o3d7_218 {
|
|
5574
5594
|
width: 24px;
|
|
5575
5595
|
height: 24px;
|
|
5576
5596
|
}
|
|
5577
5597
|
|
|
5578
|
-
.
|
|
5598
|
+
._iconBtn_8o3d7_223 {
|
|
5579
5599
|
position: relative;
|
|
5580
5600
|
display: inline-flex;
|
|
5581
5601
|
align-items: center;
|
|
@@ -5591,7 +5611,7 @@
|
|
|
5591
5611
|
}
|
|
5592
5612
|
|
|
5593
5613
|
/* Expand the hit area to >=44px without moving the 24px icon off the 16px inset. */
|
|
5594
|
-
.
|
|
5614
|
+
._iconBtn_8o3d7_223::after {
|
|
5595
5615
|
content: '';
|
|
5596
5616
|
position: absolute;
|
|
5597
5617
|
inset: -10px;
|
|
@@ -5602,12 +5622,12 @@
|
|
|
5602
5622
|
* its glyph on the design's centre line — 16px from the right edge, not 12. Its own icon
|
|
5603
5623
|
* stays 24px.
|
|
5604
5624
|
*/
|
|
5605
|
-
.
|
|
5625
|
+
._menuBtn_8o3d7_250 {
|
|
5606
5626
|
width: 32px;
|
|
5607
5627
|
height: 32px;
|
|
5608
5628
|
}
|
|
5609
5629
|
|
|
5610
|
-
.
|
|
5630
|
+
._menuBtn_8o3d7_250::after {
|
|
5611
5631
|
inset: -6px;
|
|
5612
5632
|
}
|
|
5613
5633
|
|
|
@@ -5630,7 +5650,7 @@
|
|
|
5630
5650
|
*
|
|
5631
5651
|
* Sits above the ::after hit area so the number is never painted underneath it.
|
|
5632
5652
|
*/
|
|
5633
|
-
.
|
|
5653
|
+
._badge_8o3d7_278 {
|
|
5634
5654
|
position: absolute;
|
|
5635
5655
|
top: -6px;
|
|
5636
5656
|
left: 14px;
|
|
@@ -5657,13 +5677,13 @@
|
|
|
5657
5677
|
* `context=checkout` (5295:74075). Both side slots are the 32px box the frame draws — the
|
|
5658
5678
|
* left one empty, so the title centres on the screen rather than on what is left over.
|
|
5659
5679
|
*/
|
|
5660
|
-
.
|
|
5680
|
+
._closeSlot_8o3d7_305 {
|
|
5661
5681
|
flex: 0 0 auto;
|
|
5662
5682
|
width: 32px;
|
|
5663
5683
|
height: 32px;
|
|
5664
5684
|
}
|
|
5665
5685
|
|
|
5666
|
-
.
|
|
5686
|
+
._closeSlot_8o3d7_305._iconBtn_8o3d7_223::after {
|
|
5667
5687
|
inset: -6px;
|
|
5668
5688
|
}
|
|
5669
5689
|
|
|
@@ -5672,7 +5692,7 @@
|
|
|
5672
5692
|
* centres "Order #2304" between two equal slots, so it is the free space, not a measured
|
|
5673
5693
|
* width. Same size, weight and colour as the shop entry's — one text style, two positions.
|
|
5674
5694
|
*/
|
|
5675
|
-
.
|
|
5695
|
+
._centred_8o3d7_320 {
|
|
5676
5696
|
flex: 1 1 auto;
|
|
5677
5697
|
width: auto;
|
|
5678
5698
|
text-align: center;
|
package/package.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nok-integration/storefront-react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
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
|
+
"publishConfig": {
|
|
7
|
+
"access": "public",
|
|
8
|
+
"registry": "https://registry.npmjs.org/"
|
|
9
|
+
},
|
|
6
10
|
"type": "module",
|
|
7
11
|
"main": "./dist/index.mjs",
|
|
8
|
-
"module": "./dist/index.mjs",
|
|
9
12
|
"types": "./dist/index.d.ts",
|
|
10
13
|
"exports": {
|
|
11
14
|
".": {
|
|
@@ -20,18 +23,32 @@
|
|
|
20
23
|
"dist",
|
|
21
24
|
"!dist/**/*.map"
|
|
22
25
|
],
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "pnpm build:package && pnpm build:standalone",
|
|
28
|
+
"build:package": "vite build",
|
|
29
|
+
"build:standalone": "BUILD_TARGET=standalone vite build",
|
|
30
|
+
"typecheck": "tsc --noEmit",
|
|
31
|
+
"build:partner": "PARTNER_DROP=1 pnpm build && pnpm pack"
|
|
32
|
+
},
|
|
26
33
|
"peerDependencies": {
|
|
27
34
|
"react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
|
|
28
35
|
"react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
|
29
36
|
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@raqmix/contracts": "^2.0.0",
|
|
39
|
+
"@microsoft/api-extractor": "^7.58.12",
|
|
40
|
+
"@types/react": "^19.1.0",
|
|
41
|
+
"@types/react-dom": "^19.1.0",
|
|
42
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
43
|
+
"typescript": "^5.7.3",
|
|
44
|
+
"vite": "^7.0.0",
|
|
45
|
+
"vite-plugin-dts": "^5.0.3"
|
|
46
|
+
},
|
|
47
|
+
"module": "./dist/index.mjs",
|
|
48
|
+
"sideEffects": [
|
|
49
|
+
"*.css"
|
|
50
|
+
],
|
|
30
51
|
"dependencies": {
|
|
31
52
|
"zod": "^3.24.1"
|
|
32
|
-
},
|
|
33
|
-
"publishConfig": {
|
|
34
|
-
"access": "public",
|
|
35
|
-
"registry": "https://registry.npmjs.org/"
|
|
36
53
|
}
|
|
37
54
|
}
|