@nuskin/nextgen-header 1.31.0 → 1.33.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.
@@ -87015,6 +87015,165 @@ module.exports = values;
87015
87015
 
87016
87016
  /***/ },
87017
87017
 
87018
+ /***/ 5925
87019
+ (module, __unused_webpack_exports, __webpack_require__) {
87020
+
87021
+
87022
+
87023
+ var _warn = __webpack_require__(8441);
87024
+
87025
+ var _warn2 = _interopRequireDefault(_warn);
87026
+
87027
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
87028
+
87029
+ // https://developers.google.com/tag-manager/quickstart
87030
+
87031
+ var Snippets = {
87032
+ tags: function tags(_ref) {
87033
+ var id = _ref.id,
87034
+ events = _ref.events,
87035
+ dataLayer = _ref.dataLayer,
87036
+ dataLayerName = _ref.dataLayerName,
87037
+ preview = _ref.preview,
87038
+ auth = _ref.auth;
87039
+
87040
+ var gtm_auth = '&gtm_auth=' + auth;
87041
+ var gtm_preview = '&gtm_preview=' + preview;
87042
+
87043
+ if (!id) (0, _warn2.default)('GTM Id is required');
87044
+
87045
+ var iframe = '\n <iframe src="https://www.googletagmanager.com/ns.html?id=' + id + gtm_auth + gtm_preview + '&gtm_cookies_win=x"\n height="0" width="0" style="display:none;visibility:hidden" id="tag-manager"></iframe>';
87046
+
87047
+ var script = '\n (function(w,d,s,l,i){w[l]=w[l]||[];\n w[l].push({\'gtm.start\': new Date().getTime(),event:\'gtm.js\', ' + JSON.stringify(events).slice(1, -1) + '});\n var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!=\'dataLayer\'?\'&l=\'+l:\'\';\n j.async=true;j.src=\'https://www.googletagmanager.com/gtm.js?id=\'+i+dl+\'' + gtm_auth + gtm_preview + '&gtm_cookies_win=x\';\n f.parentNode.insertBefore(j,f);\n })(window,document,\'script\',\'' + dataLayerName + '\',\'' + id + '\');';
87048
+
87049
+ var dataLayerVar = this.dataLayer(dataLayer, dataLayerName);
87050
+
87051
+ return {
87052
+ iframe: iframe,
87053
+ script: script,
87054
+ dataLayerVar: dataLayerVar
87055
+ };
87056
+ },
87057
+ dataLayer: function dataLayer(_dataLayer, dataLayerName) {
87058
+ return '\n window.' + dataLayerName + ' = window.' + dataLayerName + ' || [];\n window.' + dataLayerName + '.push(' + JSON.stringify(_dataLayer) + ')';
87059
+ }
87060
+ };
87061
+
87062
+ module.exports = Snippets;
87063
+
87064
+ /***/ },
87065
+
87066
+ /***/ 6324
87067
+ (module, __unused_webpack_exports, __webpack_require__) {
87068
+
87069
+
87070
+
87071
+ var _Snippets = __webpack_require__(5925);
87072
+
87073
+ var _Snippets2 = _interopRequireDefault(_Snippets);
87074
+
87075
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
87076
+
87077
+ var TagManager = {
87078
+ dataScript: function dataScript(dataLayer) {
87079
+ var script = document.createElement('script');
87080
+ script.innerHTML = dataLayer;
87081
+ return script;
87082
+ },
87083
+ gtm: function gtm(args) {
87084
+ var snippets = _Snippets2.default.tags(args);
87085
+
87086
+ var noScript = function noScript() {
87087
+ var noscript = document.createElement('noscript');
87088
+ noscript.innerHTML = snippets.iframe;
87089
+ return noscript;
87090
+ };
87091
+
87092
+ var script = function script() {
87093
+ var script = document.createElement('script');
87094
+ script.innerHTML = snippets.script;
87095
+ return script;
87096
+ };
87097
+
87098
+ var dataScript = this.dataScript(snippets.dataLayerVar);
87099
+
87100
+ return {
87101
+ noScript: noScript,
87102
+ script: script,
87103
+ dataScript: dataScript
87104
+ };
87105
+ },
87106
+ initialize: function initialize(_ref) {
87107
+ var gtmId = _ref.gtmId,
87108
+ _ref$events = _ref.events,
87109
+ events = _ref$events === undefined ? {} : _ref$events,
87110
+ dataLayer = _ref.dataLayer,
87111
+ _ref$dataLayerName = _ref.dataLayerName,
87112
+ dataLayerName = _ref$dataLayerName === undefined ? 'dataLayer' : _ref$dataLayerName,
87113
+ _ref$auth = _ref.auth,
87114
+ auth = _ref$auth === undefined ? '' : _ref$auth,
87115
+ _ref$preview = _ref.preview,
87116
+ preview = _ref$preview === undefined ? '' : _ref$preview;
87117
+
87118
+ var gtm = this.gtm({
87119
+ id: gtmId,
87120
+ events: events,
87121
+ dataLayer: dataLayer || undefined,
87122
+ dataLayerName: dataLayerName,
87123
+ auth: auth,
87124
+ preview: preview
87125
+ });
87126
+ if (dataLayer) document.head.appendChild(gtm.dataScript);
87127
+ document.head.insertBefore(gtm.script(), document.head.childNodes[0]);
87128
+ document.body.insertBefore(gtm.noScript(), document.body.childNodes[0]);
87129
+ },
87130
+ dataLayer: function dataLayer(_ref2) {
87131
+ var _dataLayer = _ref2.dataLayer,
87132
+ _ref2$dataLayerName = _ref2.dataLayerName,
87133
+ dataLayerName = _ref2$dataLayerName === undefined ? 'dataLayer' : _ref2$dataLayerName;
87134
+
87135
+ if (window[dataLayerName]) return window[dataLayerName].push(_dataLayer);
87136
+ var snippets = _Snippets2.default.dataLayer(_dataLayer, dataLayerName);
87137
+ var dataScript = this.dataScript(snippets);
87138
+ document.head.insertBefore(dataScript, document.head.childNodes[0]);
87139
+ }
87140
+ };
87141
+
87142
+ module.exports = TagManager;
87143
+
87144
+ /***/ },
87145
+
87146
+ /***/ 1003
87147
+ (module, __unused_webpack_exports, __webpack_require__) {
87148
+
87149
+
87150
+
87151
+ var _TagManager = __webpack_require__(6324);
87152
+
87153
+ var _TagManager2 = _interopRequireDefault(_TagManager);
87154
+
87155
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
87156
+
87157
+ module.exports = _TagManager2.default;
87158
+
87159
+ /***/ },
87160
+
87161
+ /***/ 8441
87162
+ (__unused_webpack_module, exports) {
87163
+
87164
+
87165
+
87166
+ Object.defineProperty(exports, "__esModule", ({
87167
+ value: true
87168
+ }));
87169
+ var warn = function warn(s) {
87170
+ console.warn('[react-gtm]', s);
87171
+ };
87172
+
87173
+ exports["default"] = warn;
87174
+
87175
+ /***/ },
87176
+
87018
87177
  /***/ 9223
87019
87178
  (__unused_webpack_module, exports, __webpack_require__) {
87020
87179
 
@@ -100176,62 +100335,73 @@ var colors = {
100176
100335
  accentHover: "#0d9488"
100177
100336
  };
100178
100337
  var HeaderRoot = /*#__PURE__*/createStyled("header", true ? {
100179
- target: "e1607tyl42"
100338
+ target: "e1607tyl45"
100180
100339
  } : 0)("box-sizing:border-box;width:100%;font-family:\"Inter\",system-ui,-apple-system,BlinkMacSystemFont,sans-serif;color:", colors.text, ";background:", colors.surface, ";border-bottom:1px solid ", colors.borderLight, ";*,*::before,*::after{box-sizing:border-box;}button{font:inherit;cursor:pointer;}button:disabled{cursor:not-allowed;opacity:0.55;}" + ( true ? "" : 0));
100181
100340
 
100182
100341
  /** Logo (left) + utility + search (stacked right) */
100183
100342
  var TopHeaderRow = /*#__PURE__*/createStyled("div", true ? {
100184
- target: "e1607tyl41"
100343
+ target: "e1607tyl44"
100185
100344
  } : 0)( true ? {
100186
100345
  name: "1dro8oz",
100187
100346
  styles: "display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem 0.5rem;padding:1rem clamp(1rem, 4vw, 2rem) 0.75rem;max-width:1440px;margin:0 auto;@media (min-width: 1025px){gap:1rem 2rem;}"
100188
100347
  } : 0);
100189
100348
  var LogoSlot = /*#__PURE__*/createStyled("div", true ? {
100190
- target: "e1607tyl40"
100349
+ target: "e1607tyl43"
100191
100350
  } : 0)("flex:0 0 auto;align-self:center;@media (max-width: 1024px){margin-right:auto;}[data-copy-loading]{display:flex;align-items:center;min-height:2.75rem;}.header-copy-placeholder{color:", colors.muted, ";letter-spacing:0.02em;}" + ( true ? "" : 0));
100192
100351
  var WordmarkButton = /*#__PURE__*/createStyled("button", true ? {
100193
- target: "e1607tyl39"
100352
+ target: "e1607tyl42"
100194
100353
  } : 0)("margin:0;padding:0.25rem 0;border:none;background:none;font-size:1.5rem;font-weight:700;letter-spacing:0.2em;color:", colors.text, ";text-transform:uppercase;line-height:1.2;transition:opacity 0.15s ease;&:hover{opacity:0.72;}" + ( true ? "" : 0));
100195
100354
 
100196
100355
  /** Utility row only (search moved to nav row) */
100197
100356
  var RightHeaderCluster = /*#__PURE__*/createStyled("div", true ? {
100198
- target: "e1607tyl38"
100357
+ target: "e1607tyl41"
100199
100358
  } : 0)( true ? {
100200
100359
  name: "qu4zte",
100201
100360
  styles: "display:none;@media (min-width: 1025px){display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:0.35rem 1rem;flex:1 1 auto;}"
100202
100361
  } : 0);
100203
100362
  var UtilityBar = /*#__PURE__*/createStyled("div", true ? {
100204
- target: "e1607tyl37"
100363
+ target: "e1607tyl40"
100205
100364
  } : 0)("display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:0.35rem 1rem;width:100%;font-size:0.8125rem;line-height:1.35;color:", colors.text, ";" + ( true ? "" : 0));
100206
100365
  var UtilityBarDivider = /*#__PURE__*/createStyled("span", true ? {
100207
- target: "e1607tyl36"
100366
+ target: "e1607tyl39"
100208
100367
  } : 0)("color:", colors.muted, ";user-select:none;" + ( true ? "" : 0));
100209
100368
  var UtilityButton = /*#__PURE__*/createStyled("button", true ? {
100210
- target: "e1607tyl35"
100369
+ target: "e1607tyl38"
100211
100370
  } : 0)( true ? {
100212
100371
  name: "1f5cjb2",
100213
100372
  styles: "display:inline-flex;align-items:center;gap:0.35rem;margin:0;padding:0.2rem 0.35rem;border:none;border-radius:4px;background:transparent;color:inherit;white-space:nowrap;transition:background 0.15s ease;&:not(:disabled):hover{background:rgba(0, 0, 0, 0.05);}svg{flex-shrink:0;opacity:0.85;}"
100214
100373
  } : 0);
100374
+ var LoyaltyPillInner = /*#__PURE__*/createStyled("span", true ? {
100375
+ target: "e1607tyl37"
100376
+ } : 0)( true ? {
100377
+ name: "99qhl1",
100378
+ styles: "display:inline-flex;align-items:center;gap:0;color:inherit;border-bottom:1px solid transparent;box-sizing:border-box"
100379
+ } : 0);
100380
+
100381
+ /** Loyalty anchor in the utility bar — pill aligned with market selector visual spec */
100382
+ var LoyaltyUtilityLink = /*#__PURE__*/createStyled("a", true ? {
100383
+ target: "e1607tyl36"
100384
+ } : 0)("appearance:none;margin:0;border:0;background:transparent;color:#5f5f5f;font-family:Lora,sans-serif;font-weight:500;font-size:16px;line-height:22px;min-height:44px;padding:11px 16px;border-radius:24px;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;cursor:pointer;&:visited{color:#5f5f5f;text-decoration:none;}&:hover{background:#efefef;color:#2f2f2f;text-decoration:none;", LoyaltyPillInner, "{border-bottom-color:currentColor;}}&:hover:visited{color:#2f2f2f;text-decoration:none;}&:focus-visible{outline:1px solid #007bff;outline-offset:1px;color:#2f2f2f;text-decoration:none;", LoyaltyPillInner, "{border-bottom-color:currentColor;}}&:active{text-decoration:none;}" + ( true ? "" : 0));
100215
100385
  var LocaleLabel = /*#__PURE__*/createStyled("span", true ? {
100216
- target: "e1607tyl34"
100386
+ target: "e1607tyl35"
100217
100387
  } : 0)( true ? {
100218
100388
  name: "101gt3q",
100219
100389
  styles: "display:inline-flex;align-items:center;gap:0.3rem"
100220
100390
  } : 0);
100221
100391
  var AccountCluster = /*#__PURE__*/createStyled("div", true ? {
100222
- target: "e1607tyl33"
100392
+ target: "e1607tyl34"
100223
100393
  } : 0)( true ? {
100224
100394
  name: "m6tz52",
100225
100395
  styles: "display:inline-flex;flex-wrap:wrap;align-items:center;gap:0.125rem 0.35rem;@media (max-width: 1024px){.account-icon{display:none;}.account-sign-up{display:none;}.account-divider{display:none;}.account-sign-in{font-size:1rem;font-weight:400;padding:0;}}"
100226
100396
  } : 0);
100227
100397
  var CartButtonInner = /*#__PURE__*/createStyled("span", true ? {
100228
- target: "e1607tyl32"
100398
+ target: "e1607tyl33"
100229
100399
  } : 0)( true ? {
100230
100400
  name: "ww3r3k",
100231
100401
  styles: "display:inline-flex;align-items:center;position:relative"
100232
100402
  } : 0);
100233
100403
  var CartBadge = /*#__PURE__*/createStyled("span", true ? {
100234
- target: "e1607tyl31"
100404
+ target: "e1607tyl32"
100235
100405
  } : 0)( true ? {
100236
100406
  name: "1sj9dvc",
100237
100407
  styles: "position:absolute;top:-8px;right:-8px;display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 4px;border-radius:50%;font-size:0.75rem;font-weight:600;line-height:1;background:#5b81a5;color:#fff;border:2px solid #fff"
@@ -100239,140 +100409,148 @@ var CartBadge = /*#__PURE__*/createStyled("span", true ? {
100239
100409
 
100240
100410
  /** Pill search: icon left, full-width field, submit control on right */
100241
100411
  var SearchSlot = /*#__PURE__*/createStyled("div", true ? {
100242
- target: "e1607tyl30"
100412
+ target: "e1607tyl31"
100243
100413
  } : 0)( true ? {
100244
100414
  name: "kuwwf0",
100245
100415
  styles: "width:100%;[data-region=\"search\"]{width:100%;}"
100246
100416
  } : 0);
100247
100417
  var SearchPillForm = /*#__PURE__*/createStyled("form", true ? {
100248
- target: "e1607tyl29"
100418
+ target: "e1607tyl30"
100249
100419
  } : 0)("display:flex;align-items:center;width:100%;min-height:2.75rem;padding:0 0.35rem 0 0.85rem;border:1px solid ", colors.border, ";border-radius:999px;background:", colors.surface, ";overflow:hidden;transition:border-color 0.15s ease,box-shadow 0.15s ease;&:focus-within{border-color:", colors.muted, ";box-shadow:0 0 0 1px rgba(17, 24, 39, 0.08);}.search-pill__icon{flex-shrink:0;margin-right:0.5rem;color:", colors.muted, ";}input{flex:1;min-width:0;padding:0.5rem 0;border:none;background:transparent;font-size:0.9375rem;outline:none;&::placeholder{color:", colors.muted, ";}}button[type=\"submit\"]{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;margin:0.1rem 0.1rem 0.1rem 0.25rem;padding:0;border:none;border-radius:50%;background:", colors.text, ";color:#fff;transition:opacity 0.15s ease,transform 0.1s ease;&:hover:not(:disabled){opacity:0.88;}&:disabled{opacity:0.4;}svg{width:16px;height:16px;}}" + ( true ? "" : 0));
100250
100420
  var NavSection = /*#__PURE__*/createStyled("div", true ? {
100251
- target: "e1607tyl28"
100421
+ target: "e1607tyl29"
100252
100422
  } : 0)("display:none;background:", colors.surface, ";@media (min-width: 1025px){display:block;[role=\"tablist\"]{padding-right:calc(\n clamp(200px, 22vw, 340px) + clamp(1rem, 4vw, 2rem) + 1.5rem\n );}}", function (p) {
100253
100423
  return p.$isEditing && "display: block;";
100254
100424
  }, ";" + ( true ? "" : 0));
100255
100425
 
100256
100426
  /** Search pill anchored to the top-right of NavSection, vertically centred in the tab row (68 px tall). */
100257
100427
  var NavSectionInner = /*#__PURE__*/createStyled("div", true ? {
100258
- target: "e1607tyl27"
100428
+ target: "e1607tyl28"
100259
100429
  } : 0)( true ? {
100260
100430
  name: "15qmolt",
100261
100431
  styles: "position:relative;max-width:1440px;margin:0 auto"
100262
100432
  } : 0);
100263
100433
  var NavSearchSlot = /*#__PURE__*/createStyled("div", true ? {
100264
- target: "e1607tyl26"
100434
+ target: "e1607tyl27"
100265
100435
  } : 0)( true ? {
100266
100436
  name: "913s6b",
100267
100437
  styles: "display:none;@media (min-width: 1025px){display:flex;align-items:center;position:absolute;top:0;right:clamp(1rem, 4vw, 2rem);height:68px;width:clamp(200px, 22vw, 340px);[data-region=\"search\"]{width:100%;}}"
100268
100438
  } : 0);
100269
100439
  var PrimaryNav = /*#__PURE__*/createStyled("nav", true ? {
100270
- target: "e1607tyl25"
100440
+ target: "e1607tyl26"
100271
100441
  } : 0)("max-width:1440px;margin:0 auto;padding:0 clamp(1rem, 4vw, 2rem);ul{display:flex;flex-wrap:wrap;align-items:stretch;gap:0;margin:0;padding:0;list-style:none;}li{margin:0;}li>span,li>button{display:block;width:100%;margin:0;padding:0.95rem 0.85rem;border:none;background:none;font-size:0.9375rem;font-weight:500;text-align:left;color:", colors.text, ";border-bottom:3px solid transparent;transition:color 0.15s ease,border-color 0.15s ease;}li>button{cursor:pointer;font-family:inherit;}li:hover>span,li:hover>button{color:", colors.accent, ";}li[data-nav-active=\"true\"]>span,li[data-nav-active=\"true\"]>button{font-weight:700;border-bottom-color:", colors.navActive, ";}&[data-copy-loading] li>span{color:", colors.muted, ";}" + ( true ? "" : 0));
100272
100442
  var MegaMenuPreview = /*#__PURE__*/createStyled("section", true ? {
100273
- target: "e1607tyl24"
100443
+ target: "e1607tyl25"
100274
100444
  } : 0)("border-top:1px solid ", colors.borderLight, ";background:#f9fafb;" + ( true ? "" : 0));
100275
100445
  var MegaMenuInner = /*#__PURE__*/createStyled("div", true ? {
100276
- target: "e1607tyl23"
100446
+ target: "e1607tyl24"
100277
100447
  } : 0)( true ? {
100278
100448
  name: "1awwgt4",
100279
100449
  styles: "display:grid;grid-template-columns:minmax(11rem, 14rem) 1fr;gap:1.5rem 2.5rem;max-width:1440px;margin:0 auto;padding:1.25rem clamp(1rem, 4vw, 2rem) 1.75rem;@media (max-width: 800px){grid-template-columns:1fr;}"
100280
100450
  } : 0);
100281
100451
  var JumpToColumn = /*#__PURE__*/createStyled("div", true ? {
100282
- target: "e1607tyl22"
100452
+ target: "e1607tyl23"
100283
100453
  } : 0)("padding:1rem;border:1px solid ", colors.border, ";border-radius:6px;background:", colors.surface, ";" + ( true ? "" : 0));
100284
100454
  var JumpToTitle = /*#__PURE__*/createStyled("h3", true ? {
100285
- target: "e1607tyl21"
100455
+ target: "e1607tyl22"
100286
100456
  } : 0)("margin:0 0 0.75rem;font-size:0.8125rem;font-weight:700;text-transform:uppercase;letter-spacing:0.04em;color:", colors.text, ";" + ( true ? "" : 0));
100287
100457
  var JumpToList = /*#__PURE__*/createStyled("ul", true ? {
100288
- target: "e1607tyl20"
100458
+ target: "e1607tyl21"
100289
100459
  } : 0)( true ? {
100290
100460
  name: "gt7hyk",
100291
100461
  styles: "display:flex;flex-direction:column;gap:0.5rem;margin:0;padding:0;list-style:none"
100292
100462
  } : 0);
100293
100463
  var JumpToPill = /*#__PURE__*/createStyled("button", true ? {
100294
- target: "e1607tyl19"
100464
+ target: "e1607tyl20"
100295
100465
  } : 0)("display:block;width:100%;margin:0;padding:0.5rem 0.85rem;border:1px solid ", colors.border, ";border-radius:999px;background:", colors.surface, ";font-size:0.8125rem;font-weight:500;text-align:left;color:", colors.text, ";transition:background 0.15s ease,border-color 0.15s ease;&:hover:not(:disabled){background:#f3f4f6;border-color:", colors.muted, ";}" + ( true ? "" : 0));
100296
100466
  var CategoriesPane = /*#__PURE__*/createStyled("div", true ? {
100297
- target: "e1607tyl18"
100467
+ target: "e1607tyl19"
100298
100468
  } : 0)("padding:1rem 1.25rem;border:1px solid ", colors.border, ";border-radius:6px;background:", colors.surface, ";" + ( true ? "" : 0));
100299
100469
  var CategoryHeaderStrip = /*#__PURE__*/createStyled("div", true ? {
100300
- target: "e1607tyl17"
100470
+ target: "e1607tyl18"
100301
100471
  } : 0)("display:flex;flex-wrap:wrap;align-items:center;gap:0.35rem 0.5rem;margin-bottom:1.25rem;padding-bottom:0.65rem;border-bottom:1px solid ", colors.borderLight, ";font-size:0.8125rem;font-weight:700;text-transform:uppercase;letter-spacing:0.05em;color:", colors.text, ";span{white-space:nowrap;}svg{flex-shrink:0;color:", colors.muted, ";}" + ( true ? "" : 0));
100302
100472
  var CategoryColumns = /*#__PURE__*/createStyled("div", true ? {
100303
- target: "e1607tyl16"
100473
+ target: "e1607tyl17"
100304
100474
  } : 0)( true ? {
100305
100475
  name: "xxda9t",
100306
100476
  styles: "display:grid;grid-template-columns:repeat(3, 1fr);gap:1.25rem 1.5rem;@media (max-width: 900px){grid-template-columns:1fr;}"
100307
100477
  } : 0);
100308
100478
  var CategoryColumn = /*#__PURE__*/(/* unused pure expression or super */ null && (_styled("div", true ? {
100309
- target: "e1607tyl15"
100479
+ target: "e1607tyl16"
100310
100480
  } : 0)( true ? "" : 0)));
100311
100481
  var CategorySubLabel = /*#__PURE__*/createStyled("p", true ? {
100312
- target: "e1607tyl14"
100482
+ target: "e1607tyl15"
100313
100483
  } : 0)("margin:0 0 0.5rem;font-size:0.75rem;font-weight:700;text-transform:uppercase;letter-spacing:0.04em;color:", colors.muted, ";" + ( true ? "" : 0));
100314
100484
  var CategoryLinkList = /*#__PURE__*/createStyled("ul", true ? {
100315
- target: "e1607tyl13"
100485
+ target: "e1607tyl14"
100316
100486
  } : 0)("margin:0;padding:0;list-style:none;li{margin:0;padding:0;}button.link-like{display:block;width:100%;margin:0;padding:0.35rem 0;border:none;background:none;font-size:0.875rem;text-align:left;color:", colors.text, ";text-decoration:none;cursor:pointer;transition:color 0.12s ease;&:hover{color:", colors.accent, ";text-decoration:underline;}}" + ( true ? "" : 0));
100317
100487
  var MobileMenuButton = /*#__PURE__*/createStyled("button", true ? {
100318
- target: "e1607tyl12"
100488
+ target: "e1607tyl13"
100319
100489
  } : 0)("display:flex;align-items:center;justify-content:center;margin:0;padding:0.5rem;border:none;background:transparent;color:", colors.text, ";cursor:pointer;transition:background 0.15s ease;&:hover{background:rgba(0, 0, 0, 0.05);}@media (min-width: 1025px){display:none;}" + ( true ? "" : 0));
100320
100490
  var MobileUtilityBar = /*#__PURE__*/createStyled("div", true ? {
100321
- target: "e1607tyl11"
100491
+ target: "e1607tyl12"
100322
100492
  } : 0)("display:flex;align-items:center;gap:1rem;margin-left:auto;font-size:1rem;@media (min-width: 1025px){display:none;}[data-region=\"account\"] button,[data-region=\"cart\"] button{display:flex;align-items:center;padding:0;background:none;border:none;color:", colors.text, ";cursor:pointer;font-size:1rem;svg{width:24px;height:24px;}}" + ( true ? "" : 0));
100323
100493
  var MobileDrawer = /*#__PURE__*/createStyled("div", true ? {
100324
- target: "e1607tyl10"
100494
+ target: "e1607tyl11"
100325
100495
  } : 0)( true ? {
100326
100496
  name: "kxea5q",
100327
100497
  styles: "position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999;display:flex"
100328
100498
  } : 0);
100329
100499
  var MobileDrawerBackdrop = /*#__PURE__*/createStyled("div", true ? {
100330
- target: "e1607tyl9"
100500
+ target: "e1607tyl10"
100331
100501
  } : 0)( true ? {
100332
100502
  name: "eq959j",
100333
100503
  styles: "position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(0, 0, 0, 0.5);cursor:pointer"
100334
100504
  } : 0);
100335
100505
  var MobileDrawerContent = /*#__PURE__*/createStyled("div", true ? {
100336
- target: "e1607tyl8"
100506
+ target: "e1607tyl9"
100337
100507
  } : 0)("position:relative;z-index:1;width:85%;max-width:375px;height:100%;background:", colors.surface, ";display:flex;flex-direction:column;gap:16px;box-shadow:2px 0 8px rgba(0, 0, 0, 0.15);" + ( true ? "" : 0));
100338
100508
  var MobileDrawerHeader = /*#__PURE__*/createStyled("div", true ? {
100339
- target: "e1607tyl7"
100509
+ target: "e1607tyl8"
100340
100510
  } : 0)( true ? {
100341
100511
  name: "dvskpv",
100342
100512
  styles: "box-sizing:border-box;width:100%;height:98px;min-height:98px;flex-shrink:0;padding:66px 0 0;background:#ffffff;opacity:1"
100343
100513
  } : 0);
100344
100514
  var MobileDrawerHeaderRow = /*#__PURE__*/createStyled("div", true ? {
100345
- target: "e1607tyl6"
100515
+ target: "e1607tyl7"
100346
100516
  } : 0)( true ? {
100347
100517
  name: "150vzce",
100348
100518
  styles: "display:flex;align-items:center;justify-content:space-between;height:32px;min-height:32px;max-height:32px;width:100%;box-sizing:border-box;padding-left:20px;padding-right:20px"
100349
100519
  } : 0);
100350
100520
  var MobileDrawerMarketTriggerSlot = /*#__PURE__*/createStyled("div", true ? {
100351
- target: "e1607tyl5"
100521
+ target: "e1607tyl6"
100352
100522
  } : 0)( true ? {
100353
100523
  name: "u09th4",
100354
100524
  styles: "flex:0 1 auto;min-width:0;height:32px;display:flex;align-items:center;justify-content:flex-end"
100355
100525
  } : 0);
100356
100526
  var MobileDrawerLogoSlot = /*#__PURE__*/createStyled("div", true ? {
100357
- target: "e1607tyl4"
100527
+ target: "e1607tyl5"
100358
100528
  } : 0)( true ? {
100359
100529
  name: "1659k0q",
100360
100530
  styles: "display:flex;align-items:center;justify-content:flex-start;min-width:0;flex:1 1 auto;height:100%;overflow:hidden"
100361
100531
  } : 0);
100362
100532
  var MobileDrawerNav = /*#__PURE__*/createStyled("nav", true ? {
100363
- target: "e1607tyl3"
100533
+ target: "e1607tyl4"
100364
100534
  } : 0)( true ? {
100365
100535
  name: "tvz3vz",
100366
100536
  styles: "flex:1;overflow-y:auto;padding:0 0 1rem;[data-drawer-top-nav]>*{max-width:none;margin:0;padding:0;width:100%;}"
100367
100537
  } : 0);
100368
100538
  var MobileDrawerNavItem = /*#__PURE__*/createStyled("div", true ? {
100369
- target: "e1607tyl2"
100539
+ target: "e1607tyl3"
100370
100540
  } : 0)( true ? "" : 0);
100371
100541
  var MobileDrawerNavButton = /*#__PURE__*/createStyled("button", true ? {
100372
- target: "e1607tyl1"
100542
+ target: "e1607tyl2"
100373
100543
  } : 0)("display:flex;align-items:center;justify-content:", function (p) {
100374
100544
  return p.$alignStart ? "flex-start" : "space-between";
100375
100545
  }, ";width:100%;margin:0;padding:1.125rem 1.5rem;border:none;background:none;font-size:1rem;font-weight:400;text-align:left;color:", colors.text, ";cursor:pointer;transition:background 0.15s ease;text-decoration:none;&:hover{background:rgba(0, 0, 0, 0.03);}svg{flex-shrink:0;color:", colors.muted, ";transition:transform 0.2s ease;}" + ( true ? "" : 0));
100546
+
100547
+ /** Nav row without trailing icon (e.g. loyalty link). */
100548
+ var MobileDrawerNavLink = /*#__PURE__*/createStyled(MobileDrawerNavButton, true ? {
100549
+ target: "e1607tyl1"
100550
+ } : 0)( true ? {
100551
+ name: "11g6mpt",
100552
+ styles: "justify-content:flex-start"
100553
+ } : 0);
100376
100554
  var MobileDrawerLocaleButton = /*#__PURE__*/createStyled("button", true ? {
100377
100555
  target: "e1607tyl0"
100378
100556
  } : 0)("display:inline-flex;align-items:center;gap:0.5rem;margin:15px 18px;padding:7px;border:1px solid ", colors.border, ";border-radius:24px;background:transparent;font-size:0.875rem;color:", colors.text, ";cursor:pointer;justify-content:center;transition:all 0.15s ease;&:hover{background:rgba(0, 0, 0, 0.03);border-color:", colors.text, ";}svg{flex-shrink:0;color:", colors.muted, ";width:16px;height:16px;}" + ( true ? "" : 0));
@@ -100437,11 +100615,24 @@ var HEIGHT_MAP = {
100437
100615
  var HEADER_CONTENT_ENTRY_UID = "global_header";
100438
100616
  var HEADER_ENTRY_URL = "/vb-header/root-header";
100439
100617
  var VB_EMPTY_BLOCK_PARENT_CLASS = "visual-builder__empty-block-parent";
100440
- var referenceFields = (/* unused pure expression or super */ null && (["top_navigation", "top_navigation.menu_items.menu_item", "top_navigation.menu_items.menu_item.sub_categories.category_section.items.product_category.category", "market_selector.regions.markets.languages", "utility_links", "utility_links.loyalty_menu", "utility_links.sign_up_sign_in_component", "product_search", "translations"]));
100618
+ var referenceFields = (/* unused pure expression or super */ null && (["top_ribbon", "top_navigation", "top_navigation.menu_items.menu_item", "top_navigation.menu_items.menu_item.sub_categories.category_section.items.product_category.category", "market_selector.regions.markets.languages", "utility_links", "utility_links.loyalty_menu", "utility_links.sign_up_sign_in_component", "product_search", "translations"]));
100441
100619
  var CONTENTSTACK_API_KEY = process.env.CONTENTSTACK_API_KEY;
100442
100620
  var CONTENTSTACK_DELIVERY_TOKEN = process.env.CONTENTSTACK_DELIVERY_TOKEN;
100443
100621
  var CONTENTSTACK_ENVIRONMENT = process.env.CONTENTSTACK_ENVIRONMENT;
100444
100622
  var CONTENTSTACK_PREVIEW_TOKEN = process.env.CONTENTSTACK_PREVIEW_TOKEN;
100623
+ var GTM_TRACKING_CONFIG = {
100624
+ loyalty: {
100625
+ componentName: "Loyalty",
100626
+ impressionEvent: "header_loyalty_impression",
100627
+ impressionElement: "Impression",
100628
+ impressionTriggerType: "Element Visibility",
100629
+ clickEvent: "vb_button_cta_click",
100630
+ clickElement: "CTA Click",
100631
+ clickTriggerType: "Click - Just Links",
100632
+ // Loyalty is always an anchor (`data-gtm-loyalty`); selector works for GTM delegation.
100633
+ clickSelector: "[data-gtm-loyalty]"
100634
+ }
100635
+ };
100445
100636
 
100446
100637
  ;// ./src/utils/contentstack.js
100447
100638
  /* unused harmony import specifier */ var ContentstackLivePreview;
@@ -102419,6 +102610,12 @@ TopNavigation.defaultProps = {
102419
102610
  translations: undefined
102420
102611
  };
102421
102612
  ;// ./src/components/header/MobileHeaderDrawer.jsx
102613
+ function MobileHeaderDrawer_typeof(o) { "@babel/helpers - typeof"; return MobileHeaderDrawer_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, MobileHeaderDrawer_typeof(o); }
102614
+ function MobileHeaderDrawer_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
102615
+ function MobileHeaderDrawer_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? MobileHeaderDrawer_ownKeys(Object(t), !0).forEach(function (r) { MobileHeaderDrawer_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : MobileHeaderDrawer_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
102616
+ function MobileHeaderDrawer_defineProperty(e, r, t) { return (r = MobileHeaderDrawer_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
102617
+ function MobileHeaderDrawer_toPropertyKey(t) { var i = MobileHeaderDrawer_toPrimitive(t, "string"); return "symbol" == MobileHeaderDrawer_typeof(i) ? i : i + ""; }
102618
+ function MobileHeaderDrawer_toPrimitive(t, r) { if ("object" != MobileHeaderDrawer_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != MobileHeaderDrawer_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
102422
102619
 
102423
102620
 
102424
102621
 
@@ -102464,13 +102661,16 @@ function MobileHeaderDrawer(_ref) {
102464
102661
  data: navigationData,
102465
102662
  locale: locale
102466
102663
  })
102467
- }), (loyaltyData === null || loyaltyData === void 0 ? void 0 : loyaltyData.link_label) && /*#__PURE__*/(0,jsx_runtime_.jsx)(MobileDrawerNavItem, {
102468
- children: /*#__PURE__*/(0,jsx_runtime_.jsx)(MobileDrawerNavButton, {
102664
+ }), (loyaltyData === null || loyaltyData === void 0 ? void 0 : loyaltyData.label) && (loyaltyData === null || loyaltyData === void 0 ? void 0 : loyaltyData.url) && /*#__PURE__*/(0,jsx_runtime_.jsx)(MobileDrawerNavItem, {
102665
+ children: /*#__PURE__*/(0,jsx_runtime_.jsx)(MobileDrawerNavLink, MobileHeaderDrawer_objectSpread(MobileHeaderDrawer_objectSpread({
102469
102666
  as: "a",
102470
- href: loyaltyData.href,
102471
- $alignStart: true,
102472
- children: loyaltyData.link_label
102473
- })
102667
+ href: loyaltyData.url
102668
+ }, loyaltyData.open_in_new_tab ? {
102669
+ target: "_blank",
102670
+ rel: "noopener noreferrer"
102671
+ } : {}), {}, {
102672
+ children: loyaltyData.label
102673
+ }))
102474
102674
  }), marketTriggerMountRef ? null : /*#__PURE__*/(0,jsx_runtime_.jsx)(MobileDrawerNavItem, {
102475
102675
  children: /*#__PURE__*/(0,jsx_runtime_.jsxs)(MobileDrawerLocaleButton, {
102476
102676
  children: [localeData.control_label, /*#__PURE__*/(0,jsx_runtime_.jsx)(IconChevronDown, {})]
@@ -102506,19 +102706,26 @@ function HeaderLoyaltyRegion_toPrimitive(t, r) { if ("object" != HeaderLoyaltyRe
102506
102706
  function HeaderLoyaltyRegion(_ref) {
102507
102707
  var _data$$;
102508
102708
  var data = _ref.data;
102509
- return /*#__PURE__*/(0,jsx_runtime_.jsx)(UtilityButton, HeaderLoyaltyRegion_objectSpread(HeaderLoyaltyRegion_objectSpread({
102510
- type: "button",
102511
- href: data === null || data === void 0 ? void 0 : data.url
102512
- }, data === null || data === void 0 || (_data$$ = data.$) === null || _data$$ === void 0 ? void 0 : _data$$.label), {}, {
102513
- children: data === null || data === void 0 ? void 0 : data.label
102709
+ var url = data === null || data === void 0 ? void 0 : data.url;
102710
+ return /*#__PURE__*/(0,jsx_runtime_.jsx)(LoyaltyUtilityLink, HeaderLoyaltyRegion_objectSpread(HeaderLoyaltyRegion_objectSpread({
102711
+ "data-gtm-loyalty": true,
102712
+ href: url
102713
+ }, data !== null && data !== void 0 && data.open_in_new_tab ? {
102714
+ target: "_blank",
102715
+ rel: "noopener noreferrer"
102716
+ } : {}), {}, {
102717
+ children: /*#__PURE__*/(0,jsx_runtime_.jsx)(LoyaltyPillInner, HeaderLoyaltyRegion_objectSpread(HeaderLoyaltyRegion_objectSpread({}, data === null || data === void 0 || (_data$$ = data.$) === null || _data$$ === void 0 ? void 0 : _data$$.label), {}, {
102718
+ children: data === null || data === void 0 ? void 0 : data.label
102719
+ }))
102514
102720
  }));
102515
102721
  }
102516
102722
  HeaderLoyaltyRegion.propTypes = {
102517
102723
  data: external_prop_types_["default"].shape({
102518
- label: external_prop_types_["default"].string.isRequired,
102519
- url: external_prop_types_["default"].string,
102724
+ label: external_prop_types_["default"].string,
102725
+ url: external_prop_types_["default"].string.isRequired,
102726
+ open_in_new_tab: external_prop_types_["default"].bool,
102520
102727
  $: external_prop_types_["default"].object
102521
- }).isRequired
102728
+ })
102522
102729
  };
102523
102730
  ;// ./src/components/signup-signin/SignUpOrSignIn.helpers.js
102524
102731
  var DEFAULT_SIGN_UP = {
@@ -107335,44 +107542,448 @@ HeaderNavigationRegion.propTypes = {
107335
107542
  locale: external_prop_types_["default"].string,
107336
107543
  translations: external_prop_types_["default"].object
107337
107544
  };
107338
- ;// ./src/utils/common.js
107339
- /**
107340
- * Validate and sanitize a URL string.
107341
- * Returns '#' for invalid/empty values to provide safe fallback anchors.
107342
- *
107343
- * SSR-safe: no DOM/window access.
107344
- *
107345
- * @param {*} url - The URL value to validate
107346
- * @returns {string} The original URL if valid, otherwise '#'
107347
- */
107348
- var validateUrl = function validateUrl(url) {
107349
- if (!url || typeof url !== 'string' || url.trim() === '') {
107350
- return '#';
107545
+ // EXTERNAL MODULE: ./node_modules/react-gtm-module/dist/index.js
107546
+ var react_gtm_module_dist = __webpack_require__(1003);
107547
+ ;// ./src/utils/datalayer.js
107548
+ function datalayer_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
107549
+ function datalayer_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? datalayer_ownKeys(Object(t), !0).forEach(function (r) { datalayer_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : datalayer_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
107550
+ function datalayer_defineProperty(e, r, t) { return (r = datalayer_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
107551
+ function datalayer_toPropertyKey(t) { var i = datalayer_toPrimitive(t, "string"); return "symbol" == datalayer_typeof(i) ? i : i + ""; }
107552
+ function datalayer_toPrimitive(t, r) { if ("object" != datalayer_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != datalayer_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
107553
+ function datalayer_typeof(o) { "@babel/helpers - typeof"; return datalayer_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, datalayer_typeof(o); }
107554
+
107555
+ var gtmInitialized = false;
107556
+
107557
+ /** Resets init guard — for unit tests only */
107558
+ function resetGtmInitForTesting() {
107559
+ gtmInitialized = false;
107560
+ }
107561
+ var initDataLayer = function initDataLayer() {
107562
+ if ((typeof window === "undefined" ? "undefined" : datalayer_typeof(window)) !== "object") return;
107563
+ var gtmId = process.env.REACT_APP_GTM_KEY;
107564
+ if (!gtmId || gtmInitialized) return;
107565
+ try {
107566
+ var gtmArgs = {
107567
+ gtmId: gtmId
107568
+ };
107569
+ react_gtm_module_dist.initialize(gtmArgs);
107570
+ gtmInitialized = true;
107571
+ } catch (error) {
107572
+ console.error("Error initializing GTM:", error);
107351
107573
  }
107352
- return url;
107353
107574
  };
107575
+ var pushDataLayerEvent = function pushDataLayerEvent() {
107576
+ var eventData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
107577
+ if ((typeof window === "undefined" ? "undefined" : datalayer_typeof(window)) !== "object") return;
107578
+ initDataLayer();
107579
+ var dataToTrack = datalayer_objectSpread({}, eventData);
107580
+ react_gtm_module_dist.dataLayer({
107581
+ dataLayer: dataToTrack
107582
+ });
107583
+ };
107584
+ var getDataLayer = function getDataLayer() {
107585
+ return [];
107586
+ };
107587
+ ;// ./src/utils/eventFactory.js
107588
+ function eventFactory_typeof(o) { "@babel/helpers - typeof"; return eventFactory_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, eventFactory_typeof(o); }
107589
+ var eventFactory_excluded = ["component_name", "event", "event_action", "element", "trigger_type"];
107590
+ function eventFactory_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
107591
+ function eventFactory_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? eventFactory_ownKeys(Object(t), !0).forEach(function (r) { eventFactory_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : eventFactory_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
107592
+ function eventFactory_defineProperty(e, r, t) { return (r = eventFactory_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
107593
+ function eventFactory_toPropertyKey(t) { var i = eventFactory_toPrimitive(t, "string"); return "symbol" == eventFactory_typeof(i) ? i : i + ""; }
107594
+ function eventFactory_toPrimitive(t, r) { if ("object" != eventFactory_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != eventFactory_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
107595
+ function eventFactory_objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = eventFactory_objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
107596
+ function eventFactory_objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
107597
+
107598
+ var VB_EVENT_CONFIG = {
107599
+ view: {
107600
+ element: "Impression",
107601
+ trigger_type: "Element Visibility",
107602
+ event_category: "engagement"
107603
+ },
107604
+ click: {
107605
+ element: "CTA Click",
107606
+ trigger_type: "Click",
107607
+ event_category: "engagement"
107608
+ },
107609
+ navigate: {
107610
+ element: "Navigation",
107611
+ trigger_type: "Click",
107612
+ event_category: "engagement"
107613
+ }
107614
+ };
107615
+ var trackVisualBuilderEvent = function trackVisualBuilderEvent(_ref) {
107616
+ var component_name = _ref.component_name,
107617
+ event = _ref.event,
107618
+ event_action = _ref.event_action,
107619
+ element = _ref.element,
107620
+ trigger_type = _ref.trigger_type,
107621
+ customFields = eventFactory_objectWithoutProperties(_ref, eventFactory_excluded);
107622
+ var config = VB_EVENT_CONFIG[event_action] || VB_EVENT_CONFIG.view;
107623
+ var eventList = eventFactory_objectSpread({
107624
+ component_name: component_name,
107625
+ element: element || config.element,
107626
+ trigger_type: trigger_type || config.trigger_type,
107627
+ event: event,
107628
+ event_category: config.event_category,
107629
+ event_action: event_action
107630
+ }, customFields);
107631
+ pushDataLayerEvent(eventList);
107632
+ return eventList;
107633
+ };
107634
+ ;// ./src/components/gtm-tracker/GTMTracker.styled.js
107635
+
107636
+ function GTMTracker_styled_EMOTION_STRINGIFIED_CSS_ERROR_() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
107637
+ var GTMTrackerRoot = /*#__PURE__*/createStyled("div", true ? {
107638
+ target: "e191ba190"
107639
+ } : 0)( true ? {
107640
+ name: "13udsys",
107641
+ styles: "height:100%"
107642
+ } : 0);
107643
+ ;// ./src/components/gtm-tracker/GTMTracker.jsx
107644
+ function GTMTracker_typeof(o) { "@babel/helpers - typeof"; return GTMTracker_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, GTMTracker_typeof(o); }
107645
+ function GTMTracker_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
107646
+ function GTMTracker_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? GTMTracker_ownKeys(Object(t), !0).forEach(function (r) { GTMTracker_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : GTMTracker_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
107647
+ function GTMTracker_defineProperty(e, r, t) { return (r = GTMTracker_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
107648
+ function GTMTracker_toPropertyKey(t) { var i = GTMTracker_toPrimitive(t, "string"); return "symbol" == GTMTracker_typeof(i) ? i : i + ""; }
107649
+ function GTMTracker_toPrimitive(t, r) { if ("object" != GTMTracker_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != GTMTracker_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
107650
+
107651
+
107652
+
107653
+
107654
+
107354
107655
  var isServer = typeof window === "undefined";
107656
+
107657
+ /** Stable reference — default `customFields = {}` in params creates a new object every render. */
107658
+ var EMPTY_CUSTOM_FIELDS = {};
107659
+ function pageNameFromPathname(pathname) {
107660
+ var parts = String(pathname || "").split("/").filter(Boolean);
107661
+ if (parts.length <= 2) {
107662
+ return "";
107663
+ }
107664
+ return parts.slice(2).join("/");
107665
+ }
107666
+ var GTMTracker = function GTMTracker(_ref) {
107667
+ var componentName = _ref.componentName,
107668
+ impressionEvent = _ref.impressionEvent,
107669
+ impressionElement = _ref.impressionElement,
107670
+ impressionTriggerType = _ref.impressionTriggerType,
107671
+ clickEvent = _ref.clickEvent,
107672
+ clickElement = _ref.clickElement,
107673
+ clickTriggerType = _ref.clickTriggerType,
107674
+ _ref$clickSelector = _ref.clickSelector,
107675
+ clickSelector = _ref$clickSelector === void 0 ? "a" : _ref$clickSelector,
107676
+ _ref$clickEventAction = _ref.clickEventAction,
107677
+ clickEventAction = _ref$clickEventAction === void 0 ? "click" : _ref$clickEventAction,
107678
+ customFields = _ref.customFields,
107679
+ children = _ref.children;
107680
+ // On the server, just render children — tracking is client-only.
107681
+ if (isServer) {
107682
+ return /*#__PURE__*/(0,jsx_runtime_.jsx)(GTMTrackerRoot, {
107683
+ children: children
107684
+ });
107685
+ }
107686
+ return /*#__PURE__*/(0,jsx_runtime_.jsx)(GTMTrackerClient, {
107687
+ componentName: componentName,
107688
+ impressionEvent: impressionEvent,
107689
+ impressionElement: impressionElement,
107690
+ impressionTriggerType: impressionTriggerType,
107691
+ clickEvent: clickEvent,
107692
+ clickElement: clickElement,
107693
+ clickTriggerType: clickTriggerType,
107694
+ clickSelector: clickSelector,
107695
+ clickEventAction: clickEventAction,
107696
+ customFields: customFields !== null && customFields !== void 0 ? customFields : EMPTY_CUSTOM_FIELDS,
107697
+ children: children
107698
+ });
107699
+ };
107700
+
107701
+ // Client-only component with hooks (useRef, useEffect, useLocation)
107702
+ function GTMTrackerClient(_ref2) {
107703
+ var componentName = _ref2.componentName,
107704
+ impressionEvent = _ref2.impressionEvent,
107705
+ impressionElement = _ref2.impressionElement,
107706
+ impressionTriggerType = _ref2.impressionTriggerType,
107707
+ clickEvent = _ref2.clickEvent,
107708
+ clickElement = _ref2.clickElement,
107709
+ clickTriggerType = _ref2.clickTriggerType,
107710
+ clickSelector = _ref2.clickSelector,
107711
+ clickEventAction = _ref2.clickEventAction,
107712
+ customFields = _ref2.customFields,
107713
+ children = _ref2.children;
107714
+ var componentRef = (0,external_react_.useRef)(null);
107715
+ var impressionTrackedRef = (0,external_react_.useRef)(false);
107716
+ var pageName = pageNameFromPathname(typeof window !== "undefined" ? window.location.pathname : "");
107717
+ (0,external_react_.useEffect)(function () {
107718
+ if (!impressionEvent) return;
107719
+ var observer = new IntersectionObserver(function (entries) {
107720
+ entries.forEach(function (entry) {
107721
+ if (entry.isIntersecting && !impressionTrackedRef.current) {
107722
+ impressionTrackedRef.current = true;
107723
+ trackVisualBuilderEvent(GTMTracker_objectSpread(GTMTracker_objectSpread(GTMTracker_objectSpread({
107724
+ component_name: componentName,
107725
+ event: impressionEvent,
107726
+ event_action: "view",
107727
+ page_name: pageName
107728
+ }, impressionElement && {
107729
+ element: impressionElement
107730
+ }), impressionTriggerType && {
107731
+ trigger_type: impressionTriggerType
107732
+ }), customFields));
107733
+ }
107734
+ });
107735
+ }, {
107736
+ threshold: 0.1
107737
+ });
107738
+ var el = componentRef.current;
107739
+ if (el) {
107740
+ observer.observe(el);
107741
+ }
107742
+ return function () {
107743
+ if (el) {
107744
+ observer.unobserve(el);
107745
+ }
107746
+ };
107747
+ }, [componentName, impressionEvent, customFields, pageName, impressionElement, impressionTriggerType]);
107748
+ (0,external_react_.useEffect)(function () {
107749
+ if (!clickEvent) return;
107750
+ var el = componentRef.current;
107751
+ if (!el) return;
107752
+ var handleClick = function handleClick(e) {
107753
+ var target = e.target.closest(clickSelector);
107754
+ if (target) {
107755
+ trackVisualBuilderEvent(GTMTracker_objectSpread(GTMTracker_objectSpread(GTMTracker_objectSpread({
107756
+ component_name: componentName,
107757
+ event: clickEvent,
107758
+ event_action: clickEventAction,
107759
+ page_name: pageName
107760
+ }, clickElement && {
107761
+ element: clickElement
107762
+ }), clickTriggerType && {
107763
+ trigger_type: clickTriggerType
107764
+ }), customFields));
107765
+ }
107766
+ };
107767
+ el.addEventListener("click", handleClick, true);
107768
+ return function () {
107769
+ return el.removeEventListener("click", handleClick, true);
107770
+ };
107771
+ }, [componentName, clickEvent, clickElement, clickTriggerType, clickSelector, clickEventAction, customFields, pageName]);
107772
+ return /*#__PURE__*/(0,jsx_runtime_.jsx)(GTMTrackerRoot, {
107773
+ ref: componentRef,
107774
+ children: children
107775
+ });
107776
+ }
107777
+ GTMTracker.propTypes = {
107778
+ componentName: external_prop_types_["default"].string.isRequired,
107779
+ impressionEvent: external_prop_types_["default"].string,
107780
+ impressionElement: external_prop_types_["default"].string,
107781
+ impressionTriggerType: external_prop_types_["default"].string,
107782
+ clickEvent: external_prop_types_["default"].string,
107783
+ clickElement: external_prop_types_["default"].string,
107784
+ clickTriggerType: external_prop_types_["default"].string,
107785
+ clickSelector: external_prop_types_["default"].string,
107786
+ clickEventAction: external_prop_types_["default"].string,
107787
+ customFields: external_prop_types_["default"].object,
107788
+ children: external_prop_types_["default"].node.isRequired
107789
+ };
107790
+ GTMTrackerClient.propTypes = GTMTracker.propTypes;
107791
+ /* harmony default export */ const gtm_tracker_GTMTracker = (GTMTracker);
107792
+ ;// ./src/utils/common.js
107793
+ function common_typeof(o) { "@babel/helpers - typeof"; return common_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, common_typeof(o); }
107794
+ function common_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
107795
+ function common_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? common_ownKeys(Object(t), !0).forEach(function (r) { common_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : common_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
107796
+ function common_defineProperty(e, r, t) { return (r = common_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
107797
+ function common_toPropertyKey(t) { var i = common_toPrimitive(t, "string"); return "symbol" == common_typeof(i) ? i : i + ""; }
107798
+ function common_toPrimitive(t, r) { if ("object" != common_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != common_typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
107799
+ function common_slicedToArray(r, e) { return common_arrayWithHoles(r) || common_iterableToArrayLimit(r, e) || common_unsupportedIterableToArray(r, e) || common_nonIterableRest(); }
107800
+ function common_nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
107801
+ function common_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return common_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? common_arrayLikeToArray(r, a) : void 0; } }
107802
+ function common_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
107803
+ function common_iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
107804
+ function common_arrayWithHoles(r) { if (Array.isArray(r)) return r; }
107805
+
107806
+
107807
+
107808
+
107809
+ var common_isServer = typeof window === "undefined";
107810
+ var hasLocalePrefix = function hasLocalePrefix(path) {
107811
+ return /^\/[a-z]{2}\/[a-z]{2}(\/|$)/i.test(path);
107812
+ };
107813
+ var isProtocolRelativeUrl = function isProtocolRelativeUrl(value) {
107814
+ return /^\/\/[^/]/.test(value);
107815
+ };
107816
+ var isAbsoluteHttpUrl = function isAbsoluteHttpUrl(value) {
107817
+ return /^https?:\/\//i.test(value);
107818
+ };
107819
+ var isPlainDomain = function isPlainDomain(value) {
107820
+ return /^(?:www\.)?[a-z0-9-]+\.[a-z]{2,}(\/.*)?$/i.test(value) && !value.startsWith("/");
107821
+ };
107822
+ function replaceLocalePlaceholders(value, country, language) {
107823
+ return value.replaceAll(/\{%\s*region\s*}/gi, country).replaceAll(/\{%\s*language\s*}/gi, language).replaceAll(/%7B%\s*region\s*%7D/gi, country).replaceAll(/%7B%\s*language\s*%7D/gi, language);
107824
+ }
107825
+ function buildNuSkinUrl(params) {
107826
+ var url = params.url,
107827
+ current = params.current,
107828
+ localizedBase = params.localizedBase,
107829
+ country = params.country,
107830
+ language = params.language;
107831
+ var normalizedOrigin = "".concat(current.protocol, "//").concat(current.host);
107832
+ var pathname = replaceLocalePlaceholders(url.pathname, country, language);
107833
+ if (hasLocalePrefix(pathname)) {
107834
+ return "".concat(normalizedOrigin).concat(pathname).concat(url.search).concat(url.hash);
107835
+ }
107836
+ return "".concat(localizedBase).concat(pathname).concat(url.search).concat(url.hash);
107837
+ }
107838
+ function needsLocaleRewrite(url) {
107839
+ var isMainWebsiteHost = url.host === "nuskin.com" || url.host === "www.nuskin.com";
107840
+ var hasPlaceholders = /\{%\s*(region|language)\s*\}/i.test(url.pathname);
107841
+ return isMainWebsiteHost || hasLocalePrefix(url.pathname) || hasPlaceholders;
107842
+ }
107843
+ function resolveNuSkinUrl(params) {
107844
+ var url = params.url,
107845
+ fallback = params.fallback,
107846
+ current = params.current,
107847
+ localizedBase = params.localizedBase,
107848
+ country = params.country,
107849
+ language = params.language;
107850
+ return needsLocaleRewrite(url) ? buildNuSkinUrl({
107851
+ url: url,
107852
+ current: current,
107853
+ localizedBase: localizedBase,
107854
+ country: country,
107855
+ language: language
107856
+ }) : fallback;
107857
+ }
107858
+ function resolveExternalOrAbsoluteUrl(params) {
107859
+ var trimmedUrl = params.trimmedUrl,
107860
+ current = params.current,
107861
+ localizedBase = params.localizedBase,
107862
+ country = params.country,
107863
+ language = params.language,
107864
+ isNuSkinDomain = params.isNuSkinDomain;
107865
+ if (isProtocolRelativeUrl(trimmedUrl)) {
107866
+ var url = new URL("https:".concat(trimmedUrl));
107867
+ var fallback = "https:".concat(trimmedUrl);
107868
+ return isNuSkinDomain(url.host) ? resolveNuSkinUrl({
107869
+ url: url,
107870
+ fallback: fallback,
107871
+ current: current,
107872
+ localizedBase: localizedBase,
107873
+ country: country,
107874
+ language: language
107875
+ }) : fallback;
107876
+ }
107877
+ if (isAbsoluteHttpUrl(trimmedUrl)) {
107878
+ var _url = new URL(trimmedUrl);
107879
+ return isNuSkinDomain(_url.host) ? resolveNuSkinUrl({
107880
+ url: _url,
107881
+ fallback: trimmedUrl,
107882
+ current: current,
107883
+ localizedBase: localizedBase,
107884
+ country: country,
107885
+ language: language
107886
+ }) : trimmedUrl;
107887
+ }
107888
+ if (isPlainDomain(trimmedUrl)) {
107889
+ return "https://".concat(trimmedUrl);
107890
+ }
107891
+ return undefined;
107892
+ }
107893
+ function buildLocalizedRelativeUrl(params) {
107894
+ var trimmedUrl = params.trimmedUrl,
107895
+ country = params.country,
107896
+ language = params.language,
107897
+ localizedBase = params.localizedBase;
107898
+ var hadTrailingSlash = trimmedUrl.endsWith("/");
107899
+ var relativeUrl = trimmedUrl.replace(/^\.[a-z]{2,}/i, "");
107900
+ relativeUrl = replaceLocalePlaceholders(relativeUrl, country, language);
107901
+ if (hasLocalePrefix(relativeUrl)) {
107902
+ relativeUrl = relativeUrl.replace(/^\/[a-z]{2}\/[a-z]{2}/i, "");
107903
+ }
107904
+ relativeUrl = relativeUrl.replace(/^\/+/, "/");
107905
+ if (!relativeUrl.startsWith("/")) {
107906
+ relativeUrl = "/".concat(relativeUrl);
107907
+ }
107908
+ if (relativeUrl === "/" || relativeUrl === "") {
107909
+ return hadTrailingSlash ? "".concat(localizedBase, "/") : localizedBase;
107910
+ }
107911
+ return "".concat(localizedBase).concat(relativeUrl);
107912
+ }
107913
+ var convertToLocalizedUrl = function convertToLocalizedUrl(inputUrl) {
107914
+ var _globalThis$window$lo, _globalThis$window;
107915
+ if (!inputUrl) return inputUrl;
107916
+ var trimmedUrl = inputUrl.trim();
107917
+
107918
+ // During SSR, window is undefined. renderAndExtractContext sets __ssrLocationHref__
107919
+ // (synchronously, no race condition) so we can still produce fully-qualified URLs.
107920
+ var locationHref = (_globalThis$window$lo = (_globalThis$window = globalThis.window) === null || _globalThis$window === void 0 || (_globalThis$window = _globalThis$window.location) === null || _globalThis$window === void 0 ? void 0 : _globalThis$window.href) !== null && _globalThis$window$lo !== void 0 ? _globalThis$window$lo : globalThis.__ssrLocationHref__;
107921
+ if (locationHref == null) {
107922
+ return trimmedUrl;
107923
+ }
107924
+ var current = new URL(locationHref);
107925
+ var _current$pathname$spl = current.pathname.split("/"),
107926
+ _current$pathname$spl2 = common_slicedToArray(_current$pathname$spl, 3),
107927
+ country = _current$pathname$spl2[1],
107928
+ language = _current$pathname$spl2[2];
107929
+ if (!country || !language) return trimmedUrl;
107930
+ var localizedBase = "".concat(current.protocol, "//").concat(current.host, "/").concat(country, "/").concat(language);
107931
+ var isNuSkinDomain = function isNuSkinDomain(host) {
107932
+ return host === current.host || host.endsWith(".nuskin.com") || host === "nuskin.com";
107933
+ };
107934
+ var resolvedUrl = resolveExternalOrAbsoluteUrl({
107935
+ trimmedUrl: trimmedUrl,
107936
+ current: current,
107937
+ localizedBase: localizedBase,
107938
+ country: country,
107939
+ language: language,
107940
+ isNuSkinDomain: isNuSkinDomain
107941
+ });
107942
+ if (resolvedUrl !== undefined) {
107943
+ return resolvedUrl;
107944
+ }
107945
+ return buildLocalizedRelativeUrl({
107946
+ trimmedUrl: trimmedUrl,
107947
+ country: country,
107948
+ language: language,
107949
+ localizedBase: localizedBase
107950
+ });
107951
+ };
107952
+ var withTracking = function withTracking(component) {
107953
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
107954
+ var componentType = options.componentType;
107955
+ var trackingConfig = GTM_TRACKING_CONFIG[componentType];
107956
+ if (!trackingConfig) {
107957
+ return component;
107958
+ }
107959
+ return /*#__PURE__*/(0,jsx_runtime_.jsx)(gtm_tracker_GTMTracker, common_objectSpread(common_objectSpread({}, trackingConfig), {}, {
107960
+ children: component
107961
+ }));
107962
+ };
107355
107963
  ;// ./src/components/top-ribbon/types.js
107356
107964
 
107357
107965
  var NavigationLinkPropTypes = external_prop_types_["default"].shape({
107358
107966
  label: external_prop_types_["default"].string.isRequired,
107359
107967
  url: external_prop_types_["default"].string.isRequired,
107360
- ariaLabel: external_prop_types_["default"].string,
107361
- dataTestId: external_prop_types_["default"].string,
107968
+ show: external_prop_types_["default"].bool,
107362
107969
  gtmEvent: external_prop_types_["default"].object
107363
107970
  });
107971
+ var TopRibbonEntryPropTypes = external_prop_types_["default"].shape({
107972
+ show_top_ribbon: external_prop_types_["default"].bool.isRequired,
107973
+ links: external_prop_types_["default"].arrayOf(NavigationLinkPropTypes)
107974
+ });
107364
107975
  var TopRibbonPropTypes = {
107365
- links: external_prop_types_["default"].arrayOf(NavigationLinkPropTypes).isRequired,
107976
+ links: external_prop_types_["default"].arrayOf(TopRibbonEntryPropTypes).isRequired,
107366
107977
  className: external_prop_types_["default"].string,
107367
107978
  ariaLabel: external_prop_types_["default"].string,
107368
107979
  dataTestId: external_prop_types_["default"].string
107369
107980
  };
107370
- ;// ./src/components/top-ribbon/TopRibbon.styled.jsx
107981
+ ;// ./src/components/top-ribbon/TopRibbon.styled.js
107371
107982
 
107372
107983
  function TopRibbon_styled_EMOTION_STRINGIFIED_CSS_ERROR_() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
107373
107984
  // Main container for the top ribbon navigation
107374
107985
  var StyledTopRibbon = /*#__PURE__*/createStyled("header", true ? {
107375
- target: "ei9etl03"
107986
+ target: "ec2gm7w3"
107376
107987
  } : 0)( true ? {
107377
107988
  name: "ah54qx",
107378
107989
  styles: "background-color:#000000;width:100%;position:relative;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;&::-webkit-scrollbar{display:none;}&:focus-within{outline:none;}"
@@ -107380,7 +107991,7 @@ var StyledTopRibbon = /*#__PURE__*/createStyled("header", true ? {
107380
107991
 
107381
107992
  // Navigation list container
107382
107993
  var StyledNavigationList = /*#__PURE__*/createStyled("ul", true ? {
107383
- target: "ei9etl02"
107994
+ target: "ec2gm7w2"
107384
107995
  } : 0)( true ? {
107385
107996
  name: "m78rlq",
107386
107997
  styles: "margin:0 auto;padding:0;list-style:none;display:flex;align-items:center;justify-content:center;gap:24px;padding:10px 24px;min-width:100%;width:max-content;box-sizing:border-box"
@@ -107388,15 +107999,15 @@ var StyledNavigationList = /*#__PURE__*/createStyled("ul", true ? {
107388
107999
 
107389
108000
  // Individual navigation item container
107390
108001
  var StyledNavigationItem = /*#__PURE__*/createStyled("li", true ? {
107391
- target: "ei9etl01"
107392
- } : 0)( true ? {
107393
- name: "qy80on",
107394
- styles: "margin:0;padding:0;flex-shrink:0;position:relative"
107395
- } : 0);
108002
+ target: "ec2gm7w1"
108003
+ } : 0)("margin:0;padding:0;flex-shrink:0;position:relative;", function (_ref) {
108004
+ var $editing = _ref.$editing;
108005
+ return $editing && "\n padding-right: 24px;\n padding-left: 24px;\n ";
108006
+ }, ";" + ( true ? "" : 0));
107396
108007
 
107397
108008
  // Navigation link with hover effects
107398
108009
  var StyledNavigationLink = /*#__PURE__*/createStyled("a", true ? {
107399
- target: "ei9etl00"
108010
+ target: "ec2gm7w0"
107400
108011
  } : 0)( true ? {
107401
108012
  name: "1pvnuug",
107402
108013
  styles: "display:inline-block;padding:0;cursor:pointer;color:#ffffff;font-family:\"Inter\",-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,sans-serif;font-size:14px;font-weight:400;line-height:20px;text-align:center;white-space:nowrap;text-decoration:underline;text-decoration-style:solid;text-decoration-color:transparent;transition:text-decoration-color 0.2s ease,background-color 0.2s ease;position:relative;&:hover{color:#ffffff;text-decoration-color:#ffffff;}&:focus-visible{outline:2px solid #ffffff;outline-offset:2px;background-color:rgba(255, 255, 255, 0.1);text-decoration-color:#ffffff;}&:focus:not(:focus-visible){outline:none;background-color:transparent;}&:active{background-color:rgba(255, 255, 255, 0.05);}@media (prefers-contrast: high){&:focus-visible{outline-color:currentColor;}}"
@@ -107413,6 +108024,7 @@ function TopRibbon_toPrimitive(t, r) { if ("object" != TopRibbon_typeof(t) || !t
107413
108024
 
107414
108025
 
107415
108026
 
108027
+
107416
108028
  /**
107417
108029
  * TopRibbon Navigation Component
107418
108030
  *
@@ -107430,17 +108042,27 @@ function TopRibbon_toPrimitive(t, r) { if ("object" != TopRibbon_typeof(t) || !t
107430
108042
  */
107431
108043
 
107432
108044
  var TopRibbon = function TopRibbon(_ref) {
108045
+ var _ribbonData$$;
107433
108046
  var links = _ref.links,
107434
108047
  _ref$className = _ref.className,
107435
- className = _ref$className === void 0 ? '' : _ref$className,
108048
+ className = _ref$className === void 0 ? "" : _ref$className,
107436
108049
  _ref$ariaLabel = _ref.ariaLabel,
107437
- ariaLabel = _ref$ariaLabel === void 0 ? 'Top navigation' : _ref$ariaLabel,
108050
+ ariaLabel = _ref$ariaLabel === void 0 ? "Top navigation" : _ref$ariaLabel,
107438
108051
  _ref$dataTestId = _ref.dataTestId,
107439
- dataTestId = _ref$dataTestId === void 0 ? 'top-ribbon-nav' : _ref$dataTestId;
108052
+ dataTestId = _ref$dataTestId === void 0 ? "top-ribbon-nav" : _ref$dataTestId;
107440
108053
  // Validate required props — safe to call in SSR
107441
108054
  if (!links || !Array.isArray(links) || links.length === 0) {
107442
108055
  return null;
107443
108056
  }
108057
+ var ribbonData = links[0];
108058
+ if (!(ribbonData !== null && ribbonData !== void 0 && ribbonData.show_top_ribbon)) {
108059
+ return null;
108060
+ }
108061
+ var navLinks = ribbonData.links;
108062
+ if (!navLinks || !Array.isArray(navLinks) || navLinks.length === 0) {
108063
+ return null;
108064
+ }
108065
+ var editing = isEditingMode();
107444
108066
 
107445
108067
  /**
107446
108068
  * Fires a GTM dataLayer event when a link is clicked.
@@ -107450,9 +108072,9 @@ var TopRibbon = function TopRibbon(_ref) {
107450
108072
  * @param {Object} item - The navigation item that was clicked
107451
108073
  */
107452
108074
  var handleClick = function handleClick(item) {
107453
- if (typeof window === 'undefined' || !Array.isArray(window.dataLayer)) return;
108075
+ if (typeof window === "undefined" || !Array.isArray(window.dataLayer)) return;
107454
108076
  window.dataLayer.push(TopRibbon_objectSpread({
107455
- event: 'top_ribbon_click',
108077
+ event: "top_ribbon_click",
107456
108078
  link_text: item.label,
107457
108079
  link_url: item.url
107458
108080
  }, item.gtmEvent));
@@ -107464,20 +108086,26 @@ var TopRibbon = function TopRibbon(_ref) {
107464
108086
  "aria-label": ariaLabel,
107465
108087
  role: "navigation",
107466
108088
  "data-testid": "".concat(dataTestId, "-nav"),
107467
- children: /*#__PURE__*/(0,jsx_runtime_.jsx)(StyledNavigationList, {
107468
- "data-testid": "".concat(dataTestId, "-list"),
107469
- children: links.map(function (item, index) {
107470
- if (!item || TopRibbon_typeof(item) !== 'object') return null;
108089
+ children: /*#__PURE__*/(0,jsx_runtime_.jsx)(StyledNavigationList, TopRibbon_objectSpread(TopRibbon_objectSpread({
108090
+ "data-testid": "".concat(dataTestId, "-list")
108091
+ }, editing ? TopRibbon_objectSpread(TopRibbon_objectSpread({}, (_ribbonData$$ = ribbonData.$) === null || _ribbonData$$ === void 0 ? void 0 : _ribbonData$$.links), {}, {
108092
+ "data-add-direction": "horizontal"
108093
+ }) : null), {}, {
108094
+ children: navLinks.map(function (item, index) {
108095
+ var _ribbonData$top_ribbo, _ribbonData$$2, _item$$;
108096
+ if (!item || TopRibbon_typeof(item) !== "object") return null;
107471
108097
  var label = item.label,
107472
108098
  url = item.url,
107473
- itemAriaLabel = item.ariaLabel,
107474
- itemTestId = item.dataTestId;
108099
+ show = item.show;
108100
+ if (show === false) return null;
107475
108101
  if (!label || !url) return null;
107476
- var linkHref = validateUrl(url);
107477
- var linkAriaLabel = itemAriaLabel || "Navigate to ".concat(label);
107478
- var linkTestId = itemTestId || "".concat(dataTestId, "-item-").concat(index);
107479
- return /*#__PURE__*/(0,jsx_runtime_.jsx)(StyledNavigationItem, {
108102
+ var linkHref = convertToLocalizedUrl(url);
108103
+ var linkAriaLabel = "".concat((_ribbonData$top_ribbo = ribbonData.top_ribbon_item_aria_label) !== null && _ribbonData$top_ribbo !== void 0 ? _ribbonData$top_ribbo : "Navigate to", " ").concat(label);
108104
+ var linkTestId = "".concat(dataTestId, "-item-").concat(index);
108105
+ return /*#__PURE__*/(0,jsx_runtime_.jsx)(StyledNavigationItem, TopRibbon_objectSpread(TopRibbon_objectSpread({
107480
108106
  "data-testid": "".concat(linkTestId, "-container"),
108107
+ $editing: editing
108108
+ }, editing ? (_ribbonData$$2 = ribbonData.$) === null || _ribbonData$$2 === void 0 ? void 0 : _ribbonData$$2["links__".concat(index)] : null), {}, {
107481
108109
  children: /*#__PURE__*/(0,jsx_runtime_.jsx)(StyledNavigationLink, {
107482
108110
  href: linkHref,
107483
108111
  target: "_blank",
@@ -107487,11 +108115,13 @@ var TopRibbon = function TopRibbon(_ref) {
107487
108115
  },
107488
108116
  "aria-label": linkAriaLabel,
107489
108117
  "data-testid": linkTestId,
107490
- children: label
108118
+ children: /*#__PURE__*/(0,jsx_runtime_.jsx)("span", TopRibbon_objectSpread(TopRibbon_objectSpread({}, editing ? (_item$$ = item.$) === null || _item$$ === void 0 ? void 0 : _item$$.label : null), {}, {
108119
+ children: label
108120
+ }))
107491
108121
  })
107492
- }, "nav-item-".concat(index, "-").concat(label));
108122
+ }), "nav-item-".concat(index, "-").concat(label));
107493
108123
  })
107494
- })
108124
+ }))
107495
108125
  })
107496
108126
  });
107497
108127
  };
@@ -109990,6 +110620,7 @@ function HeaderView_arrayWithHoles(r) { if (Array.isArray(r)) return r; }
109990
110620
 
109991
110621
 
109992
110622
 
110623
+
109993
110624
  var DEFAULT_LOGO = {
109994
110625
  wordmark: "NU SKIN",
109995
110626
  home_href: "/",
@@ -110006,10 +110637,6 @@ var DEFAULT_MARKET_SELECTOR = {
110006
110637
  cancel_text: "Cancel",
110007
110638
  control_label: DEFAULT_LOCALE.control_label
110008
110639
  };
110009
- var DEFAULT_LOYALTY = {
110010
- link_label: "Nu Skin Rewards",
110011
- href: "/rewards"
110012
- };
110013
110640
  var DEFAULT_ACCOUNT = {
110014
110641
  show: true,
110015
110642
  icon: "userOutline",
@@ -110023,39 +110650,16 @@ var DEFAULT_ACCOUNT = {
110023
110650
  url: ""
110024
110651
  }
110025
110652
  };
110653
+ var DEFAULT_LOYALTY = {
110654
+ label: "Nu Skin Rewards",
110655
+ url: "/rewards",
110656
+ open_in_new_tab: true,
110657
+ show: true
110658
+ };
110026
110659
  var DEFAULT_CART = {
110027
110660
  aria_label: "Shopping cart",
110028
110661
  count: 0
110029
110662
  };
110030
- var DEFAULT_TOP_RIBBON_LINKS = [{
110031
- label: "Hair",
110032
- url: "/hair",
110033
- ariaLabel: "Shop Hair"
110034
- }, {
110035
- label: "Skin",
110036
- url: "/skin",
110037
- ariaLabel: "Shop Skin"
110038
- }, {
110039
- label: "Body",
110040
- url: "/body",
110041
- ariaLabel: "Shop Body"
110042
- }, {
110043
- label: "Fragrance",
110044
- url: "/fragrance",
110045
- ariaLabel: "Shop Fragrance"
110046
- }, {
110047
- label: "Beauty Bio",
110048
- url: "/beauty-bio",
110049
- ariaLabel: "Shop Beauty Bio"
110050
- }, {
110051
- label: "Accessories",
110052
- url: "/accessories",
110053
- ariaLabel: "Shop Accessories"
110054
- }, {
110055
- label: "Gifts",
110056
- url: "/gifts",
110057
- ariaLabel: "Shop Gifts"
110058
- }];
110059
110663
  function firstDefined() {
110060
110664
  for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
110061
110665
  values[_key] = arguments[_key];
@@ -110132,14 +110736,27 @@ function buildAccountParentTags(_ref2) {
110132
110736
  sign_in_url: pickTag("sign_in_url")
110133
110737
  };
110134
110738
  }
110135
- function HeaderView(_ref3) {
110136
- var _headerEntry$logo, _headerEntry$locale_s, _utilityLinksEntry$lo, _utilityLinksEntry$lo2, _headerEntry$cart, _storefrontParams$car, _headerEntry$top_ribb, _headerEntry$market_s, _headerEntry$translat, _headerEntry$translat2, _headerEntry$$, _ref4, _headerEntry$locale, _headerEntry$$2, _headerEntry$$3;
110137
- var country = _ref3.country,
110138
- language = _ref3.language,
110139
- locale = _ref3.locale,
110140
- headerEntry = _ref3.headerEntry,
110141
- searchConfig = _ref3.searchConfig,
110142
- storefrontParams = _ref3.storefrontParams;
110739
+ function LoyaltyComponent(_ref3) {
110740
+ var data = _ref3.data;
110741
+ var show = normalizeShowFlag(data === null || data === void 0 ? void 0 : data.show, true);
110742
+ if (!show) return null;
110743
+ return withTracking(/*#__PURE__*/(0,jsx_runtime_.jsx)(HeaderLoyaltyRegion, {
110744
+ data: data
110745
+ }), {
110746
+ componentType: "loyalty"
110747
+ });
110748
+ }
110749
+ LoyaltyComponent.propTypes = {
110750
+ data: external_prop_types_["default"].object
110751
+ };
110752
+ function HeaderView(_ref4) {
110753
+ var _headerEntry$logo, _headerEntry$locale_s, _utilityLinksEntry$lo, _utilityLinksEntry$lo2, _headerEntry$cart, _storefrontParams$car, _headerEntry$$, _headerEntry$top_ribb, _headerEntry$market_s, _headerEntry$translat, _headerEntry$translat2, _topRibbon$top_ribbon, _headerEntry$$2, _ref5, _headerEntry$locale, _headerEntry$$3, _headerEntry$$4;
110754
+ var country = _ref4.country,
110755
+ language = _ref4.language,
110756
+ locale = _ref4.locale,
110757
+ headerEntry = _ref4.headerEntry,
110758
+ searchConfig = _ref4.searchConfig,
110759
+ storefrontParams = _ref4.storefrontParams;
110143
110760
  var _useState = (0,external_react_.useState)(false),
110144
110761
  _useState2 = HeaderView_slicedToArray(_useState, 2),
110145
110762
  isMobileMenuOpen = _useState2[0],
@@ -110166,7 +110783,8 @@ function HeaderView(_ref3) {
110166
110783
  var cartData = HeaderView_objectSpread(HeaderView_objectSpread({}, (_headerEntry$cart = headerEntry === null || headerEntry === void 0 ? void 0 : headerEntry.cart) !== null && _headerEntry$cart !== void 0 ? _headerEntry$cart : DEFAULT_CART), {}, {
110167
110784
  item_count: (_storefrontParams$car = storefrontParams === null || storefrontParams === void 0 ? void 0 : storefrontParams.cartCount) !== null && _storefrontParams$car !== void 0 ? _storefrontParams$car : 0
110168
110785
  });
110169
- var topRibbonLinks = (_headerEntry$top_ribb = headerEntry === null || headerEntry === void 0 ? void 0 : headerEntry.top_ribbon_links) !== null && _headerEntry$top_ribb !== void 0 ? _headerEntry$top_ribb : DEFAULT_TOP_RIBBON_LINKS;
110786
+ var $ = (_headerEntry$$ = headerEntry === null || headerEntry === void 0 ? void 0 : headerEntry.$) !== null && _headerEntry$$ !== void 0 ? _headerEntry$$ : {};
110787
+ var topRibbon = (_headerEntry$top_ribb = headerEntry === null || headerEntry === void 0 ? void 0 : headerEntry.top_ribbon) !== null && _headerEntry$top_ribb !== void 0 ? _headerEntry$top_ribb : null;
110170
110788
  var navigationData = headerEntry === null || headerEntry === void 0 ? void 0 : headerEntry.top_navigation;
110171
110789
  var marketSelector = (_headerEntry$market_s = headerEntry === null || headerEntry === void 0 ? void 0 : headerEntry.market_selector) !== null && _headerEntry$market_s !== void 0 ? _headerEntry$market_s : DEFAULT_MARKET_SELECTOR;
110172
110790
  var translations = (_headerEntry$translat = headerEntry === null || headerEntry === void 0 || (_headerEntry$translat2 = headerEntry.translations) === null || _headerEntry$translat2 === void 0 ? void 0 : _headerEntry$translat2[0]) !== null && _headerEntry$translat !== void 0 ? _headerEntry$translat : null;
@@ -110175,11 +110793,13 @@ function HeaderView(_ref3) {
110175
110793
  "data-country": country,
110176
110794
  "data-language": language,
110177
110795
  "data-locale": locale,
110178
- children: [/*#__PURE__*/(0,jsx_runtime_.jsx)(top_ribbon_TopRibbon, {
110179
- links: topRibbonLinks,
110180
- ariaLabel: "Top navigation",
110181
- dataTestId: "header-top-ribbon"
110182
- }), /*#__PURE__*/(0,jsx_runtime_.jsxs)(TopHeaderRow, {
110796
+ children: [(topRibbon === null || topRibbon === void 0 ? void 0 : topRibbon.show_top_ribbon) && /*#__PURE__*/(0,jsx_runtime_.jsx)("div", HeaderView_objectSpread(HeaderView_objectSpread(HeaderView_objectSpread({}, ($ === null || $ === void 0 ? void 0 : $.top_ribbon) || {}), ($ === null || $ === void 0 ? void 0 : $.top_ribbon__parent) || {}), {}, {
110797
+ children: /*#__PURE__*/(0,jsx_runtime_.jsx)(top_ribbon_TopRibbon, {
110798
+ links: [topRibbon],
110799
+ ariaLabel: (_topRibbon$top_ribbon = topRibbon.top_ribbon_aria_label) !== null && _topRibbon$top_ribbon !== void 0 ? _topRibbon$top_ribbon : "Top Ribbon",
110800
+ dataTestId: "header-top-ribbon"
110801
+ })
110802
+ })), /*#__PURE__*/(0,jsx_runtime_.jsxs)(TopHeaderRow, {
110183
110803
  children: [/*#__PURE__*/(0,jsx_runtime_.jsx)(MobileMenuButton, {
110184
110804
  onClick: function onClick() {
110185
110805
  return setIsMobileMenuOpen(true);
@@ -110208,7 +110828,7 @@ function HeaderView(_ref3) {
110208
110828
  showDesktopTrigger: false
110209
110829
  }), /*#__PURE__*/(0,jsx_runtime_.jsx)(HeaderCartRegion, {
110210
110830
  data: cartData,
110211
- parent$: headerEntry === null || headerEntry === void 0 || (_headerEntry$$ = headerEntry.$) === null || _headerEntry$$ === void 0 ? void 0 : _headerEntry$$.cart
110831
+ parent$: headerEntry === null || headerEntry === void 0 || (_headerEntry$$2 = headerEntry.$) === null || _headerEntry$$2 === void 0 ? void 0 : _headerEntry$$2.cart
110212
110832
  })]
110213
110833
  }), /*#__PURE__*/(0,jsx_runtime_.jsx)(RightHeaderCluster, {
110214
110834
  children: /*#__PURE__*/(0,jsx_runtime_.jsxs)(UtilityBar, {
@@ -110216,19 +110836,19 @@ function HeaderView(_ref3) {
110216
110836
  children: [/*#__PURE__*/(0,jsx_runtime_.jsx)(MarketSelector, {
110217
110837
  data: marketSelector,
110218
110838
  logo: logoData,
110219
- locale: String((_ref4 = (_headerEntry$locale = headerEntry === null || headerEntry === void 0 ? void 0 : headerEntry.locale) !== null && _headerEntry$locale !== void 0 ? _headerEntry$locale : locale) !== null && _ref4 !== void 0 ? _ref4 : "").trim(),
110220
- parent$: headerEntry === null || headerEntry === void 0 || (_headerEntry$$2 = headerEntry.$) === null || _headerEntry$$2 === void 0 ? void 0 : _headerEntry$$2.market_selector__0,
110839
+ locale: String((_ref5 = (_headerEntry$locale = headerEntry === null || headerEntry === void 0 ? void 0 : headerEntry.locale) !== null && _headerEntry$locale !== void 0 ? _headerEntry$locale : locale) !== null && _ref5 !== void 0 ? _ref5 : "").trim(),
110840
+ parent$: headerEntry === null || headerEntry === void 0 || (_headerEntry$$3 = headerEntry.$) === null || _headerEntry$$3 === void 0 ? void 0 : _headerEntry$$3.market_selector__0,
110221
110841
  mobileTriggerMode: "drawerPortal",
110222
110842
  drawerOpen: isMobileMenuOpen,
110223
110843
  drawerTriggerMountRef: mobileMarketTriggerMountRef
110224
- }), /*#__PURE__*/(0,jsx_runtime_.jsx)(HeaderLoyaltyRegion, {
110844
+ }), /*#__PURE__*/(0,jsx_runtime_.jsx)(LoyaltyComponent, {
110225
110845
  data: loyaltyData
110226
110846
  }), /*#__PURE__*/(0,jsx_runtime_.jsx)(HeaderAccountRegion, {
110227
110847
  data: accountData,
110228
110848
  parent$: accountParentTags
110229
110849
  }), /*#__PURE__*/(0,jsx_runtime_.jsx)(HeaderCartRegion, {
110230
110850
  data: cartData,
110231
- parent$: headerEntry === null || headerEntry === void 0 || (_headerEntry$$3 = headerEntry.$) === null || _headerEntry$$3 === void 0 ? void 0 : _headerEntry$$3.cart
110851
+ parent$: headerEntry === null || headerEntry === void 0 || (_headerEntry$$4 = headerEntry.$) === null || _headerEntry$$4 === void 0 ? void 0 : _headerEntry$$4.cart
110232
110852
  })]
110233
110853
  })
110234
110854
  })]