@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.
@@ -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
- ._header_1yjrk_25 {
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
- ._floating_1yjrk_44 {
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
- ._floating_1yjrk_44._scrolled_1yjrk_79 {
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
- ._floating_1yjrk_44 {
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
- ._title_1yjrk_172 {
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
- ._right_1yjrk_185 {
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
- ._spacer_1yjrk_198 {
5593
+ ._spacer_8o3d7_218 {
5574
5594
  width: 24px;
5575
5595
  height: 24px;
5576
5596
  }
5577
5597
 
5578
- ._iconBtn_1yjrk_203 {
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
- ._iconBtn_1yjrk_203::after {
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
- ._menuBtn_1yjrk_230 {
5625
+ ._menuBtn_8o3d7_250 {
5606
5626
  width: 32px;
5607
5627
  height: 32px;
5608
5628
  }
5609
5629
 
5610
- ._menuBtn_1yjrk_230::after {
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
- ._badge_1yjrk_258 {
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
- ._closeSlot_1yjrk_285 {
5680
+ ._closeSlot_8o3d7_305 {
5661
5681
  flex: 0 0 auto;
5662
5682
  width: 32px;
5663
5683
  height: 32px;
5664
5684
  }
5665
5685
 
5666
- ._closeSlot_1yjrk_285._iconBtn_1yjrk_203::after {
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
- ._centred_1yjrk_300 {
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
- ._header_1yjrk_25 {
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
- ._floating_1yjrk_44 {
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
- ._floating_1yjrk_44._scrolled_1yjrk_79 {
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
- ._floating_1yjrk_44 {
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
- ._title_1yjrk_172 {
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
- ._right_1yjrk_185 {
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
- ._spacer_1yjrk_198 {
5593
+ ._spacer_8o3d7_218 {
5574
5594
  width: 24px;
5575
5595
  height: 24px;
5576
5596
  }
5577
5597
 
5578
- ._iconBtn_1yjrk_203 {
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
- ._iconBtn_1yjrk_203::after {
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
- ._menuBtn_1yjrk_230 {
5625
+ ._menuBtn_8o3d7_250 {
5606
5626
  width: 32px;
5607
5627
  height: 32px;
5608
5628
  }
5609
5629
 
5610
- ._menuBtn_1yjrk_230::after {
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
- ._badge_1yjrk_258 {
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
- ._closeSlot_1yjrk_285 {
5680
+ ._closeSlot_8o3d7_305 {
5661
5681
  flex: 0 0 auto;
5662
5682
  width: 32px;
5663
5683
  height: 32px;
5664
5684
  }
5665
5685
 
5666
- ._closeSlot_1yjrk_285._iconBtn_1yjrk_203::after {
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
- ._centred_1yjrk_300 {
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.18.4",
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
- "sideEffects": [
24
- "*.css"
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
  }