@cshah18/sdk 4.9.0 → 4.11.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.
@@ -1326,7 +1326,7 @@ var CoBuySDK = (function (exports) {
1326
1326
  el.style.opacity = disabled ? "0.5" : "1";
1327
1327
  el.style.cursor = disabled ? "not-allowed" : "pointer";
1328
1328
  el.setAttribute("aria-disabled", disabled ? "true" : "false");
1329
- if (typeof el.disabled !== "undefined") {
1329
+ if (el.disabled !== undefined) {
1330
1330
  el.disabled = disabled;
1331
1331
  }
1332
1332
  });
@@ -1356,7 +1356,7 @@ var CoBuySDK = (function (exports) {
1356
1356
  createGroupCard(group) {
1357
1357
  const card = document.createElement("div");
1358
1358
  card.className = "cobuy-group-card";
1359
- card.setAttribute("data-group-id", group.name || group.groupId);
1359
+ card.dataset.groupId = group.name || group.groupId;
1360
1360
  const header = document.createElement("div");
1361
1361
  header.className = "cobuy-group-card-header";
1362
1362
  const groupId = document.createElement("div");
@@ -2082,12 +2082,42 @@ var CoBuySDK = (function (exports) {
2082
2082
  }
2083
2083
  }
2084
2084
 
2085
+ function styleInject(css, ref) {
2086
+ if ( ref === void 0 ) ref = {};
2087
+ var insertAt = ref.insertAt;
2088
+
2089
+ if (typeof document === 'undefined') { return; }
2090
+
2091
+ var head = document.head || document.getElementsByTagName('head')[0];
2092
+ var style = document.createElement('style');
2093
+ style.type = 'text/css';
2094
+
2095
+ if (insertAt === 'top') {
2096
+ if (head.firstChild) {
2097
+ head.insertBefore(style, head.firstChild);
2098
+ } else {
2099
+ head.appendChild(style);
2100
+ }
2101
+ } else {
2102
+ head.appendChild(style);
2103
+ }
2104
+
2105
+ if (style.styleSheet) {
2106
+ style.styleSheet.cssText = css;
2107
+ } else {
2108
+ style.appendChild(document.createTextNode(css));
2109
+ }
2110
+ }
2111
+
2112
+ var css_248z = ".sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.cb-lobby-modal-container{height:100%;left:0;overflow-y:auto!important;position:fixed;top:0;width:100%;z-index:10000}.cb-lobby-modal-container *{box-sizing:border-box;margin:0;padding:0}.cb-lobby-modal-container body,.cb-lobby-modal-container html{font-family:Inter,sans-serif;height:100%;overflow-x:hidden;width:100%}.cb-lobby-main{backdrop-filter:blur(4px);background-color:color-mix(in oklab,#fff 5%,transparent);border-radius:50px;box-shadow:0 25px 50px -12px #00000040;padding:80px;position:relative;width:100%;z-index:1}.cb-lobby-bg{background-image:url(https://cobuy-dev.s3.af-south-1.amazonaws.com/public/sdk/cb-back-image.png);background-position:50%;background-repeat:no-repeat;background-size:cover;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:-1}.cb-lobby-main-wp{align-items:center;display:flex;justify-content:center;padding:40px 80px}.lobby-indicator{align-items:center;backdrop-filter:blur(8px);background:rgba(16,185,129,.1);border:1px solid rgba(16,185,129,.3);border-radius:24px;display:flex;gap:12px;margin-bottom:16px;padding:6px 12px;width:fit-content}.lobby-indicator-logo{display:block;flex-shrink:0;height:34px;width:auto}.pulsing-dot{align-items:center;display:flex;height:8px;justify-content:center;position:relative;width:8px}.pulsing-dot:after{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.pulsing-dot:after,.pulsing-dot:before{background:#10b981;border-radius:50%;content:\"\";height:100%;position:absolute;width:100%}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.indicator-text{color:#047857;font-size:11px;font-weight:800;letter-spacing:.5px;line-height:1;text-transform:uppercase}.lobby-status-section{display:flex;flex-direction:column;margin-bottom:24px}.lobby-status{background:#fff;border-radius:4px;color:#000;font-size:10px;font-weight:600;line-height:1.2;padding:6px 10px;text-transform:uppercase}.lobby-status.active{background:#155dfc;color:#fff}.lobby-status.complete{background:#10b981;color:#fff}.lobby-status-wp{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.lobby-number{backdrop-filter:blur(3px);background:hsla(0,0%,100%,.2);border-radius:4px;box-shadow:0 25px 50px -12px #00000040;font-size:12px;font-weight:700;letter-spacing:1px;line-height:1.2;padding:5px 8px;text-transform:uppercase}.title-wp{margin-top:25px}.title-wp h2{font-size:60px;font-weight:900;line-height:1;margin-bottom:15px}.sub-title{-webkit-text-fill-color:transparent;animation:gradient-flow 4s linear infinite;background-clip:text;-webkit-background-clip:text;background-image:linear-gradient(90deg,#1e293b,#2563eb 25%,#1e293b 50%);background-size:200% auto;color:#1e293b;font-size:16px;font-weight:700;line-height:1.5;margin-bottom:0}@keyframes gradient-flow{0%{background-position:200% 0}to{background-position:-200% 0}}.sub-title.completed{-webkit-text-fill-color:unset;background-clip:unset;-webkit-background-clip:unset;background-image:none;color:#1e293b}.connected-section{backdrop-filter:blur(4px);background:hsla(0,0%,100%,.05);border:1px solid hsla(0,0%,100%,.1);border-radius:24px;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);display:flex;flex-direction:column;gap:20px;margin-top:24px;padding:24px;transition:all .3s ease}.connected-section:hover{background:hsla(0,0%,100%,.1);box-shadow:0 2px 4px 0 rgba(0,0,0,.08)}.link-share-container{display:flex;flex-direction:column}.link-share-wrapper{align-items:center;display:flex;gap:12px;width:100%}.lobby-link-box{align-items:center;backdrop-filter:blur(8px);background-color:hsla(0,0%,100%,.4);border:1px solid hsla(0,0%,100%,.3);border-radius:14px;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);display:flex;flex:1;gap:16px;justify-content:space-between;min-height:50px;padding:16px 20px;transition:all .2s ease}.lobby-link-box:hover{background-color:hsla(0,0%,100%,.5);box-shadow:0 2px 4px 0 rgba(0,0,0,.08)}.lobby-link-text{color:#71717a;font-size:10px;font-weight:700;letter-spacing:.6px;line-height:1.2;margin-bottom:6px;text-transform:uppercase}.copy-link-btn{align-items:center;background:transparent;border:none;border-radius:6px;color:#64748b;cursor:pointer;display:flex;flex-shrink:0;font-size:13px;font-weight:600;gap:6px;justify-content:center;padding:0;transition:all .2s ease;white-space:nowrap}.copy-link-btn:hover{color:#1e293b}.copy-link-btn .copy-text{display:none}.copy-link-btn svg{flex-shrink:0;height:18px;width:18px}@media (min-width:640px){.copy-link-btn .copy-text{display:inline}}.lobby-link-url{color:#1e293b;font-size:15px;font-weight:700;line-height:1.4;word-break:break-all}.link-box-container{flex:1;min-width:0}.share-btn{align-items:center;background:#1e293b;border:none;border-radius:14px;box-shadow:0 2px 4px 0 rgba(0,0,0,.1);color:#fff;cursor:pointer;display:flex;flex-shrink:0;font-size:15px;font-weight:600;gap:8px;height:50px;justify-content:center;min-width:auto;padding:35px 24px;transition:all .2s ease}.share-btn .share-text{color:#fff;display:inline;font-size:18px;margin:0!important}.share-btn svg{color:#fff;flex-shrink:0;height:18px;width:18px}@media (max-width:640px){.share-btn{font-size:14px;height:50px;padding:0 18px}.share-btn .share-text{color:#fff;display:inline}}.share-btn:hover{background:#0f172a;box-shadow:0 4px 8px 0 rgba(0,0,0,.15);transform:translateY(-1px)}.share-btn:active{transform:scale(.95)}.lobby-offer-box{align-items:center;backdrop-filter:blur(8px);background-color:rgba(59,130,246,.063);border:1px solid rgba(59,130,246,.125);border-radius:1rem;display:flex;gap:30px;margin-top:30px;padding:15px 20px}.offer-box-icon{align-items:center;background:linear-gradient(135deg,#3b82f6,rgba(59,130,246,.867));border-radius:10px;box-shadow:0 10px 15px -3px rgba(59,130,246,.314);color:#fff;cursor:pointer;display:flex;height:56px;justify-content:center;padding:5px;width:56px}.offer-lock-status{align-items:center;display:flex;gap:6px;margin-bottom:2px}.offer-lock-status span{font-size:14px;font-weight:700;line-height:1}.offer-box-content h3{font-size:30px;font-weight:900;line-height:1.2}.cb-lobby-top{display:grid;gap:100px;grid-template-columns:7fr 5fr}.group-info{backdrop-filter:blur(8px);background-color:color-mix(in oklab,#fff 5%,transparent);border-radius:20px;box-shadow:0 10px 15px -3px #0000001a;padding:30px}.progress-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:14px}.progress-header .title{align-items:center;color:#000;display:flex;font-size:14px;font-weight:900;justify-content:center;letter-spacing:.7px;position:relative}.progress-badge{background:#3b82f6;border-radius:999px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;color:#fff;font-size:13px;font-weight:700;padding:6px 12px}.cb-lobby-modal-container .progress-bar{background:#fff;border-radius:999px;height:14px;overflow:hidden;width:100%}.cb-lobby-modal-container .progress-fill{animation:shimmer 2.7s linear infinite;background:#3b82f6;background-image:linear-gradient(120deg,hsla(0,0%,100%,.15) 25%,hsla(0,0%,100%,.45) 37%,hsla(0,0%,100%,.15) 63%);background-size:200% 100%;border-radius:999px;height:100%;position:relative;transition:width .6s ease;width:0}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.progress-labels{color:#474d56;display:flex;font-size:12px;justify-content:space-between;margin-top:8px}.team-card{margin-top:40px}.team-card .icon-box svg{width:16px}.team-card .team-header{align-items:center;display:flex;justify-content:space-between}.team-card .team-title{align-items:center;display:flex;font-size:14px;font-weight:600;gap:12px;letter-spacing:1px}.team-card .icon-box{align-items:center;background-color:#3b82f6;border-radius:.5rem;box-shadow:0 10px 15px -3px #3b82f64d;color:#fff;display:flex;font-size:18px;height:2rem;justify-content:center;width:2rem}.team-card .team-title span{color:#000;font-size:14px;font-weight:900;letter-spacing:.7px}.team-card .team-count{background-color:#3b82f6;border-radius:9999px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;color:#fff;font-size:13px;font-weight:700;letter-spacing:.7px;padding:6px 12px}.team-card .team-members{align-items:center;display:flex;gap:14px;justify-content:center;margin-top:20px}.team-card .member{border:3px solid #fff;border-radius:50%;box-shadow:0 4px 12px #0000001a;font-size:22px;height:56px;position:relative;width:56px}.team-card .member,.team-card .member:after{align-items:center;color:#fff;display:flex;justify-content:center}.team-card .member:after{background:#3b82f6;background-image:url(https://cobuy-dev.s3.af-south-1.amazonaws.com/public/sdk/tick-mark-icon.svg);background-position:50%;background-repeat:no-repeat;background-size:75%;border:2px solid #fff;border-radius:50%;bottom:-4px;content:\"\";height:12px;padding:2px;position:absolute;right:-4px;width:12px}.team-card .member.blue{background:#2563eb}.team-card .member.purple{background:#9333ea}.team-card .member.pink{background:#ec4899}.team-card .member.orange{background:#f97316}.team-card .member.empty{background:#f8fafc;color:#9ca3af}.team-card .member.empty:after{display:none}.time-card{align-items:center;backdrop-filter:blur(8px);background:hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.2);border-radius:20px;display:flex;gap:14px;margin-top:30px;padding:15px}.time-card .time-icon{align-items:center;background:#3b82f6;border-radius:14px;color:#fff;display:flex;flex-shrink:0;font-size:22px;height:48px;justify-content:center;width:48px}.time-card .time-content{display:flex;flex-direction:column}.time-card .time-label{color:#4b5563;font-size:12px;font-weight:600;letter-spacing:.6px}.time-card .time-value{color:#111827;font-size:22px;font-weight:900}.group-info-box{backdrop-filter:blur(8px);background:color-mix(in oklab,#fff 5%,transparent);border:1px solid color-mix(in oklab,#fff 20%,transparent);border-radius:1.5rem;box-shadow:0 10px 15px -3px #0000001a;padding:30px}.offer-lock-status svg{height:16px;width:16px}.cb-lobby-modal-container .offer-box-content .reward-text{background:unset;border:none;color:#000;font-size:14px;line-height:1;margin-top:4px}.progress-header .title:before{background:#3b82f6;border-radius:50%;content:\"\";display:inline-block;height:8px;margin-right:8px;position:relative;width:8px}.live-activity-wrapper{backdrop-filter:blur(8px);background-color:color-mix(in oklab,#fff 80%,transparent);border-radius:18px;box-shadow:0 30px 80px rgba(0,0,0,.15);padding:16px}.live-activity-header{display:flex;gap:10px;justify-content:space-between;margin-bottom:12px}.live-activity-header .title{align-items:center;color:#000;display:flex;font-size:14px;font-weight:900;gap:8px;letter-spacing:.7px}.live-activity-header .dot{background:#3b82f6;border-radius:50%;height:8px;position:relative;width:8px}.live-activity-header .dot:after{animation:livePulse 1.6s ease-out infinite;background:rgba(59,130,246,.6);border-radius:50%;content:\"\";inset:0;position:absolute}@keyframes livePulse{0%{opacity:.8;transform:scale(1)}70%{opacity:0;transform:scale(2.4)}to{opacity:0}}.activity-stats{align-items:center;display:flex;gap:8px}.activity-stats-badge{background-color:rgba(59,130,246,.082);border-radius:999px;color:#3b82f6;font-size:12px;font-weight:500;line-height:1;padding:4px 10px}.activity-stats-badge.light{background-color:#f9f3f4;color:#45556c}.activity-list{height:104px;overflow:hidden;position:relative}.activity-card{align-items:center;background:linear-gradient(90deg,#fff,#f2f6ff);border:1px solid #dbeafe;border-radius:14px;display:flex;gap:10px;height:58px;inset:0;padding:12px 10px;position:absolute;transition:transform .6s cubic-bezier(.22,.61,.36,1),opacity .6s}.activity-card .text{font-size:14px}.activity-card .avatar{align-items:center;border-radius:50%;color:#fff;display:flex;flex:0 0 30px;height:30px;justify-content:center;width:30px}.activity-card .pink{background:linear-gradient(135deg,#ec4899,#f472b6)}.activity-card .purple{background:linear-gradient(135deg,#8b5cf6,#a78bfa)}.activity-card .blue{background:linear-gradient(135deg,#3b82f6,#60a5fa)}.activity-card .green{background:linear-gradient(135deg,#10b981,#34d399)}.activity-card .orange{background:linear-gradient(135deg,#f97316,#fb923c)}.activity-card .text p{color:#6b7280;font-size:12px;margin:2px 0 0}.activity-card .time{color:#94a3b8;font-size:10px;margin-left:auto}.lobby-activity-wp{backdrop-filter:blur(12px);background-color:hsla(0,0%,100%,.4);border:1px solid hsla(0,0%,100%,.2);border-radius:25px;box-shadow:0 1px 3px 0 #0000001a;margin-top:50px;padding:8px}.lobby-close-icon{align-items:center;background-color:color-mix(in oklab,#000 80%,transparent);border-radius:50%;color:#fff;cursor:pointer;display:flex;height:34px;justify-content:center;position:fixed;right:30px;top:30px;width:34px;z-index:99}.lobby-close-icon svg{height:20px;width:20px}@media screen and (max-width:1600px){.cb-lobby-main{border-radius:30px;padding:50px}.title-wp h2{font-size:48px;margin-bottom:12px}.sub-title{font-size:16px}.title-wp{margin-top:20px}.lobby-link-section{margin-top:30px}.offer-box-content h3{font-size:26px}.lobby-offer-box{gap:24px;padding:15px}.cb-lobby-top{gap:80px}.group-info-box{border-radius:20px;padding:22px}.team-card{margin-top:30px}.team-card .team-members{margin-top:12px}.lobby-activity-wp{margin-top:40px}.lobby-close-icon{height:30px;top:20px;width:30px}}@media screen and (max-width:1280px){.cb-lobby-main,.cb-lobby-main-wp{padding:40px}.title-wp h2{font-size:42px}.cb-lobby-top{gap:60px}}@media screen and (max-width:1120px){.title-wp h2{font-size:38px}}@media screen and (max-width:991px){.cb-lobby-top{gap:30px;grid-template-columns:1fr}.cb-lobby-main{border-radius:15px;padding:30px}.cb-lobby-main-wp{padding:30px}.lobby-close-icon{right:20px}.lobby-link-box{border-radius:10px}.share-btn{border-radius:8px}.offer-box-content h3{font-size:24px}.lobby-activity-wp,.lobby-offer-box,.time-card{border-radius:15px;margin-top:20px}.live-activity-wrapper{border-radius:10px}.group-info-box{border-radius:15px}}@media screen and (max-width:767px){.link-share-wrapper{flex-direction:column!important}}@media screen and (max-width:575px){.cb-lobby-main,.cb-lobby-main-wp{padding:20px}.title-wp h2{font-size:30px}.lobby-link-text{font-size:11px;margin-bottom:4px}.lobby-link-url{font-size:14px}.lobby-link-box{min-height:48px;padding:12px 16px}.link-share-wrapper{gap:10px}.share-btn{border-radius:8px;font-size:13px;height:48px;min-width:auto;padding:0 14px}.lobby-offer-box{padding:10px}.offer-box-content h3{font-size:20px}.offer-box-content .reward-text{font-size:13px}.group-info-box{padding:13px}.progress-header .title,.team-card .team-title span{font-size:13px}.team-card .member{height:40px;width:40px}.team-card .member:after{height:8px;width:8px}.team-card .team-members{gap:10px;margin-top:12px}.time-card{padding:13px}.team-card{margin-top:22px}.activity-card .text{font-size:12px}.activity-card .text p{font-size:11px}.live-activity-header .title{font-size:12px}.time-card .time-value{font-size:20px}}@media screen and (max-width:480px){.cb-lobby-main-wp{padding:20px 12px}.cb-lobby-main{padding:15px 12px}.lobby-status{font-size:9px}.lobby-number{font-size:10px}.title-wp h2{font-size:28px;margin-bottom:7px}.sub-title{font-size:14px}.lobby-link-section{gap:10px;margin-top:20px}.lobby-offer-box{gap:12px}.offer-box-icon{height:45px;width:45px}.offer-box-content .reward-text,.offer-lock-status span{font-size:12px}.cb-lobby-top{gap:20px}.lobby-close-icon{right:10px;top:10px}.live-activity-header{flex-direction:column;gap:5px}.activity-card{border-radius:9px;padding:6px}}.share-overlay{align-items:center;background:rgba(0,0,0,.45);display:flex;inset:0;justify-content:center;opacity:0;position:fixed;transition:.3s ease;visibility:hidden;z-index:999}.share-overlay.active{opacity:1;visibility:visible}.share-popup{background:#fff;border-radius:18px;max-height:90%;overflow:auto;padding:24px;position:relative;transform:translateY(30px);transition:.35s ease;width:420px}.share-overlay.active .share-popup{transform:translateY(0)}.share-popup .close-btn{align-items:center;background:#f3f4f6;border:none;border-radius:50%;cursor:pointer;display:flex;height:32px;justify-content:center;position:absolute;right:14px;top:14px;transition:.3s;width:32px}.share-popup .close-btn:hover{background:#eeecec}.share-popup h2{font-size:22px;font-weight:600;line-height:1;margin-bottom:10px}.share-popup .subtitle{color:#4a5565;font-size:14px;margin:6px 0 30px}.share-popup .share-grid{display:grid;gap:14px;grid-template-columns:repeat(2,1fr)}.share-popup .share-card{align-items:center;background:#f2f6f9;border-radius:14px;cursor:pointer;display:flex;flex-direction:column;padding:16px;position:relative;text-align:center;transition:.25s ease}.share-popup .share-card:hover{transform:translateY(-3px)}.share-popup .share-card .icon{align-items:center;background:#1877f2;border-radius:50%;color:#fff;display:flex;font-size:30px;height:50px;justify-content:center;margin-bottom:8px;text-align:center;width:50px}.share-popup .share-card span{font-size:13px;font-weight:500}.share-popup .share-card.whatsapp{background:#ecfdf5;border:2px solid #22c55e;color:#22c55e}.share-popup .share-card.whatsapp .icon{background:#22c55e}.share-popup .share-card .badge{background:#2563eb;border-radius:12px;color:#fff;font-size:11px;padding:4px 10px;position:absolute;right:10px;top:-8px}.share-popup .link-box{background:#fbf9fa;border:1px solid #ebe6e7;border-radius:14px;margin-top:18px;padding:14px}.share-popup .link-box label{color:#64748b;font-size:13px}.share-popup .link-row{display:flex;gap:8px;margin-top:6px}.share-popup .link-row input{background:transparent;border:none;color:#334155;flex:1;font-size:13px;letter-spacing:.8px;line-height:1.2;outline:none}.share-popup .link-row button{align-items:center;background:#fff;border:1px solid #ebe6e7;border-radius:10px;cursor:pointer;display:flex;height:35px;justify-content:center;padding:6px 8px;width:35px}.share-popup .success{color:#2563eb;display:block;font-size:12px;margin-top:6px;opacity:0;transition:opacity .3s}.share-popup .success.show{opacity:1}.share-popup .footer-text{color:#64748b;font-size:12px;margin-top:14px;text-align:center}.share-popup .share-card.twitter .icon{background:#000}.share-popup .share-card.facebook .icon{background:#1877f2}.share-popup .share-card.sms .icon{background:#059669}.share-popup .share-card.copied .icon{background:#2563eb}@keyframes entrance-fade-in{0%{opacity:0}to{opacity:1}}@keyframes entrance-scale-in{0%{opacity:0;transform:scale(.9) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes entrance-text-fade-in{0%{opacity:0}to{opacity:1}}@keyframes exit-blur-scale{0%{filter:blur(0);opacity:1;transform:scale(1)}to{filter:blur(10px);opacity:0;transform:scale(1.1)}}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.5}}.entrance-animation-overlay{align-items:center;animation:entrance-fade-in .8s ease-in-out forwards;background-color:#0f172a;color:#fff;display:flex;flex-direction:column;inset:0;justify-content:center;position:fixed;z-index:9999}.entrance-animation-overlay.exit{animation:exit-blur-scale .8s ease-in-out forwards}.entrance-content{align-items:center;animation:entrance-scale-in .5s ease-out .2s both;display:flex;flex-direction:column}.entrance-icon-box{align-items:center;background:#2563eb;border-radius:16px;box-shadow:0 10px 25px rgba(37,99,235,.2);display:flex;height:64px;justify-content:center;margin-bottom:24px;width:64px}.entrance-icon-box svg{color:#fff;height:32px;width:32px}.entrance-title{font-size:32px;font-weight:700;letter-spacing:-.5px;margin-bottom:12px}@media (min-width:768px){.entrance-title{font-size:48px}}.entrance-message{align-items:center;animation:entrance-text-fade-in .5s ease-out .5s both;color:#60a5fa;display:flex;font-size:18px;font-weight:500;gap:8px}.entrance-pulse-dot{animation:pulse-dot 1.5s ease-in-out infinite;background-color:#60a5fa;border-radius:50%;height:8px;width:8px}";
2113
+ styleInject(css_248z);
2114
+
2085
2115
  /// <reference lib="dom" />
2086
2116
  /**
2087
2117
  * LobbyModal - Renders and manages the group buying lobby modal
2088
2118
  */
2089
2119
  class LobbyModal {
2090
- constructor(data, callbacks, apiClient, analyticsClient, socketManager = null, debug = false) {
2120
+ constructor(data, callbacks, apiClient, socketManager = null, debug = false) {
2091
2121
  this.modalElement = null;
2092
2122
  this.timerInterval = null;
2093
2123
  this.activityInterval = null;
@@ -2096,21 +2126,6 @@ var CoBuySDK = (function (exports) {
2096
2126
  this.currentGroupId = null;
2097
2127
  this.shareOverlay = null;
2098
2128
  this.keyboardHandler = null;
2099
- /**
2100
- * Unsubscribe from socket events - testing out flow will remove once we have conviction
2101
- */
2102
- // private unsubscribeFromSocketEvents(): void {
2103
- // if (typeof window === "undefined" || !this.socketListenerRegistered) {
2104
- // return;
2105
- // }
2106
- // window.removeEventListener("group:fulfilled", this.handleSocketGroupUpdate as EventListener);
2107
- // window.removeEventListener(
2108
- // "group:member:joined",
2109
- // this.handleSocketGroupUpdate as EventListener,
2110
- // );
2111
- // window.removeEventListener("group:created", this.handleSocketGroupUpdate as EventListener);
2112
- // this.socketListenerRegistered = false;
2113
- // }
2114
2129
  /**
2115
2130
  * Handle socket group update events
2116
2131
  */
@@ -2201,7 +2216,6 @@ var CoBuySDK = (function (exports) {
2201
2216
  };
2202
2217
  this.logger = new Logger(debug);
2203
2218
  this.apiClient = apiClient;
2204
- this.analyticsClient = analyticsClient;
2205
2219
  this.socketManager = socketManager;
2206
2220
  // Log the group data being passed into the modal
2207
2221
  this.logger.info("LobbyModal initialized with group data", {
@@ -2248,7 +2262,7 @@ var CoBuySDK = (function (exports) {
2248
2262
  getTitleText(data) {
2249
2263
  var _a, _b;
2250
2264
  const remainingRaw = ((_a = data.totalMembers) !== null && _a !== void 0 ? _a : 0) - ((_b = data.currentMembers) !== null && _b !== void 0 ? _b : 0);
2251
- const remaining = remainingRaw > 0 ? remainingRaw : 0;
2265
+ const remaining = Math.max(0, remainingRaw);
2252
2266
  const unlocked = !this.computeIsLocked(data);
2253
2267
  if (unlocked) {
2254
2268
  return {
@@ -2376,7 +2390,7 @@ var CoBuySDK = (function (exports) {
2376
2390
  createModalStructure() {
2377
2391
  const modal = document.createElement("div");
2378
2392
  modal.className = "cb-lobby-modal-container";
2379
- modal.setAttribute("data-product-id", this.data.productId);
2393
+ modal.dataset.productId = this.data.productId;
2380
2394
  // Background
2381
2395
  const background = document.createElement("div");
2382
2396
  background.className = "cb-lobby-bg";
@@ -2910,1491 +2924,6 @@ var CoBuySDK = (function (exports) {
2910
2924
  `;
2911
2925
  document.head.appendChild(style);
2912
2926
  }
2913
- injectLobbyStyles() {
2914
- // Only inject once per page load
2915
- if (LobbyModal.stylesInjected) {
2916
- return;
2917
- }
2918
- LobbyModal.stylesInjected = true;
2919
- const style = document.createElement("style");
2920
- style.id = "cobuy-lobby-styles";
2921
- style.textContent = `
2922
- /* Screen reader only - hide visually but keep available to AT */
2923
- .sr-only {
2924
- position: absolute;
2925
- width: 1px;
2926
- height: 1px;
2927
- padding: 0;
2928
- margin: -1px;
2929
- overflow: hidden;
2930
- clip: rect(0, 0, 0, 0);
2931
- white-space: nowrap;
2932
- border-width: 0;
2933
- }
2934
-
2935
- .cb-lobby-modal-container {
2936
- position: fixed;
2937
- top: 0;
2938
- left: 0;
2939
- width: 100%;
2940
- height: 100%;
2941
- z-index: 10000;
2942
- }
2943
-
2944
- .cb-lobby-modal-container * {
2945
- margin: 0;
2946
- padding: 0;
2947
- box-sizing: border-box;
2948
- }
2949
-
2950
- .cb-lobby-modal-container html,
2951
- .cb-lobby-modal-container body {
2952
- font-family: "Inter", sans-serif;
2953
- width: 100%;
2954
- height: 100%;
2955
- overflow-x: hidden;
2956
- }
2957
-
2958
- .cb-lobby-main {
2959
- padding: 80px;
2960
- background-color: color-mix(in oklab, #fff 5%, transparent);
2961
- box-shadow: 0 25px 50px -12px #00000040;
2962
- backdrop-filter: blur(4px);
2963
- border-radius: 50px;
2964
- width: 100%;
2965
- position: relative;
2966
- z-index: 1;
2967
- }
2968
-
2969
- .cb-lobby-bg {
2970
- position: fixed;
2971
- top: 0;
2972
- left: 0;
2973
- width: 100vw;
2974
- height: 100vh;
2975
- background-image: url("https://cobuy-dev.s3.af-south-1.amazonaws.com/public/sdk/cb-back-image.png");
2976
- background-size: cover;
2977
- background-position: center;
2978
- background-repeat: no-repeat;
2979
- z-index: -1;
2980
- }
2981
-
2982
- .cb-lobby-main-wp {
2983
- display: flex;
2984
- align-items: center;
2985
- justify-content: center;
2986
- padding: 40px 80px;
2987
- }
2988
-
2989
- .lobby-indicator {
2990
- display: flex;
2991
- align-items: center;
2992
- gap: 12px;
2993
- padding: 6px 12px;
2994
- border-radius: 24px;
2995
- background: rgba(16, 185, 129, 0.1);
2996
- border: 1px solid rgba(16, 185, 129, 0.3);
2997
- backdrop-filter: blur(8px);
2998
- margin-bottom: 16px;
2999
- width: fit-content;
3000
- }
3001
-
3002
- .lobby-indicator-logo {
3003
- height: 34px;
3004
- width: auto;
3005
- display: block;
3006
- flex-shrink: 0;
3007
- }
3008
-
3009
- .pulsing-dot {
3010
- display: flex;
3011
- align-items: center;
3012
- justify-content: center;
3013
- position: relative;
3014
- width: 8px;
3015
- height: 8px;
3016
- }
3017
-
3018
- .pulsing-dot::after {
3019
- content: "";
3020
- position: absolute;
3021
- width: 100%;
3022
- height: 100%;
3023
- border-radius: 50%;
3024
- background: #10b981;
3025
- animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
3026
- }
3027
-
3028
- .pulsing-dot::before {
3029
- content: "";
3030
- position: absolute;
3031
- width: 100%;
3032
- height: 100%;
3033
- border-radius: 50%;
3034
- background: #10b981;
3035
- }
3036
-
3037
- @keyframes pulse {
3038
- 0%, 100% {
3039
- opacity: 1;
3040
- }
3041
- 50% {
3042
- opacity: 0.5;
3043
- }
3044
- }
3045
-
3046
- .indicator-text {
3047
- font-size: 11px;
3048
- font-weight: 800;
3049
- text-transform: uppercase;
3050
- letter-spacing: 0.5px;
3051
- color: #047857;
3052
- line-height: 1;
3053
- }
3054
-
3055
- .lobby-status-section {
3056
- display: flex;
3057
- flex-direction: column;
3058
- margin-bottom: 24px;
3059
- }
3060
-
3061
- .lobby-status {
3062
- font-size: 10px;
3063
- line-height: 1.2;
3064
- font-weight: 600;
3065
- padding: 6px 10px;
3066
- background: #fff;
3067
- border-radius: 4px;
3068
- text-transform: uppercase;
3069
- color: #000;
3070
- }
3071
-
3072
- .lobby-status.active {
3073
- background: #155dfc;
3074
- color: #fff;
3075
- }
3076
-
3077
- .lobby-status.complete {
3078
- background: #10b981;
3079
- color: #fff;
3080
- }
3081
-
3082
- .lobby-status-wp {
3083
- display: flex;
3084
- flex-wrap: wrap;
3085
- align-items: center;
3086
- gap: 10px;
3087
- }
3088
-
3089
- .lobby-number {
3090
- background: rgb(255 255 255 / 20%);
3091
- padding: 5px 8px;
3092
- box-shadow: 0 25px 50px -12px #00000040;
3093
- backdrop-filter: blur(3px);
3094
- border-radius: 4px;
3095
- text-transform: uppercase;
3096
- letter-spacing: 1px;
3097
- font-size: 12px;
3098
- line-height: 1.2;
3099
- font-weight: 700;
3100
- }
3101
-
3102
- .title-wp {
3103
- margin-top: 25px;
3104
- }
3105
-
3106
- .title-wp h2 {
3107
- font-size: 60px;
3108
- line-height: 1;
3109
- margin-bottom: 15px;
3110
- font-weight: 900;
3111
- }
3112
-
3113
- .sub-title {
3114
- font-size: 16px;
3115
- line-height: 1.5;
3116
- margin-bottom: 0;
3117
- color: #1e293b;
3118
- font-weight: 700;
3119
- background-image: linear-gradient(90deg, #1e293b 0%, #2563eb 25%, #1e293b 50%);
3120
- background-size: 200% auto;
3121
- background-clip: text;
3122
- -webkit-background-clip: text;
3123
- -webkit-text-fill-color: transparent;
3124
- animation: gradient-flow 4s linear infinite;
3125
- }
3126
-
3127
- @keyframes gradient-flow {
3128
- 0% {
3129
- background-position: 200% 0;
3130
- }
3131
- 100% {
3132
- background-position: -200% 0;
3133
- }
3134
- }
3135
-
3136
- .sub-title.completed {
3137
- background-image: none;
3138
- -webkit-text-fill-color: unset;
3139
- background-clip: unset;
3140
- -webkit-background-clip: unset;
3141
- color: #1e293b;
3142
- }
3143
-
3144
- .connected-section {
3145
- display: flex;
3146
- flex-direction: column;
3147
- gap: 20px;
3148
- padding: 24px;
3149
- margin-top: 24px;
3150
- border-radius: 24px;
3151
- background: rgba(255, 255, 255, 0.05);
3152
- border: 1px solid rgba(255, 255, 255, 0.1);
3153
- backdrop-filter: blur(4px);
3154
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
3155
- transition: all 0.3s ease;
3156
- }
3157
-
3158
- .connected-section:hover {
3159
- background: rgba(255, 255, 255, 0.1);
3160
- box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08);
3161
- }
3162
-
3163
- .link-share-container {
3164
- display: flex;
3165
- flex-direction: column;
3166
- }
3167
-
3168
- .link-share-wrapper {
3169
- display: flex;
3170
- align-items: center;
3171
- gap: 12px;
3172
- width: 100%;
3173
- }
3174
-
3175
- .lobby-link-box {
3176
- display: flex;
3177
- align-items: center;
3178
- justify-content: space-between;
3179
- gap: 16px;
3180
- padding: 16px 20px;
3181
- border-radius: 14px;
3182
- backdrop-filter: blur(8px);
3183
- background-color: rgb(255 255 255 / 40%);
3184
- border: 1px solid rgb(255 255 255 / 30%);
3185
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
3186
- flex: 1;
3187
- transition: all 0.2s ease;
3188
- min-height: 50px;
3189
- }
3190
-
3191
- .lobby-link-box:hover {
3192
- background-color: rgb(255 255 255 / 50%);
3193
- box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08);
3194
- }
3195
-
3196
- .lobby-link-text {
3197
- font-size: 10px;
3198
- line-height: 1.2;
3199
- font-weight: 700;
3200
- text-transform: uppercase;
3201
- letter-spacing: 0.6px;
3202
- margin-bottom: 6px;
3203
- color: #71717a;
3204
- }
3205
-
3206
- .copy-link-btn {
3207
- padding: 0;
3208
- display: flex;
3209
- align-items: center;
3210
- justify-content: center;
3211
- gap: 6px;
3212
- cursor: pointer;
3213
- color: #64748b;
3214
- background: transparent;
3215
- border: none;
3216
- font-size: 13px;
3217
- font-weight: 600;
3218
- border-radius: 6px;
3219
- transition: all 0.2s ease;
3220
- white-space: nowrap;
3221
- flex-shrink: 0;
3222
- }
3223
-
3224
- .copy-link-btn:hover {
3225
- color: #1e293b;
3226
- }
3227
-
3228
- .copy-link-btn .copy-text {
3229
- display: none;
3230
- }
3231
-
3232
- .copy-link-btn svg {
3233
- width: 18px;
3234
- height: 18px;
3235
- flex-shrink: 0;
3236
- }
3237
-
3238
- @media (min-width: 640px) {
3239
- .copy-link-btn .copy-text {
3240
- display: inline;
3241
- }
3242
- }
3243
-
3244
- .lobby-link-url {
3245
- font-size: 15px;
3246
- line-height: 1.4;
3247
- font-weight: 700;
3248
- color: #1e293b;
3249
- word-break: break-all;
3250
- }
3251
-
3252
- .link-box-container {
3253
- flex: 1;
3254
- min-width: 0;
3255
- }
3256
-
3257
- .share-btn {
3258
- background: #1e293b;
3259
- color: #fff;
3260
- padding: 35px 24px;
3261
- border-radius: 14px;
3262
- height: 50px;
3263
- min-width: auto;
3264
- display: flex;
3265
- align-items: center;
3266
- justify-content: center;
3267
- gap: 8px;
3268
- cursor: pointer;
3269
- border: none;
3270
- font-weight: 600;
3271
- font-size: 15px;
3272
- transition: all 0.2s ease;
3273
- box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.1);
3274
- flex-shrink: 0;
3275
- }
3276
-
3277
- .share-btn .share-text {
3278
- display: inline;
3279
- color: #fff;
3280
- font-size: 15px;
3281
- }
3282
-
3283
- .share-btn svg {
3284
- color: #fff;
3285
- }
3286
-
3287
- @media (max-width: 640px) {
3288
- .share-btn {
3289
- padding: 0 18px;
3290
- font-size: 14px;
3291
- height: 50px;
3292
- }
3293
- .share-btn .share-text {
3294
- display: inline;
3295
- color: #fff;
3296
- }
3297
- }
3298
-
3299
- .share-btn:hover {
3300
- background: #0f172a;
3301
- box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.15);
3302
- transform: translateY(-1px);
3303
- }
3304
-
3305
- .share-btn:active {
3306
- transform: scale(0.95);
3307
- }
3308
-
3309
- .share-btn svg {
3310
- width: 18px;
3311
- height: 18px;
3312
- flex-shrink: 0;
3313
- }
3314
-
3315
- .lobby-offer-box {
3316
- display: flex;
3317
- align-items: center;
3318
- gap: 30px;
3319
- padding: 15px 20px;
3320
- border-radius: 1rem;
3321
- backdrop-filter: blur(8px);
3322
- border: 1px solid rgba(59, 130, 246, 0.125);
3323
- background-color: rgba(59, 130, 246, 0.063);
3324
- margin-top: 30px;
3325
- }
3326
-
3327
- .offer-box-icon {
3328
- background: linear-gradient(135deg, rgb(59, 130, 246), rgba(59, 130, 246, 0.867));
3329
- box-shadow: rgba(59, 130, 246, 0.314) 0px 10px 15px -3px;
3330
- color: #fff;
3331
- padding: 5px;
3332
- border-radius: 10px;
3333
- width: 56px;
3334
- height: 56px;
3335
- display: flex;
3336
- align-items: center;
3337
- justify-content: center;
3338
- cursor: pointer;
3339
- }
3340
-
3341
- .offer-lock-status {
3342
- display: flex;
3343
- align-items: center;
3344
- gap: 6px;
3345
- margin-bottom: 2px;
3346
- }
3347
-
3348
- .offer-lock-status span {
3349
- font-size: 14px;
3350
- line-height: 1;
3351
- font-weight: 700;
3352
- }
3353
-
3354
- .offer-box-content h3 {
3355
- font-size: 30px;
3356
- line-height: 1.2;
3357
- font-weight: 900;
3358
- }
3359
-
3360
- .cb-lobby-top {
3361
- display: grid;
3362
- grid-template-columns: 7fr 5fr;
3363
- gap: 100px;
3364
- }
3365
-
3366
- .group-info {
3367
- background-color: color-mix(in oklab, #fff 5%, transparent);
3368
- backdrop-filter: blur(8px);
3369
- border-radius: 20px;
3370
- padding: 30px;
3371
- box-shadow: 0 10px 15px -3px #0000001a;
3372
- }
3373
-
3374
- .progress-header {
3375
- display: flex;
3376
- justify-content: space-between;
3377
- align-items: center;
3378
- margin-bottom: 14px;
3379
- }
3380
-
3381
- .progress-header .title {
3382
- position: relative;
3383
- display: flex;
3384
- justify-content: center;
3385
- align-items: center;
3386
- font-size: 14px;
3387
- font-weight: 900;
3388
- letter-spacing: 0.7px;
3389
- color: #000;
3390
- }
3391
-
3392
- .progress-badge {
3393
- background: #3b82f6;
3394
- color: #fff;
3395
- font-size: 13px;
3396
- font-weight: 700;
3397
- padding: 6px 12px;
3398
- border-radius: 999px;
3399
- box-shadow: 0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;
3400
- }
3401
-
3402
- .cb-lobby-modal-container .progress-bar {
3403
- width: 100%;
3404
- height: 14px;
3405
- background: #ffffff;
3406
- border-radius: 999px;
3407
- overflow: hidden;
3408
- }
3409
-
3410
- .cb-lobby-modal-container .progress-fill {
3411
- height: 100%;
3412
- width: 0;
3413
- border-radius: 999px;
3414
- position: relative;
3415
- background: #3b82f6;
3416
- background-image: linear-gradient(120deg, rgba(255, 255, 255, 0.15) 25%, rgba(255, 255, 255, 0.45) 37%, rgba(255, 255, 255, 0.15) 63%);
3417
- background-size: 200% 100%;
3418
- animation: shimmer 2.7s infinite linear;
3419
- transition: width 0.6s ease;
3420
- }
3421
-
3422
- @keyframes shimmer {
3423
- 0% {
3424
- background-position: -200% 0;
3425
- }
3426
- 100% {
3427
- background-position: 200% 0;
3428
- }
3429
- }
3430
-
3431
- .progress-labels {
3432
- display: flex;
3433
- justify-content: space-between;
3434
- margin-top: 8px;
3435
- font-size: 12px;
3436
- color: #474d56;
3437
- }
3438
-
3439
- .team-card {
3440
- margin-top: 40px;
3441
- }
3442
-
3443
- .team-card .icon-box svg {
3444
- width: 16px;
3445
- }
3446
-
3447
- .team-card .team-header {
3448
- display: flex;
3449
- justify-content: space-between;
3450
- align-items: center;
3451
- }
3452
-
3453
- .team-card .team-title {
3454
- display: flex;
3455
- align-items: center;
3456
- gap: 12px;
3457
- font-size: 14px;
3458
- font-weight: 600;
3459
- letter-spacing: 1px;
3460
- }
3461
-
3462
- .team-card .icon-box {
3463
- width: 2rem;
3464
- height: 2rem;
3465
- border-radius: 0.5rem;
3466
- display: flex;
3467
- align-items: center;
3468
- justify-content: center;
3469
- font-size: 18px;
3470
- background-color: #3b82f6;
3471
- color: #fff;
3472
- box-shadow: 0 10px 15px -3px #3b82f64d;
3473
- }
3474
-
3475
- .team-card .team-title span {
3476
- font-size: 14px;
3477
- font-weight: 900;
3478
- letter-spacing: 0.7px;
3479
- color: #000;
3480
- }
3481
-
3482
- .team-card .team-count {
3483
- padding: 6px 12px;
3484
- border-radius: 9999px;
3485
- color: #fff;
3486
- font-weight: 700;
3487
- font-size: 13px;
3488
- letter-spacing: 0.7px;
3489
- background-color: #3b82f6;
3490
- box-shadow: 0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;
3491
- }
3492
-
3493
- .team-card .team-members {
3494
- display: flex;
3495
- align-items: center;
3496
- justify-content: center;
3497
- gap: 14px;
3498
- margin-top: 20px;
3499
- }
3500
-
3501
- .team-card .member {
3502
- position: relative;
3503
- width: 56px;
3504
- height: 56px;
3505
- border-radius: 50%;
3506
- display: flex;
3507
- align-items: center;
3508
- justify-content: center;
3509
- font-size: 22px;
3510
- color: #fff;
3511
- border: 3px solid #fff;
3512
- box-shadow: 0 4px 12px #0000001a;
3513
- }
3514
-
3515
- .team-card .member::after {
3516
- content: "";
3517
- position: absolute;
3518
- bottom: -4px;
3519
- right: -4px;
3520
- width: 12px;
3521
- height: 12px;
3522
- background: #3b82f6;
3523
- background-image: url("https://cobuy-dev.s3.af-south-1.amazonaws.com/public/sdk/tick-mark-icon.svg");
3524
- background-size: 75%;
3525
- background-repeat: no-repeat;
3526
- background-position: center;
3527
- color: #fff;
3528
- border-radius: 50%;
3529
- display: flex;
3530
- align-items: center;
3531
- justify-content: center;
3532
- border: 2px solid #fff;
3533
- padding: 2px;
3534
- }
3535
-
3536
- .team-card .member.blue {
3537
- background: #2563eb;
3538
- }
3539
-
3540
- .team-card .member.purple {
3541
- background: #9333ea;
3542
- }
3543
-
3544
- .team-card .member.pink {
3545
- background: #ec4899;
3546
- }
3547
-
3548
- .team-card .member.orange {
3549
- background: #f97316;
3550
- }
3551
-
3552
- .team-card .member.empty {
3553
- background: #f8fafc;
3554
- color: #9ca3af;
3555
- }
3556
-
3557
- .team-card .member.empty::after {
3558
- display: none;
3559
- }
3560
-
3561
- .time-card {
3562
- border-radius: 20px;
3563
- padding: 15px;
3564
- display: flex;
3565
- align-items: center;
3566
- gap: 14px;
3567
- margin-top: 30px;
3568
- background: rgba(255, 255, 255, 0.2);
3569
- border: 1px solid rgba(255, 255, 255, 0.2);
3570
- backdrop-filter: blur(8px);
3571
- }
3572
-
3573
- .time-card .time-icon {
3574
- width: 48px;
3575
- height: 48px;
3576
- background: #3b82f6;
3577
- color: #fff;
3578
- border-radius: 14px;
3579
- display: flex;
3580
- align-items: center;
3581
- justify-content: center;
3582
- font-size: 22px;
3583
- flex-shrink: 0;
3584
- }
3585
-
3586
- .time-card .time-content {
3587
- display: flex;
3588
- flex-direction: column;
3589
- }
3590
-
3591
- .time-card .time-label {
3592
- font-size: 12px;
3593
- font-weight: 600;
3594
- letter-spacing: 0.6px;
3595
- color: #4b5563;
3596
- }
3597
-
3598
- .time-card .time-value {
3599
- font-size: 22px;
3600
- font-weight: 900;
3601
- color: #111827;
3602
- }
3603
-
3604
- .group-info-box {
3605
- background: color-mix(in oklab, #fff 5%, transparent);
3606
- border: 1px solid color-mix(in oklab, #fff 20%, transparent);
3607
- backdrop-filter: blur(8px);
3608
- padding: 30px;
3609
- box-shadow: 0 10px 15px -3px #0000001a;
3610
- border-radius: 1.5rem;
3611
- }
3612
-
3613
- .offer-lock-status svg {
3614
- width: 16px;
3615
- height: 16px;
3616
- }
3617
-
3618
- .cb-lobby-modal-container .offer-box-content .reward-text {
3619
- font-size: 14px;
3620
- line-height: 1;
3621
- margin-top: 4px;
3622
- color: #000;
3623
- background: unset;
3624
- border: none;
3625
- }
3626
-
3627
- .progress-header .title:before {
3628
- content: "";
3629
- position: relative;
3630
- display: inline-block;
3631
- width: 8px;
3632
- height: 8px;
3633
- background: rgb(59, 130, 246);
3634
- border-radius: 50%;
3635
- margin-right: 8px;
3636
- }
3637
-
3638
- .live-activity-wrapper {
3639
- padding: 16px;
3640
- background-color: color-mix(in oklab, #fff 80%, transparent);
3641
- border-radius: 18px;
3642
- box-shadow: 0 30px 80px rgba(0, 0, 0, 0.15);
3643
- backdrop-filter: blur(8px);
3644
- }
3645
-
3646
- .live-activity-header {
3647
- display: flex;
3648
- justify-content: space-between;
3649
- margin-bottom: 12px;
3650
- gap: 10px;
3651
- }
3652
-
3653
- .live-activity-header .title {
3654
- font-weight: 600;
3655
- display: flex;
3656
- align-items: center;
3657
- gap: 8px;
3658
- font-size: 14px;
3659
- font-weight: 900;
3660
- letter-spacing: 0.7px;
3661
- color: #000;
3662
- }
3663
-
3664
- .live-activity-header .dot {
3665
- position: relative;
3666
- width: 8px;
3667
- height: 8px;
3668
- background: #3b82f6;
3669
- border-radius: 50%;
3670
- }
3671
-
3672
- .live-activity-header .dot::after {
3673
- content: "";
3674
- position: absolute;
3675
- inset: 0;
3676
- border-radius: 50%;
3677
- background: rgba(59, 130, 246, 0.6);
3678
- animation: livePulse 1.6s ease-out infinite;
3679
- }
3680
-
3681
- @keyframes livePulse {
3682
- 0% {
3683
- transform: scale(1);
3684
- opacity: 0.8;
3685
- }
3686
- 70% {
3687
- transform: scale(2.4);
3688
- opacity: 0;
3689
- }
3690
- 100% {
3691
- opacity: 0;
3692
- }
3693
- }
3694
-
3695
- .activity-stats {
3696
- display: flex;
3697
- align-items: center;
3698
- gap: 8px;
3699
- }
3700
-
3701
- .activity-stats-badge {
3702
- padding: 4px 10px;
3703
- border-radius: 999px;
3704
- font-size: 12px;
3705
- line-height: 1;
3706
- font-weight: 500;
3707
- background-color: rgba(59, 130, 246, 0.082);
3708
- color: rgb(59, 130, 246);
3709
- }
3710
-
3711
- .activity-stats-badge.light {
3712
- background-color: #f9f3f4;
3713
- color: #45556c;
3714
- }
3715
-
3716
- .activity-list {
3717
- position: relative;
3718
- height: 104px;
3719
- overflow: hidden;
3720
- }
3721
-
3722
- .activity-card {
3723
- position: absolute;
3724
- inset: 0;
3725
- height: 58px;
3726
- display: flex;
3727
- align-items: center;
3728
- gap: 10px;
3729
- padding: 12px 10px;
3730
- background: linear-gradient(90deg, #fff, #f2f6ff);
3731
- border-radius: 14px;
3732
- border: 1px solid #dbeafe;
3733
- transition: transform 600ms cubic-bezier(0.22, 0.61, 0.36, 1), opacity 600ms;
3734
- }
3735
-
3736
- .activity-card .text {
3737
- font-size: 14px;
3738
- }
3739
-
3740
- .activity-card .avatar {
3741
- width: 30px;
3742
- height: 30px;
3743
- border-radius: 50%;
3744
- display: flex;
3745
- align-items: center;
3746
- justify-content: center;
3747
- color: #fff;
3748
- flex: 0 0 30px;
3749
- }
3750
-
3751
- .activity-card .pink {
3752
- background: linear-gradient(135deg, #ec4899, #f472b6);
3753
- }
3754
-
3755
- .activity-card .purple {
3756
- background: linear-gradient(135deg, #8b5cf6, #a78bfa);
3757
- }
3758
-
3759
- .activity-card .blue {
3760
- background: linear-gradient(135deg, #3b82f6, #60a5fa);
3761
- }
3762
-
3763
- .activity-card .green {
3764
- background: linear-gradient(135deg, #10b981, #34d399);
3765
- }
3766
-
3767
- .activity-card .orange {
3768
- background: linear-gradient(135deg, #f97316, #fb923c);
3769
- }
3770
-
3771
- .activity-card .text p {
3772
- margin: 2px 0 0;
3773
- font-size: 12px;
3774
- color: #6b7280;
3775
- }
3776
-
3777
- .activity-card .time {
3778
- margin-left: auto;
3779
- font-size: 10px;
3780
- color: #94a3b8;
3781
- }
3782
-
3783
- .lobby-activity-wp {
3784
- margin-top: 50px;
3785
- padding: 8px;
3786
- border-radius: 25px;
3787
- backdrop-filter: blur(12px);
3788
- background-color: rgb(255 255 255 / 40%);
3789
- border: 1px solid rgb(255 255 255 / 20%);
3790
- box-shadow: 0 1px 3px 0 #0000001a;
3791
- }
3792
-
3793
- .lobby-close-icon {
3794
- position: fixed;
3795
- top: 30px;
3796
- right: 30px;
3797
- display: flex;
3798
- align-items: center;
3799
- justify-content: center;
3800
- background-color: color-mix(in oklab, #000 80%, transparent);
3801
- color: #fff;
3802
- width: 34px;
3803
- height: 34px;
3804
- border-radius: 50%;
3805
- cursor: pointer;
3806
- z-index: 99;
3807
- }
3808
-
3809
- .lobby-close-icon svg {
3810
- width: 20px;
3811
- height: 20px;
3812
- }
3813
-
3814
- @media screen and (max-width: 1600px) {
3815
- .cb-lobby-main {
3816
- padding: 50px;
3817
- border-radius: 30px;
3818
- }
3819
- .title-wp h2 {
3820
- font-size: 48px;
3821
- margin-bottom: 12px;
3822
- }
3823
- .sub-title {
3824
- font-size: 16px;
3825
- }
3826
- .title-wp {
3827
- margin-top: 20px;
3828
- }
3829
- .lobby-link-section {
3830
- margin-top: 30px;
3831
- }
3832
- .offer-box-content h3 {
3833
- font-size: 26px;
3834
- }
3835
- .lobby-offer-box {
3836
- gap: 24px;
3837
- padding: 15px;
3838
- }
3839
- .cb-lobby-top {
3840
- gap: 80px;
3841
- }
3842
- .group-info-box {
3843
- padding: 22px;
3844
- border-radius: 20px;
3845
- }
3846
- .team-card {
3847
- margin-top: 30px;
3848
- }
3849
- .team-card .team-members {
3850
- margin-top: 12px;
3851
- }
3852
- .lobby-activity-wp {
3853
- margin-top: 40px;
3854
- }
3855
- .lobby-close-icon {
3856
- top: 20px;
3857
- width: 30px;
3858
- height: 30px;
3859
- }
3860
- }
3861
-
3862
- @media screen and (max-width: 1280px) {
3863
- .cb-lobby-main-wp {
3864
- padding: 40px;
3865
- }
3866
- .cb-lobby-main {
3867
- padding: 40px;
3868
- }
3869
- .title-wp h2 {
3870
- font-size: 42px;
3871
- }
3872
- .cb-lobby-top {
3873
- gap: 60px;
3874
- }
3875
- }
3876
-
3877
- @media screen and (max-width: 1120px) {
3878
- .title-wp h2 {
3879
- font-size: 38px;
3880
- }
3881
- }
3882
-
3883
- @media screen and (max-width: 991px) {
3884
- .cb-lobby-top {
3885
- grid-template-columns: 1fr;
3886
- gap: 30px;
3887
- }
3888
- .cb-lobby-main {
3889
- padding: 30px;
3890
- border-radius: 15px;
3891
- }
3892
- .cb-lobby-main-wp {
3893
- padding: 30px;
3894
- }
3895
- .lobby-close-icon {
3896
- right: 20px;
3897
- }
3898
- .lobby-link-box {
3899
- border-radius: 10px;
3900
- }
3901
- .share-btn {
3902
- border-radius: 8px;
3903
- }
3904
- .offer-box-content h3 {
3905
- font-size: 24px;
3906
- }
3907
- .lobby-offer-box {
3908
- margin-top: 20px;
3909
- border-radius: 15px;
3910
- }
3911
- .time-card {
3912
- margin-top: 20px;
3913
- border-radius: 15px;
3914
- }
3915
- .lobby-activity-wp {
3916
- margin-top: 20px;
3917
- border-radius: 15px;
3918
- }
3919
- .live-activity-wrapper {
3920
- border-radius: 10px;
3921
- }
3922
- .group-info-box {
3923
- border-radius: 15px;
3924
- }
3925
- }
3926
-
3927
- @media screen and (max-width: 575px) {
3928
- .cb-lobby-main-wp {
3929
- padding: 20px;
3930
- }
3931
- .cb-lobby-main {
3932
- padding: 20px;
3933
- }
3934
- .title-wp h2 {
3935
- font-size: 30px;
3936
- }
3937
- .lobby-link-text {
3938
- font-size: 11px;
3939
- margin-bottom: 4px;
3940
- }
3941
- .lobby-link-url {
3942
- font-size: 14px;
3943
- }
3944
- .lobby-link-box {
3945
- padding: 12px 16px;
3946
- min-height: 48px;
3947
- }
3948
- .link-share-wrapper {
3949
- gap: 10px;
3950
- }
3951
- .share-btn {
3952
- height: 48px;
3953
- min-width: auto;
3954
- border-radius: 8px;
3955
- padding: 0 14px;
3956
- font-size: 13px;
3957
- }
3958
- .lobby-offer-box {
3959
- padding: 10px;
3960
- }
3961
- .offer-box-content h3 {
3962
- font-size: 20px;
3963
- }
3964
- .offer-box-content .reward-text {
3965
- font-size: 13px;
3966
- }
3967
- .group-info-box {
3968
- padding: 13px;
3969
- }
3970
- .progress-header .title {
3971
- font-size: 13px;
3972
- }
3973
- .team-card .team-title span {
3974
- font-size: 13px;
3975
- }
3976
- .team-card .member {
3977
- width: 40px;
3978
- height: 40px;
3979
- }
3980
- .team-card .member::after {
3981
- width: 8px;
3982
- height: 8px;
3983
- }
3984
- .team-card .team-members {
3985
- margin-top: 12px;
3986
- gap: 10px;
3987
- }
3988
- .time-card {
3989
- padding: 13px;
3990
- }
3991
- .team-card {
3992
- margin-top: 22px;
3993
- }
3994
- .activity-card .text {
3995
- font-size: 12px;
3996
- }
3997
- .activity-card .text p {
3998
- font-size: 11px;
3999
- }
4000
- .live-activity-header .title {
4001
- font-size: 12px;
4002
- }
4003
- .time-card .time-value {
4004
- font-size: 20px;
4005
- }
4006
- }
4007
-
4008
- @media screen and (max-width: 480px) {
4009
- .cb-lobby-main-wp {
4010
- padding: 20px 12px;
4011
- }
4012
- .cb-lobby-main {
4013
- padding: 15px 12px;
4014
- }
4015
- .lobby-status {
4016
- font-size: 9px;
4017
- }
4018
- .lobby-number {
4019
- font-size: 10px;
4020
- }
4021
- .title-wp h2 {
4022
- font-size: 28px;
4023
- margin-bottom: 7px;
4024
- }
4025
- .sub-title {
4026
- font-size: 14px;
4027
- }
4028
- .lobby-link-section {
4029
- gap: 10px;
4030
- margin-top: 20px;
4031
- }
4032
- .lobby-offer-box {
4033
- gap: 12px;
4034
- }
4035
- .offer-box-icon {
4036
- width: 45px;
4037
- height: 45px;
4038
- }
4039
- .offer-lock-status span {
4040
- font-size: 12px;
4041
- }
4042
- .offer-box-content .reward-text {
4043
- font-size: 12px;
4044
- }
4045
- .cb-lobby-top {
4046
- gap: 20px;
4047
- }
4048
- .lobby-close-icon {
4049
- right: 10px;
4050
- top: 10px;
4051
- }
4052
- .live-activity-header {
4053
- flex-direction: column;
4054
- gap: 5px;
4055
- }
4056
- .activity-card {
4057
- padding: 6px;
4058
- border-radius: 9px;
4059
- }
4060
- }
4061
-
4062
- .share-overlay {
4063
- position: fixed;
4064
- inset: 0;
4065
- background: rgba(0, 0, 0, 0.45);
4066
- display: flex;
4067
- align-items: center;
4068
- justify-content: center;
4069
- opacity: 0;
4070
- visibility: hidden;
4071
- transition: 0.3s ease;
4072
- z-index: 999;
4073
- }
4074
-
4075
- .share-overlay.active {
4076
- opacity: 1;
4077
- visibility: visible;
4078
- }
4079
-
4080
- .share-popup {
4081
- background: #fff;
4082
- width: 420px;
4083
- border-radius: 18px;
4084
- padding: 24px;
4085
- transform: translateY(30px);
4086
- transition: 0.35s ease;
4087
- position: relative;
4088
- max-height: 90%;
4089
- overflow: auto;
4090
- }
4091
-
4092
- .share-overlay.active .share-popup {
4093
- transform: translateY(0);
4094
- }
4095
-
4096
- .share-popup .close-btn {
4097
- position: absolute;
4098
- right: 14px;
4099
- top: 14px;
4100
- border: none;
4101
- background: rgb(243, 244, 246);
4102
- border-radius: 50%;
4103
- width: 32px;
4104
- height: 32px;
4105
- display: flex;
4106
- align-items: center;
4107
- justify-content: center;
4108
- cursor: pointer;
4109
- transition: 0.3s;
4110
- }
4111
-
4112
- .share-popup .close-btn:hover {
4113
- background: rgb(238 236 236);
4114
- }
4115
-
4116
- .share-popup h2 {
4117
- margin-bottom: 10px;
4118
- font-size: 22px;
4119
- line-height: 1;
4120
- font-weight: 600;
4121
- }
4122
-
4123
- .share-popup .subtitle {
4124
- color: #4a5565;
4125
- font-size: 14px;
4126
- margin: 6px 0 30px;
4127
- }
4128
-
4129
- .share-popup .share-grid {
4130
- display: grid;
4131
- grid-template-columns: repeat(2, 1fr);
4132
- gap: 14px;
4133
- }
4134
-
4135
- .share-popup .share-card {
4136
- background: #f2f6f9;
4137
- border-radius: 14px;
4138
- padding: 16px;
4139
- text-align: center;
4140
- cursor: pointer;
4141
- position: relative;
4142
- transition: 0.25s ease;
4143
- display: flex;
4144
- flex-direction: column;
4145
- align-items: center;
4146
- }
4147
-
4148
- .share-popup .share-card:hover {
4149
- transform: translateY(-3px);
4150
- }
4151
-
4152
- .share-popup .share-card .icon {
4153
- font-size: 30px;
4154
- margin-bottom: 8px;
4155
- width: 50px;
4156
- height: 50px;
4157
- text-align: center;
4158
- display: flex;
4159
- align-items: center;
4160
- justify-content: center;
4161
- background: rgb(24, 119, 242);
4162
- border-radius: 50%;
4163
- color: #fff;
4164
- }
4165
-
4166
- .share-popup .share-card span {
4167
- font-size: 13px;
4168
- font-weight: 500;
4169
- }
4170
-
4171
- .share-popup .share-card.whatsapp {
4172
- background: #ecfdf5;
4173
- border: 2px solid #22c55e;
4174
- color: #22c55e;
4175
- }
4176
-
4177
- .share-popup .share-card.whatsapp .icon {
4178
- background: #22c55e;
4179
- }
4180
-
4181
- .share-popup .share-card .badge {
4182
- position: absolute;
4183
- top: -8px;
4184
- right: 10px;
4185
- background: #2563eb;
4186
- color: #fff;
4187
- font-size: 11px;
4188
- padding: 4px 10px;
4189
- border-radius: 12px;
4190
- }
4191
-
4192
- .share-popup .link-box {
4193
- background: #fbf9fa;
4194
- border-radius: 14px;
4195
- padding: 14px;
4196
- margin-top: 18px;
4197
- border: 1px solid #ebe6e7;
4198
- }
4199
-
4200
- .share-popup .link-box label {
4201
- font-size: 13px;
4202
- color: #64748b;
4203
- }
4204
-
4205
- .share-popup .link-row {
4206
- display: flex;
4207
- gap: 8px;
4208
- margin-top: 6px;
4209
- }
4210
-
4211
- .share-popup .link-row input {
4212
- flex: 1;
4213
- border: none;
4214
- background: transparent;
4215
- font-size: 13px;
4216
- letter-spacing: 0.8px;
4217
- line-height: 1.2;
4218
- color: #334155;
4219
- outline: none;
4220
- }
4221
-
4222
- .share-popup .link-row button {
4223
- background: #fff;
4224
- border-radius: 10px;
4225
- cursor: pointer;
4226
- padding: 6px 8px;
4227
- border: 1px solid #ebe6e7;
4228
- display: flex;
4229
- align-items: center;
4230
- justify-content: center;
4231
- width: 35px;
4232
- height: 35px;
4233
- }
4234
-
4235
- .share-popup .success {
4236
- display: block;
4237
- margin-top: 6px;
4238
- color: #2563eb;
4239
- font-size: 12px;
4240
- opacity: 0;
4241
- transition: opacity 0.3s;
4242
- }
4243
-
4244
- .share-popup .success.show {
4245
- opacity: 1;
4246
- }
4247
-
4248
- .share-popup .footer-text {
4249
- margin-top: 14px;
4250
- text-align: center;
4251
- font-size: 12px;
4252
- color: #64748b;
4253
- }
4254
-
4255
- .share-popup .share-card.twitter .icon {
4256
- background: #000;
4257
- }
4258
-
4259
- .share-popup .share-card.facebook .icon {
4260
- background: rgb(24, 119, 242);
4261
- }
4262
-
4263
- .share-popup .share-card.sms .icon {
4264
- background: #059669;
4265
- }
4266
-
4267
- .share-popup .share-card.copied .icon {
4268
- background: #2563eb;
4269
- }
4270
-
4271
- @keyframes entrance-fade-in {
4272
- from {
4273
- opacity: 0;
4274
- }
4275
- to {
4276
- opacity: 1;
4277
- }
4278
- }
4279
-
4280
- @keyframes entrance-scale-in {
4281
- from {
4282
- opacity: 0;
4283
- transform: scale(0.9) translateY(20px);
4284
- }
4285
- to {
4286
- opacity: 1;
4287
- transform: scale(1) translateY(0);
4288
- }
4289
- }
4290
-
4291
- @keyframes entrance-text-fade-in {
4292
- from {
4293
- opacity: 0;
4294
- }
4295
- to {
4296
- opacity: 1;
4297
- }
4298
- }
4299
-
4300
- @keyframes exit-blur-scale {
4301
- from {
4302
- opacity: 1;
4303
- transform: scale(1);
4304
- filter: blur(0px);
4305
- }
4306
- to {
4307
- opacity: 0;
4308
- transform: scale(1.1);
4309
- filter: blur(10px);
4310
- }
4311
- }
4312
-
4313
- @keyframes pulse-dot {
4314
- 0%, 100% {
4315
- opacity: 1;
4316
- }
4317
- 50% {
4318
- opacity: 0.5;
4319
- }
4320
- }
4321
-
4322
- .entrance-animation-overlay {
4323
- position: fixed;
4324
- inset: 0;
4325
- z-index: 9999;
4326
- display: flex;
4327
- flex-direction: column;
4328
- align-items: center;
4329
- justify-content: center;
4330
- background-color: #0f172a;
4331
- color: white;
4332
- animation: entrance-fade-in 0.8s ease-in-out forwards;
4333
- }
4334
-
4335
- .entrance-animation-overlay.exit {
4336
- animation: exit-blur-scale 0.8s ease-in-out forwards;
4337
- }
4338
-
4339
- .entrance-content {
4340
- display: flex;
4341
- flex-direction: column;
4342
- align-items: center;
4343
- animation: entrance-scale-in 0.5s ease-out 0.2s both;
4344
- }
4345
-
4346
- .entrance-icon-box {
4347
- width: 64px;
4348
- height: 64px;
4349
- margin-bottom: 24px;
4350
- border-radius: 16px;
4351
- background: #2563eb;
4352
- display: flex;
4353
- align-items: center;
4354
- justify-content: center;
4355
- box-shadow: 0 10px 25px rgba(37, 99, 235, 0.2);
4356
- }
4357
-
4358
- .entrance-icon-box svg {
4359
- width: 32px;
4360
- height: 32px;
4361
- color: white;
4362
- }
4363
-
4364
- .entrance-title {
4365
- font-size: 32px;
4366
- font-weight: 700;
4367
- letter-spacing: -0.5px;
4368
- margin-bottom: 12px;
4369
- }
4370
-
4371
- @media (min-width: 768px) {
4372
- .entrance-title {
4373
- font-size: 48px;
4374
- }
4375
- }
4376
-
4377
- .entrance-message {
4378
- color: #60a5fa;
4379
- font-weight: 500;
4380
- font-size: 18px;
4381
- display: flex;
4382
- align-items: center;
4383
- gap: 8px;
4384
- animation: entrance-text-fade-in 0.5s ease-out 0.5s both;
4385
- }
4386
-
4387
- .entrance-pulse-dot {
4388
- width: 8px;
4389
- height: 8px;
4390
- border-radius: 50%;
4391
- background-color: #60a5fa;
4392
- animation: pulse-dot 1.5s ease-in-out infinite;
4393
- }
4394
- `;
4395
- document.head.appendChild(style);
4396
- this.logger.info("Lobby styles injected successfully");
4397
- }
4398
2927
  /**
4399
2928
  * Trigger the same checkout flow as clicking "Continue to Checkout" on the widget
4400
2929
  */
@@ -5046,8 +3575,6 @@ var CoBuySDK = (function (exports) {
5046
3575
  groupNumber: this.data.groupNumber,
5047
3576
  status: this.data.status,
5048
3577
  });
5049
- // Inject lobby styles (only happens once per page load)
5050
- this.injectLobbyStyles();
5051
3578
  // Show entrance animation, then open modal after animation completes
5052
3579
  this.showEntranceAnimation(() => {
5053
3580
  this.modalElement = this.createModalStructure();
@@ -5098,12 +3625,10 @@ var CoBuySDK = (function (exports) {
5098
3625
  lastElement.focus();
5099
3626
  }
5100
3627
  }
5101
- else {
3628
+ else if (activeElement === lastElement) {
5102
3629
  // TAB pressed - move forwards
5103
- if (activeElement === lastElement) {
5104
- event.preventDefault();
5105
- firstElement.focus();
5106
- }
3630
+ event.preventDefault();
3631
+ firstElement.focus();
5107
3632
  }
5108
3633
  }
5109
3634
  };
@@ -5148,11 +3673,6 @@ var CoBuySDK = (function (exports) {
5148
3673
  this.stopActivityAnimation();
5149
3674
  // Remove keyboard event listeners
5150
3675
  this.removeKeyboardAccessibility();
5151
- // // Unsubscribe from socket events and group - testing out flow will remove once we have conviction
5152
- // this.unsubscribeFromSocketEvents();
5153
- // if (this.socketManager && this.currentGroupId) {
5154
- // this.socketManager.unsubscribeFromGroup(this.currentGroupId);
5155
- // }
5156
3676
  // Remove modal from DOM
5157
3677
  document.body.removeChild(this.modalElement);
5158
3678
  this.modalElement = null;
@@ -5339,8 +3859,8 @@ var CoBuySDK = (function (exports) {
5339
3859
  "orange",
5340
3860
  ];
5341
3861
  const randomColor = colors[Math.floor(Math.random() * colors.length)];
5342
- let emoji = "👤";
5343
- let action = "joined the group";
3862
+ let emoji;
3863
+ let action;
5344
3864
  switch (eventType) {
5345
3865
  case "group:member:joined":
5346
3866
  emoji = "👤";
@@ -5415,11 +3935,6 @@ var CoBuySDK = (function (exports) {
5415
3935
  }
5416
3936
  }
5417
3937
  }
5418
- /**
5419
- * Inject lobby styles into the document head
5420
- * This is called once when the first lobby modal is created
5421
- */
5422
- LobbyModal.stylesInjected = false;
5423
3938
 
5424
3939
  /**
5425
3940
  * Offline Redemption Modal
@@ -5978,7 +4493,7 @@ var CoBuySDK = (function (exports) {
5978
4493
  }
5979
4494
  else if (this.currentGroupData) {
5980
4495
  // Check if data actually changed using participant count
5981
- const currentParticipants = groupContainer.getAttribute("data-participants");
4496
+ const currentParticipants = groupContainer.dataset.participants;
5982
4497
  const newParticipants = String(this.currentGroupData.participants_count || 0);
5983
4498
  if (currentParticipants !== newParticipants) {
5984
4499
  // Data changed, re-render
@@ -5986,7 +4501,7 @@ var CoBuySDK = (function (exports) {
5986
4501
  const groupEl = this.renderGroupInfo();
5987
4502
  if (groupEl) {
5988
4503
  // Store current participants for next diff
5989
- groupContainer.setAttribute("data-participants", newParticipants);
4504
+ groupContainer.dataset.participants = newParticipants;
5990
4505
  groupContainer.style.display = "";
5991
4506
  groupContainer.appendChild(groupEl);
5992
4507
  }
@@ -6102,8 +4617,8 @@ var CoBuySDK = (function (exports) {
6102
4617
  // Match static HTML structure: cobuy-progress container
6103
4618
  const root = document.createElement("div");
6104
4619
  root.className = "cobuy-progress";
6105
- root.setAttribute("data-current", String(participants));
6106
- root.setAttribute("data-target", String(max));
4620
+ root.dataset.current = String(participants);
4621
+ root.dataset.target = String(max);
6107
4622
  // Progress header with two spans
6108
4623
  const header = document.createElement("div");
6109
4624
  header.className = "progress-header";
@@ -6127,7 +4642,7 @@ var CoBuySDK = (function (exports) {
6127
4642
  const expiry = Date.parse(data.expiry_at);
6128
4643
  this.updateTimer(progressText, expiry, remaining);
6129
4644
  const interval = window.setInterval(() => this.updateTimer(progressText, expiry, remaining), 1000);
6130
- progressText.setAttribute("data-timer-id", String(interval));
4645
+ progressText.dataset.timerId = String(interval);
6131
4646
  root.appendChild(header);
6132
4647
  root.appendChild(progressBar);
6133
4648
  // Create footer with timer on left and View all Groups link on right
@@ -6301,7 +4816,7 @@ var CoBuySDK = (function (exports) {
6301
4816
  totalMembers: joinData.group.max_participants,
6302
4817
  timeLeft: joinData.group.timeLeftSeconds,
6303
4818
  };
6304
- const lobbyModal = new LobbyModal(lobbyData, {}, null, null, null, this.config.debug);
4819
+ const lobbyModal = new LobbyModal(lobbyData, {}, null, null, this.config.debug);
6305
4820
  lobbyModal.open(joinData.group.id);
6306
4821
  });
6307
4822
  // Set callback for viewing progress on already joined group
@@ -6318,7 +4833,7 @@ var CoBuySDK = (function (exports) {
6318
4833
  currentMembers: groupData.joined,
6319
4834
  totalMembers: groupData.total,
6320
4835
  };
6321
- const lobbyModal = new LobbyModal(lobbyData, {}, null, null, null, this.config.debug);
4836
+ const lobbyModal = new LobbyModal(lobbyData, {}, null, null, this.config.debug);
6322
4837
  lobbyModal.open(groupId);
6323
4838
  });
6324
4839
  }
@@ -6434,7 +4949,7 @@ var CoBuySDK = (function (exports) {
6434
4949
  // Listen for realtime fulfillment updates once per page
6435
4950
  this.subscribeToSocketEvents();
6436
4951
  // Host safety + idempotency markers
6437
- container.setAttribute("data-cobuy-mounted", "true");
4952
+ container.dataset.cobuyMounted = "true";
6438
4953
  container.style.maxWidth = "100%";
6439
4954
  container.style.width = "100%";
6440
4955
  container.style.boxSizing = "border-box";
@@ -6970,29 +5485,6 @@ var CoBuySDK = (function (exports) {
6970
5485
  rewardLine.style.opacity = "0";
6971
5486
  rewardLine.style.animation =
6972
5487
  "cobuy-fadeIn var(--cobuy-animation-duration, 300ms) var(--cobuy-animation-easing, ease-out) forwards";
6973
- // if (isFulfilled) {
6974
- // const rewardText = this.formatRewardText(activeReward);
6975
- // rewardLine.textContent = rewardText
6976
- // ? `Reward available: ${rewardText}`
6977
- // : "Reward available for this group";
6978
- // rewardLine.setAttribute(
6979
- // "aria-label",
6980
- // rewardText ? `Reward locked in: ${rewardText}` : "Reward available for this group",
6981
- // );
6982
- // rewardLine.title = rewardLine.textContent;
6983
- // } else if (activeReward) {
6984
- // const rewardText = this.formatRewardText(activeReward);
6985
- // rewardLine.textContent = rewardText
6986
- // ? `Save up to ${rewardText} with CoBuy`
6987
- // : "CoBuy reward available";
6988
- // rewardLine.setAttribute("aria-label", `Eligible for CoBuy reward: ${rewardLine.textContent}`);
6989
- // rewardLine.title = rewardLine.textContent;
6990
- // } else {
6991
- // rewardLine.textContent = "CoBuy offer loading or unavailable";
6992
- // rewardLine.setAttribute("aria-label", "CoBuy offer loading or unavailable");
6993
- // rewardLine.title = "CoBuy offer loading or unavailable";
6994
- // rewardLine.style.color = "#6b7280";
6995
- // }
6996
5488
  sections.reward = rewardLine;
6997
5489
  // Button - semantic button element with accessibility
6998
5490
  const button = document.createElement("button");
@@ -13913,7 +12405,7 @@ var CoBuySDK = (function (exports) {
13913
12405
  }
13914
12406
  try {
13915
12407
  const botd = await load();
13916
- const result = (await botd.detect());
12408
+ const result = botd.detect();
13917
12409
  const score = typeof result.score === "number" ? result.score : result.bot ? 1 : 0;
13918
12410
  this.botdScore = score;
13919
12411
  if (this.apiClient) {
@@ -14313,7 +12805,7 @@ var CoBuySDK = (function (exports) {
14313
12805
  },
14314
12806
  onCopyLink: options.onCopyLink,
14315
12807
  onShare: options.onShare,
14316
- }, this.apiClient, this.analyticsClient, this.socketManager, config.debug);
12808
+ }, this.apiClient, this.socketManager, config.debug);
14317
12809
  // Store in map for persistence
14318
12810
  this.modals.set(modalKey, modal);
14319
12811
  // Maintain backward compatibility