@scalebun/web 1.2.3 → 1.2.4

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.
Files changed (116) hide show
  1. package/dist/bootstrap/SDKBootstrapper.d.ts.map +1 -1
  2. package/dist/bootstrap/SDKBootstrapper.js +37 -1
  3. package/dist/bootstrap/SDKBootstrapper.js.map +1 -1
  4. package/dist/core/prune.d.ts +28 -4
  5. package/dist/core/prune.d.ts.map +1 -1
  6. package/dist/core/prune.js +92 -11
  7. package/dist/core/prune.js.map +1 -1
  8. package/dist/features/bugreport/BugReportFeature.d.ts +3 -2
  9. package/dist/features/bugreport/BugReportFeature.d.ts.map +1 -1
  10. package/dist/features/bugreport/BugReportFeature.js +2 -1
  11. package/dist/features/bugreport/BugReportFeature.js.map +1 -1
  12. package/dist/features/bugreport/widget.d.ts +21 -2
  13. package/dist/features/bugreport/widget.d.ts.map +1 -1
  14. package/dist/features/bugreport/widget.js +37 -4
  15. package/dist/features/bugreport/widget.js.map +1 -1
  16. package/dist/features/coach/overlay.d.ts.map +1 -1
  17. package/dist/features/coach/overlay.js +26 -5
  18. package/dist/features/coach/overlay.js.map +1 -1
  19. package/dist/features/engage/EngageFeature.d.ts +7 -1
  20. package/dist/features/engage/EngageFeature.d.ts.map +1 -1
  21. package/dist/features/engage/EngageFeature.js +32 -10
  22. package/dist/features/engage/EngageFeature.js.map +1 -1
  23. package/dist/features/engage/normalize.d.ts.map +1 -1
  24. package/dist/features/engage/normalize.js +7 -0
  25. package/dist/features/engage/normalize.js.map +1 -1
  26. package/dist/features/engage/runtime.d.ts +11 -0
  27. package/dist/features/engage/runtime.d.ts.map +1 -1
  28. package/dist/features/engage/runtime.js +25 -10
  29. package/dist/features/engage/runtime.js.map +1 -1
  30. package/dist/features/engage/throttle.d.ts +16 -6
  31. package/dist/features/engage/throttle.d.ts.map +1 -1
  32. package/dist/features/engage/throttle.js +96 -6
  33. package/dist/features/engage/throttle.js.map +1 -1
  34. package/dist/features/engage/types.d.ts +6 -0
  35. package/dist/features/engage/types.d.ts.map +1 -1
  36. package/dist/features/engage/types.js.map +1 -1
  37. package/dist/features/inapp/InApp2Feature.d.ts.map +1 -1
  38. package/dist/features/inapp/InApp2Feature.js +1 -0
  39. package/dist/features/inapp/InApp2Feature.js.map +1 -1
  40. package/dist/features/inapp/blocks/styles.d.ts +1 -1
  41. package/dist/features/inapp/blocks/styles.d.ts.map +1 -1
  42. package/dist/features/inapp/blocks/styles.js +30 -3
  43. package/dist/features/inapp/blocks/styles.js.map +1 -1
  44. package/dist/features/inapp/center/panel.d.ts +1 -1
  45. package/dist/features/inapp/center/panel.d.ts.map +1 -1
  46. package/dist/features/inapp/center/panel.js +40 -6
  47. package/dist/features/inapp/center/panel.js.map +1 -1
  48. package/dist/features/inapp/core/engine.d.ts +2 -0
  49. package/dist/features/inapp/core/engine.d.ts.map +1 -1
  50. package/dist/features/inapp/core/engine.js +1 -1
  51. package/dist/features/inapp/core/engine.js.map +1 -1
  52. package/dist/features/inapp/core/host.d.ts.map +1 -1
  53. package/dist/features/inapp/core/host.js +5 -1
  54. package/dist/features/inapp/core/host.js.map +1 -1
  55. package/dist/features/inapp/core/targeting.d.ts +29 -2
  56. package/dist/features/inapp/core/targeting.d.ts.map +1 -1
  57. package/dist/features/inapp/core/targeting.js +78 -4
  58. package/dist/features/inapp/core/targeting.js.map +1 -1
  59. package/dist/features/inapp/surfaces/coachmark.d.ts.map +1 -1
  60. package/dist/features/inapp/surfaces/coachmark.js +5 -2
  61. package/dist/features/inapp/surfaces/coachmark.js.map +1 -1
  62. package/dist/features/inapp/surfaces/hotspot.d.ts.map +1 -1
  63. package/dist/features/inapp/surfaces/hotspot.js +5 -2
  64. package/dist/features/inapp/surfaces/hotspot.js.map +1 -1
  65. package/dist/features/inapp/surfaces/inline.d.ts.map +1 -1
  66. package/dist/features/inapp/surfaces/inline.js +7 -1
  67. package/dist/features/inapp/surfaces/inline.js.map +1 -1
  68. package/dist/features/inapp/surfaces/popover.d.ts.map +1 -1
  69. package/dist/features/inapp/surfaces/popover.js +5 -2
  70. package/dist/features/inapp/surfaces/popover.js.map +1 -1
  71. package/dist/features/inapp/surfaces/styles.d.ts +1 -1
  72. package/dist/features/inapp/surfaces/styles.d.ts.map +1 -1
  73. package/dist/features/inapp/surfaces/styles.js +60 -11
  74. package/dist/features/inapp/surfaces/styles.js.map +1 -1
  75. package/dist/features/inapp/surfaces/toolbar.d.ts.map +1 -1
  76. package/dist/features/inapp/surfaces/toolbar.js +5 -2
  77. package/dist/features/inapp/surfaces/toolbar.js.map +1 -1
  78. package/dist/features/inapp/surfaces/tour.d.ts.map +1 -1
  79. package/dist/features/inapp/surfaces/tour.js +5 -2
  80. package/dist/features/inapp/surfaces/tour.js.map +1 -1
  81. package/dist/features/inapp/types.d.ts +2 -0
  82. package/dist/features/inapp/types.d.ts.map +1 -1
  83. package/dist/features/journey/InteractionTracker.d.ts.map +1 -1
  84. package/dist/features/journey/InteractionTracker.js +137 -0
  85. package/dist/features/journey/InteractionTracker.js.map +1 -1
  86. package/dist/features/manifest.d.ts +21 -0
  87. package/dist/features/manifest.d.ts.map +1 -1
  88. package/dist/features/manifest.js +27 -10
  89. package/dist/features/manifest.js.map +1 -1
  90. package/dist/features/replay/ReplayFeature.d.ts +20 -0
  91. package/dist/features/replay/ReplayFeature.d.ts.map +1 -1
  92. package/dist/features/replay/ReplayFeature.js +155 -5
  93. package/dist/features/replay/ReplayFeature.js.map +1 -1
  94. package/dist/features/replay/lifecycle/recorder.d.ts +21 -1
  95. package/dist/features/replay/lifecycle/recorder.d.ts.map +1 -1
  96. package/dist/features/replay/lifecycle/recorder.js +20 -4
  97. package/dist/features/replay/lifecycle/recorder.js.map +1 -1
  98. package/dist/features/session/sessionStore.d.ts +17 -1
  99. package/dist/features/session/sessionStore.d.ts.map +1 -1
  100. package/dist/features/session/sessionStore.js +17 -1
  101. package/dist/features/session/sessionStore.js.map +1 -1
  102. package/dist/pipeline/pipeline.d.ts +82 -0
  103. package/dist/pipeline/pipeline.d.ts.map +1 -1
  104. package/dist/pipeline/pipeline.js +307 -14
  105. package/dist/pipeline/pipeline.js.map +1 -1
  106. package/dist/public/ScaleBunFacade.d.ts +31 -0
  107. package/dist/public/ScaleBunFacade.d.ts.map +1 -1
  108. package/dist/public/ScaleBunFacade.js +43 -7
  109. package/dist/public/ScaleBunFacade.js.map +1 -1
  110. package/dist/scalebun.min.js +147 -65
  111. package/dist/scalebun.min.js.map +4 -4
  112. package/dist/transport/httpClient.d.ts +56 -2
  113. package/dist/transport/httpClient.d.ts.map +1 -1
  114. package/dist/transport/httpClient.js +81 -5
  115. package/dist/transport/httpClient.js.map +1 -1
  116. package/package.json +9 -3
@@ -93,11 +93,50 @@ export function audienceMatch(expr, profile) {
93
93
  return expr.split('&&').every((clause) => evalClause(clause, profile));
94
94
  }
95
95
  const FREQ_KEY = 'scalebun_inapp_freq';
96
+ const FREQ_SESSION_KEY = 'scalebun_inapp_freq_session';
97
+ /**
98
+ * Per-session cap for a variant carrying NO frequency rule. Same reasoning as the legacy engage
99
+ * store: the in-app builder writes `maxImpressionsPerSession: 1` on every campaign, so once per
100
+ * session is what the author was already promised. Applies ONLY when `frequency` is absent — an
101
+ * authored rule is honoured verbatim.
102
+ */
103
+ const UNCAPPED_MAX_PER_SESSION = 1;
96
104
  /** Persists per-variant impression/dismiss state so showOnce/cooldown survive reloads. */
97
105
  export class FrequencyStore {
98
- constructor(storage = safeStorage()) {
106
+ constructor(storage = safeStorage(), sessionId = '',
107
+ /** Injectable like `storage` above — keeps the store usable outside a DOM (and testable). */
108
+ sessionStore = safeSessionStorage()) {
99
109
  this.storage = storage;
110
+ this.sessionId = sessionId;
111
+ this.sessionStore = sessionStore;
100
112
  this.map = this.load();
113
+ this.session = this.loadSession();
114
+ }
115
+ /**
116
+ * Session-scoped counters live in sessionStorage, keyed by session id.
117
+ *
118
+ * sessionStorage alone is not the session boundary — it lasts as long as the tab, while a session
119
+ * rolls over after 30 minutes idle — so counts stamped with a different id are discarded.
120
+ */
121
+ loadSession() {
122
+ try {
123
+ const raw = this.sessionStore?.getItem(FREQ_SESSION_KEY);
124
+ const p = raw ? JSON.parse(raw) : null;
125
+ if (p && p.sid === this.sessionId && p.recs)
126
+ return { sid: this.sessionId, recs: p.recs };
127
+ }
128
+ catch {
129
+ /* fall through to a fresh session */
130
+ }
131
+ return { sid: this.sessionId, recs: {} };
132
+ }
133
+ saveSession() {
134
+ try {
135
+ this.sessionStore?.setItem(FREQ_SESSION_KEY, JSON.stringify(this.session));
136
+ }
137
+ catch {
138
+ /* degrade to in-memory */
139
+ }
101
140
  }
102
141
  load() {
103
142
  try {
@@ -116,14 +155,31 @@ export class FrequencyStore {
116
155
  /* degrade to in-memory */
117
156
  }
118
157
  }
119
- /** Does this variant's frequency rule permit a show right now? */
158
+ /**
159
+ * Does this variant's frequency rule permit a show right now?
160
+ *
161
+ * Two rules here used to have no effect at all, and together they let a variant re-render on every
162
+ * page load for the life of the campaign:
163
+ *
164
+ * • DISMISSAL. `persistDismiss` is documented as "across sessions vs session-only", but the
165
+ * session-only branch was never implemented — a dismissal with the flag unset suppressed
166
+ * nothing, and `deriveNativeVariant` never sets the flag, so that was every served variant.
167
+ * A dismissal now always holds for the rest of the SESSION, and across sessions when the flag
168
+ * asks for it.
169
+ * • NO RULE. An absent `frequency` returned `true` forever. It is now once per session, which is
170
+ * what the builder's always-written `maxImpressionsPerSession: 1` already promised.
171
+ */
120
172
  canShow(v, now) {
121
173
  const f = v.frequency;
122
174
  const rec = this.map[v.id];
175
+ const sess = this.session.recs[v.id];
176
+ if (rec?.dismissed && (v.dismiss?.persistDismiss || sess?.dismissed))
177
+ return false;
178
+ const perSession = f?.maxImpressionsPerSession ?? (f ? 0 : UNCAPPED_MAX_PER_SESSION);
179
+ if (perSession > 0 && (sess?.n ?? 0) >= perSession)
180
+ return false;
123
181
  if (!rec)
124
182
  return true;
125
- if (rec.dismissed && v.dismiss?.persistDismiss)
126
- return false;
127
183
  if (f?.showOnce && rec.count > 0)
128
184
  return false;
129
185
  if (f?.maxImpressions != null && rec.count >= f.maxImpressions)
@@ -138,6 +194,10 @@ export class FrequencyStore {
138
194
  rec.lastShown = now;
139
195
  this.map[id] = rec;
140
196
  this.save();
197
+ const sess = this.session.recs[id] ?? { n: 0 };
198
+ sess.n += 1;
199
+ this.session.recs[id] = sess;
200
+ this.saveSession();
141
201
  }
142
202
  recordDismiss(id, now) {
143
203
  const rec = this.map[id] ?? { count: 0, lastShown: 0 };
@@ -145,11 +205,17 @@ export class FrequencyStore {
145
205
  rec.lastShown = now;
146
206
  this.map[id] = rec;
147
207
  this.save();
208
+ const sess = this.session.recs[id] ?? { n: 0 };
209
+ sess.dismissed = true;
210
+ this.session.recs[id] = sess;
211
+ this.saveSession();
148
212
  }
149
213
  /** Dev/QA reset. */
150
214
  clear() {
151
215
  this.map = {};
152
216
  this.save();
217
+ this.session = { sid: this.sessionId, recs: {} };
218
+ this.saveSession();
153
219
  }
154
220
  }
155
221
  /** Does the variant pass targeting + frequency for this context? (Triggers gate *when*, not *if*.) */
@@ -178,4 +244,12 @@ function safeStorage() {
178
244
  return null;
179
245
  }
180
246
  }
247
+ function safeSessionStorage() {
248
+ try {
249
+ return typeof sessionStorage !== 'undefined' ? sessionStorage : null;
250
+ }
251
+ catch {
252
+ return null;
253
+ }
254
+ }
181
255
  //# sourceMappingURL=targeting.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"targeting.js","sourceRoot":"","sources":["../../../../src/features/inapp/core/targeting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"targeting.js","sourceRoot":"","sources":["../../../../src/features/inapp/core/targeting.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,kFAAkF;AAClF,6FAA6F;AAC7F,MAAM,UAAU,cAAc,CAAC,EAAW,EAAE,QAAQ,GAAG,GAAG,EAAE,EAAsC;IAChG,MAAM,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;IACrC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,OAAO,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/E,MAAM,CAAC,GAAG,EAAE,EAAE,MAAM,IAAI,CAAC,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACjF,OAAO,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC;AAC7H,CAAC;AAiBD,mFAAmF;AACnF,uGAAuG;AACvG,SAAS,QAAQ,CAAC,IAAY;IAC5B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACxB,EAAE,IAAI,IAAI,CAAC;gBACX,CAAC,EAAE,CAAC;YACN,CAAC;iBAAM,CAAC;gBACN,EAAE,IAAI,OAAO,CAAC;YAChB,CAAC;QACH,CAAC;aAAM,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,EAAE,IAAI,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IACD,OAAO,IAAI,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAA8B,EAAE,IAAY;IACrE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,kCAAkC;IACvF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAAC,QAA4B,EAAE,GAAqB;IAChF,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3H,IAAI,CAAC;QACH,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,CAAC,iDAAiD;IACjE,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,yFAAyF;AACzF,6FAA6F;AAC7F,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAEvD,SAAS,UAAU,CAAC,OAAqB;IACvC,MAAM,CAAC,GAAG,OAAO,EAAE,QAAQ,CAAC;IAC5B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IACzB,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,UAAU,CAAC,MAAc,EAAE,OAAgC;IAClE,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACxB,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAEhG,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC;YACvC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;YACzE,QAAQ,EAAE,EAAE,CAAC;gBACX,KAAK,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC;gBACxC,KAAK,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC;gBACzC,KAAK,GAAG,CAAC,CAAC,OAAO,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC;gBACxC,KAAK,GAAG,CAAC,CAAC,OAAO,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC;gBACxC,KAAK,IAAI,CAAC,CAAC,OAAO,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC;gBAC1C,KAAK,IAAI,CAAC,CAAC,OAAO,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,yCAAyC;AACzD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAwB,EAAE,OAAgC;IACtF,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACzE,CAAC;AAQD,MAAM,QAAQ,GAAG,qBAAqB,CAAC;AACvC,MAAM,gBAAgB,GAAG,6BAA6B,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAOnC,0FAA0F;AAC1F,MAAM,OAAO,cAAc;IAIzB,YACmB,UAA0B,WAAW,EAAE,EACvC,YAAY,EAAE;IAC/B,6FAA6F;IAC5E,eAA+B,kBAAkB,EAAE;QAHnD,YAAO,GAAP,OAAO,CAAgC;QACvC,cAAS,GAAT,SAAS,CAAK;QAEd,iBAAY,GAAZ,YAAY,CAAuC;QAEpE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACK,WAAW;QACjB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACzD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4D,CAAC,CAAC,CAAC,IAAI,CAAC;YACnG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI;gBAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5F,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAC3C,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC;YACH,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7E,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IAEO,IAAI;QACV,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC5C,OAAO,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,IAAI;QACV,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,CAAU,EAAE,GAAW;QAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAErC,IAAI,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,cAAc,IAAI,IAAI,EAAE,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QAEnF,MAAM,UAAU,GAAG,CAAC,EAAE,wBAAwB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;QACrF,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,UAAU;YAAE,OAAO,KAAK,CAAC;QAEjE,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,IAAI,CAAC,EAAE,QAAQ,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,IAAI,CAAC,EAAE,cAAc,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,cAAc;YAAE,OAAO,KAAK,CAAC;QAC7E,IAAI,CAAC,EAAE,QAAQ,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,EAAU,EAAE,GAAW;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QACf,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,aAAa,CAAC,EAAU,EAAE,GAAW;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;QACrB,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,oBAAoB;IACpB,KAAK;QACH,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;CACF;AASD,sGAAsG;AACtG,MAAM,UAAU,mBAAmB,CAAC,CAAU,EAAE,GAAqB,EAAE,IAAoB;IACzF,MAAM,CAAC,GAAkB,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACjF,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACnF,IAAI,CAAC,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7E,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IACjD,CAAC;IACD,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,YAAY;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACtF,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAC5F,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC/E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,OAAO,OAAO,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB;IACzB,IAAI,CAAC;QACH,OAAO,OAAO,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"coachmark.d.ts","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/coachmark.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAalE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,CAqFtE"}
1
+ {"version":3,"file":"coachmark.d.ts","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/coachmark.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAalE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,CAwFtE"}
@@ -46,8 +46,11 @@ export function coachmarkSurface(ctx) {
46
46
  ? new LiveAnchor({
47
47
  spec: specFromSelector(selector),
48
48
  size: () => {
49
- const r = card.getBoundingClientRect();
50
- return { width: r.width || card.offsetWidth || 300, height: r.height || card.offsetHeight || 120 };
49
+ // offsetWidth/Height, NOT getBoundingClientRect: the rect includes TRANSFORMS, and every
50
+ // anchored surface animates in with a scale. Measuring mid-animation placed the card from
51
+ // a size it was about to stop having, so it painted in the wrong spot and visibly jumped
52
+ // when the entrance finished — measured at ~150ms of wrong position on a tour step.
53
+ return { width: card.offsetWidth || 300, height: card.offsetHeight || 120 };
51
54
  },
52
55
  preferred: { side: preferredSide(ctx), align: 'center' },
53
56
  offset: variant.surfaceOptions?.offset,
@@ -1 +1 @@
1
- {"version":3,"file":"coachmark.js","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/coachmark.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coachmark.js","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/coachmark.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hotspot.d.ts","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/hotspot.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAalE,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,CAgFpE"}
1
+ {"version":3,"file":"hotspot.d.ts","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/hotspot.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAalE,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,CAmFpE"}
@@ -50,8 +50,11 @@ export function hotspotSurface(ctx) {
50
50
  ? new LiveAnchor({
51
51
  spec: specFromSelector(selector),
52
52
  size: () => {
53
- const r = card.getBoundingClientRect();
54
- return { width: r.width || card.offsetWidth || 240, height: r.height || card.offsetHeight || 90 };
53
+ // offsetWidth/Height, NOT getBoundingClientRect: the rect includes TRANSFORMS, and every
54
+ // anchored surface animates in with a scale. Measuring mid-animation placed the card from
55
+ // a size it was about to stop having, so it painted in the wrong spot and visibly jumped
56
+ // when the entrance finished — measured at ~150ms of wrong position on a tour step.
57
+ return { width: card.offsetWidth || 240, height: card.offsetHeight || 90 };
55
58
  },
56
59
  preferred: { side: preferredSide(ctx), align: 'center' },
57
60
  hooks: {
@@ -1 +1 @@
1
- {"version":3,"file":"hotspot.js","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/hotspot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hotspot.js","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/hotspot.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"inline.d.ts","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/inline.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAW9E,MAAM,WAAW,aAAa;IAC5B,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,GAAE,aAAkB,GAAG,aAAa,CAyDlI"}
1
+ {"version":3,"file":"inline.d.ts","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/inline.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAiB9E,MAAM,WAAW,aAAa;IAC5B,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,GAAE,aAAkB,GAAG,aAAa,CAyDlI"}
@@ -9,12 +9,18 @@ import { applyThemeVars } from '../core/host.js';
9
9
  import { BLOCKS_CSS } from '../blocks/styles.js';
10
10
  import { buildBlockContext, observeView } from './surface.js';
11
11
  import { renderBlocks } from '../blocks/blocks.js';
12
+ /* This surface mounts into its OWN shadow root and adopts BLOCKS_CSS + this sheet only — never
13
+ SURFACES_CSS. So the close-button/heading rules that fixed every other surface cannot reach it,
14
+ and the fix has to be repeated here. That isolation is why inline was the single surface still
15
+ overlapping after the others were done: 70 of the 70 remaining findings. */
12
16
  const INLINE_CSS = `
13
17
  :host{ display:block; }
14
18
  .scalebun-inline{ position:relative; background:var(--scalebun-bg); color:var(--scalebun-fg);
15
19
  border:1px solid var(--scalebun-border); border-radius:var(--scalebun-radius); padding:18px; }
16
- .scalebun-inline .scalebun-x{ position:absolute; top:8px; right:8px; background:none; border:0;
20
+ /* inset-inline-end, not right: in RTL the button belongs on the side the text now ends on. */
21
+ .scalebun-inline .scalebun-x{ position:absolute; top:8px; inset-inline-end:8px; background:none; border:0;
17
22
  color:var(--scalebun-muted); cursor:pointer; font-size:16px; border-radius:6px; }
23
+ .scalebun-inline .scalebun-h{ padding-inline-end:24px; }
18
24
  `;
19
25
  export function mountInline(registry, variant, hooks, opts = {}) {
20
26
  const slotName = variant.surfaceOptions?.slot ?? 'default';
@@ -1 +1 @@
1
- {"version":3,"file":"inline.js","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/inline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inline.js","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/inline.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/popover.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAclE,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,CAyDpE"}
1
+ {"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/popover.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAclE,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,CA4DpE"}
@@ -36,8 +36,11 @@ export function popoverSurface(ctx) {
36
36
  ? new LiveAnchor({
37
37
  spec: specFromSelector(selector),
38
38
  size: () => {
39
- const r = root.getBoundingClientRect();
40
- return { width: r.width || root.offsetWidth || 320, height: r.height || root.offsetHeight || 120 };
39
+ // offsetWidth/Height, NOT getBoundingClientRect: the rect includes TRANSFORMS, and every
40
+ // anchored surface animates in with a scale. Measuring mid-animation placed the card from
41
+ // a size it was about to stop having, so it painted in the wrong spot and visibly jumped
42
+ // when the entrance finished — measured at ~150ms of wrong position on a tour step.
43
+ return { width: root.offsetWidth || 320, height: root.offsetHeight || 120 };
41
44
  },
42
45
  preferred: { side: preferredSide(ctx), align: 'center' },
43
46
  offset: variant.surfaceOptions?.offset,
@@ -1 +1 @@
1
- {"version":3,"file":"popover.js","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/popover.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGpE,SAAS,cAAc,CAAC,GAAoB;IAC1C,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;AAC5I,CAAC;AAED,SAAS,aAAa,CAAC,GAAoB;IACzC,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC;IAChD,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAoB;IACjD,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAC7B,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAErC,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC;IACpC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC;IAC1D,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC;IAC9C,IAAI,IAAI;QAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,IAAI,IAAI,CAAC;IAE5C,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC;QAClB,CAAC,CAAC,SAAS,GAAG,2BAA2B,CAAC;QAC1C,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;QACpB,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,mBAAmB,CAAC,GAAG,CAAC;QAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEvB,MAAM,MAAM,GAAG,QAAQ;QACrB,CAAC,CAAC,IAAI,UAAU,CAAC;YACb,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC;YAChC,IAAI,EAAE,GAAG,EAAE;gBACT,MAAM,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACvC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,GAAG,EAAE,CAAC;YACrG,CAAC;YACD,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;YACxD,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE,MAAM;YACtC,KAAK,EAAE;gBACL,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE;oBACpB,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC/B,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC1D,CAAC;gBACD,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,gCAAgC;gBAChF,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,QAAS,CAAC;gBAC1D,0FAA0F;gBAC1F,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC;aACvC;SACF,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC;IAET,OAAO;QACL,EAAE,EAAE,IAAI;QACR,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE;QACjC,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,EAAE,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"popover.js","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/popover.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@
3
3
  * (CSP-safe); colors from the theme vars; animations opacity/transform-only and auto-disabled under
4
4
  * prefers-reduced-motion by the host base sheet.
5
5
  */
6
- export declare const SURFACES_CSS = "\n/* shared close button */\n.scalebun-x{ background:none; border:0; color:var(--scalebun-muted); cursor:pointer; font-size:16px; line-height:1;\n padding:4px 6px; border-radius:6px; }\n.scalebun-x:hover{ background:color-mix(in srgb, var(--scalebun-fg) 12%, transparent); color:var(--scalebun-fg); }\n.scalebun-x:focus-visible{ outline:2px solid var(--scalebun-accent); outline-offset:2px; }\n\n/* --scalebun-anim-in carries the variant's AUTHORED entrance animation, mapped from a fixed\n dictionary in richInApp (never interpolated). Each use falls back to that surface's own\n long-standing default, so a variant that authored nothing renders byte-identically to before.\n The reduced-motion rule in host.ts is marked important and still wins over anything set here. */\n\n/* S9 \u2014 banner */\n.scalebun-banner{ display:flex; align-items:center; gap:12px; padding:10px 16px;\n background:var(--scalebun-bg); color:var(--scalebun-fg); border-bottom:1px solid var(--scalebun-border);\n box-shadow:var(--scalebun-shadow); animation:var(--scalebun-anim-in, scalebun-slidedown .18s ease); }\n.scalebun-banner-bottom{ border-bottom:0; border-top:1px solid var(--scalebun-border); animation:var(--scalebun-anim-in, scalebun-slideup .18s ease); }\n.scalebun-banner .scalebun-body{ flex:1; display:flex; align-items:center; gap:12px; min-width:0; }\n.scalebun-banner .scalebun-body>*{ margin:0; }\n.scalebun-banner .scalebun-cta-row{ margin:0; }\n@keyframes scalebun-slidedown{ from{ transform:translateY(-100%); } to{ transform:none; } }\n\n/* S10 \u2014 toast */\n.scalebun-toast{ background:var(--scalebun-bg); color:var(--scalebun-fg); border:1px solid var(--scalebun-border);\n border-radius:var(--scalebun-radius); box-shadow:var(--scalebun-shadow); padding:12px 14px; max-width:340px;\n display:flex; gap:10px; align-items:flex-start; animation:var(--scalebun-anim-in, scalebun-slideup .18s ease); }\n.scalebun-toast .scalebun-body{ flex:1; min-width:0; }\n.scalebun-toast .scalebun-body>*:last-child{ margin-bottom:0; }\n@keyframes scalebun-slideup{ from{ transform:translateY(8px); opacity:0; } to{ transform:none; opacity:1; } }\n\n/* S1 \u2014 modal */\n/* pointer-events:auto is load-bearing \u2014 the zone is click-transparent (see host.ts BASE_CSS docblock) */\n.scalebun-backdrop{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; pointer-events:auto;\n background:rgba(15,18,26,.55); padding:24px; animation:scalebun-fade .15s ease; }\n.scalebun-modal-card{ position:relative; background:var(--scalebun-bg); color:var(--scalebun-fg);\n border:1px solid var(--scalebun-border); border-radius:var(--scalebun-radius); box-shadow:var(--scalebun-shadow);\n padding:22px; width:100%; max-height:calc(100vh - 48px); overflow:auto; animation:var(--scalebun-anim-in, scalebun-pop .16s ease); }\n.scalebun-modal-card[data-size=\"sm\"]{ max-width:360px; }\n.scalebun-modal-card[data-size=\"md\"]{ max-width:460px; }\n.scalebun-modal-card[data-size=\"lg\"]{ max-width:620px; }\n.scalebun-modal-card[data-size=\"xl\"]{ max-width:820px; }\n.scalebun-modal-x{ position:absolute; top:10px; right:10px; }\n@keyframes scalebun-fade{ from{ opacity:0; } to{ opacity:1; } }\n@keyframes scalebun-pop{ from{ transform:scale(.96); opacity:0; } to{ transform:none; opacity:1; } }\n\n/* S2 \u2014 slide-over */\n.scalebun-slideover{ position:absolute; top:0; bottom:0; width:380px; background:var(--scalebun-bg); color:var(--scalebun-fg);\n box-shadow:var(--scalebun-shadow); display:flex; flex-direction:column; overflow:hidden; }\n.scalebun-slideover-right{ right:0; border-left:1px solid var(--scalebun-border); animation:var(--scalebun-anim-in, scalebun-slide-in-r .2s ease); }\n.scalebun-slideover-left{ left:0; border-right:1px solid var(--scalebun-border); animation:var(--scalebun-anim-in, scalebun-slide-in-l .2s ease); }\n/* BOTTOM SHEET. bottom_sheet is one of the seven legacy layouts and richInApp has always mapped it\n to slideover with placement 'bottom' \u2014 but only -right/-left existed, and the surface treated any\n non-'left' placement as right. So every bottom-sheet campaign rendered as a full-height RIGHT panel.\n Overrides the base's top/bottom/width, which describe a vertical edge panel. */\n.scalebun-slideover-bottom{ top:auto; left:0; right:0; bottom:0; width:auto; max-height:82vh;\n border-top:1px solid var(--scalebun-border); border-radius:16px 16px 0 0;\n animation:var(--scalebun-anim-in, scalebun-slideup .22s ease); }\n.scalebun-so-header{ display:flex; justify-content:flex-end; gap:4px; padding:8px 8px 0; }\n/* A grab handle reads as \"this came from the bottom edge\" \u2014 the affordance a sheet has and a side\n panel doesn't. Decorative only; the \u00D7 button remains the accessible dismiss. */\n.scalebun-slideover-bottom .scalebun-so-header::before{ content:''; position:absolute; top:8px;\n left:50%; transform:translateX(-50%); width:36px; height:4px; border-radius:99px;\n background:var(--scalebun-border); }\n.scalebun-slideover-bottom .scalebun-so-header{ padding-top:16px; }\n.scalebun-so-body{ padding:8px 18px 18px; overflow:auto; flex:1; }\n.scalebun-so-resize{ position:absolute; top:0; bottom:0; width:6px; cursor:ew-resize; }\n.scalebun-slideover-right .scalebun-so-resize{ left:0; }\n.scalebun-slideover-left .scalebun-so-resize{ right:0; }\n.scalebun-so-resize:hover{ background:color-mix(in srgb, var(--scalebun-accent) 40%, transparent); }\n@keyframes scalebun-slide-in-r{ from{ transform:translateX(100%); } to{ transform:none; } }\n@keyframes scalebun-slide-in-l{ from{ transform:translateX(-100%); } to{ transform:none; } }\n\n/* S4 \u2014 anchored popover */\n.scalebun-popover{ position:absolute; background:var(--scalebun-bg); color:var(--scalebun-fg); border:1px solid var(--scalebun-border);\n border-radius:var(--scalebun-radius); box-shadow:var(--scalebun-shadow); padding:14px 16px; max-width:320px;\n animation:scalebun-pop .14s ease; }\n.scalebun-pop-body>*:last-child{ margin-bottom:0; }\n.scalebun-pop-x{ position:absolute; top:6px; right:6px; }\n\n/* S5 \u2014 coachmark + spotlight */\n.scalebun-coach-spot{ position:fixed; border-radius:8px; box-shadow:0 0 0 9999px rgba(12,10,20,.55);\n pointer-events:none; transition:top .18s ease,left .18s ease,width .18s ease,height .18s ease; }\n.scalebun-coachmark{ position:absolute; pointer-events:auto; background:var(--scalebun-bg); color:var(--scalebun-fg);\n border:1px solid var(--scalebun-border); border-radius:var(--scalebun-radius); box-shadow:var(--scalebun-shadow);\n padding:14px 16px; max-width:300px; animation:scalebun-pop .14s ease; }\n\n/* S6 \u2014 product tour */\n.scalebun-tour-card{ max-width:320px; }\n.scalebun-tour-center{ top:50%; left:50%; transform:translate(-50%,-50%); }\n.scalebun-tour-nav{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:14px; }\n.scalebun-tour-prog{ font-size:11.5px; color:var(--scalebun-muted); font-variant-numeric:tabular-nums; }\n.scalebun-tour-btns{ display:flex; gap:6px; }\n.scalebun-tour-btns .scalebun-btn{ padding:6px 12px; font-size:12.5px; }\n\n/* S7 \u2014 hotspot / beacon */\n.scalebun-beacon{ position:absolute; width:14px; height:14px; padding:0; border:0; border-radius:50%;\n background:var(--scalebun-accent); cursor:pointer; pointer-events:auto; box-shadow:0 0 0 4px color-mix(in srgb, var(--scalebun-accent) 30%, transparent); }\n.scalebun-beacon::after{ content:''; position:absolute; inset:0; border-radius:50%; background:var(--scalebun-accent);\n animation:scalebun-pulse 1.8s ease-out infinite; }\n.scalebun-beacon:focus-visible{ outline:2px solid var(--scalebun-accent); outline-offset:3px; }\n@keyframes scalebun-pulse{ 0%{ transform:scale(1); opacity:.6; } 100%{ transform:scale(2.6); opacity:0; } }\n.scalebun-beacon-card{ position:absolute; pointer-events:auto; background:var(--scalebun-bg); color:var(--scalebun-fg);\n border:1px solid var(--scalebun-border); border-radius:var(--scalebun-radius); box-shadow:var(--scalebun-shadow);\n padding:12px 14px; max-width:260px; font-size:13px; }\n.scalebun-beacon-card[hidden]{ display:none; }\n\n/* S16 \u2014 toolbar / menu callout */\n.scalebun-toolbar-callout{ position:absolute; pointer-events:auto; background:var(--scalebun-bg); color:var(--scalebun-fg);\n border:1px solid var(--scalebun-border); border-radius:10px; box-shadow:var(--scalebun-shadow);\n padding:10px 30px 10px 12px; max-width:240px; font-size:13px; animation:scalebun-pop .14s ease; }\n\n/* S13 \u2014 command palette */\n.scalebun-palette-backdrop{ position:absolute; inset:0; display:flex; align-items:flex-start; justify-content:center; pointer-events:auto;\n padding-top:12vh; background:rgba(15,18,26,.45); }\n.scalebun-palette{ width:min(560px, 92%); background:var(--scalebun-bg); color:var(--scalebun-fg); border:1px solid var(--scalebun-border);\n border-radius:14px; box-shadow:var(--scalebun-shadow); overflow:hidden; animation:scalebun-pop .14s ease; }\n.scalebun-palette-input{ width:100%; box-sizing:border-box; border:0; border-bottom:1px solid var(--scalebun-border);\n padding:16px 18px; font:inherit; font-size:15px; background:transparent; color:var(--scalebun-fg); outline:none; }\n.scalebun-palette-list{ list-style:none; margin:0; padding:6px; max-height:50vh; overflow-y:auto; }\n.scalebun-palette-item{ display:flex; align-items:center; gap:10px; padding:9px 12px; border-radius:8px; cursor:pointer; }\n.scalebun-palette-item.active{ background:var(--scalebun-accent); color:var(--scalebun-accent-fg); }\n.scalebun-palette-label{ flex:1; font-size:13.5px; }\n.scalebun-palette-hint{ font-size:11.5px; opacity:.7; }\n.scalebun-palette-empty{ padding:16px; text-align:center; color:var(--scalebun-muted); font-size:13px; }\n\n/* S3 \u2014 docked panel + AI shell */\n.scalebun-panel{ position:absolute; top:0; bottom:0; width:360px; display:flex; flex-direction:column;\n background:var(--scalebun-bg); color:var(--scalebun-fg); box-shadow:var(--scalebun-shadow); }\n.scalebun-panel-right{ right:0; border-left:1px solid var(--scalebun-border); }\n.scalebun-panel-left{ left:0; border-right:1px solid var(--scalebun-border); }\n.scalebun-panel-head{ display:flex; align-items:center; gap:8px; padding:12px 14px; border-bottom:1px solid var(--scalebun-border); }\n.scalebun-panel-title{ flex:1; font-weight:700; font-size:14px; }\n.scalebun-panel-thread{ flex:1; overflow-y:auto; padding:14px; display:flex; flex-direction:column; gap:10px; }\n.scalebun-bubble{ max-width:85%; padding:9px 12px; border-radius:12px; font-size:13.5px; line-height:1.45; white-space:pre-wrap; }\n.scalebun-bubble-user{ align-self:flex-end; background:var(--scalebun-accent); color:var(--scalebun-accent-fg); border-bottom-right-radius:4px; }\n.scalebun-bubble-assistant{ align-self:flex-start; background:color-mix(in srgb, var(--scalebun-fg) 7%, transparent); border-bottom-left-radius:4px; }\n.scalebun-bubble.streaming::after{ content:'\u258D'; animation:scalebun-blink 1s step-end infinite; }\n@keyframes scalebun-blink{ 50%{ opacity:0; } }\n.scalebun-panel-composer{ display:flex; gap:8px; padding:12px 14px; border-top:1px solid var(--scalebun-border); align-items:flex-end; }\n.scalebun-panel-input{ flex:1; resize:none; border:1px solid var(--scalebun-border); border-radius:10px; padding:9px 11px;\n font:inherit; font-size:13.5px; background:transparent; color:var(--scalebun-fg); max-height:120px; }\n.scalebun-panel-send{ padding:9px 14px; }\n\n/* S14 \u2014 checklist / onboarding widget */\n.scalebun-checklist{ position:absolute; bottom:16px; right:16px; width:320px; background:var(--scalebun-bg); color:var(--scalebun-fg);\n border:1px solid var(--scalebun-border); border-radius:14px; box-shadow:var(--scalebun-shadow); padding:14px 16px; }\n.scalebun-checklist.complete{ border-color:var(--scalebun-accent); }\n.scalebun-cl-head{ display:flex; align-items:center; gap:6px; margin-bottom:10px; }\n.scalebun-cl-title{ flex:1; font-weight:700; font-size:14px; }\n.scalebun-cl-dock{ font-size:14px; }\n.scalebun-cl-bar{ height:6px; border-radius:3px; background:color-mix(in srgb, var(--scalebun-fg) 10%, transparent); overflow:hidden; }\n.scalebun-cl-fill{ height:100%; background:var(--scalebun-accent); transition:width .25s ease; }\n.scalebun-cl-count{ font-size:11.5px; color:var(--scalebun-muted); margin:6px 0 10px; }\n.scalebun-checklist.collapsed .scalebun-cl-bar, .scalebun-checklist.collapsed .scalebun-cl-count, .scalebun-checklist.collapsed .scalebun-cl-list{ display:none; }\n.scalebun-cl-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:4px; }\n.scalebun-cl-item{ display:flex; align-items:center; gap:10px; padding:6px 4px; font-size:13.5px; }\n.scalebun-cl-item.done .scalebun-cl-label{ color:var(--scalebun-muted); text-decoration:line-through; }\n.scalebun-cl-check{ width:20px; height:20px; flex:0 0 auto; border-radius:6px; border:1.5px solid var(--scalebun-border);\n background:transparent; color:var(--scalebun-accent-fg); cursor:pointer; font-size:12px; line-height:1; }\n.scalebun-cl-item.done .scalebun-cl-check{ background:var(--scalebun-accent); border-color:var(--scalebun-accent); }\n.scalebun-cl-label{ flex:1; }\n\n/* S15 \u2014 full-page takeover */\n.scalebun-takeover{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; pointer-events:auto;\n background:var(--scalebun-bg); color:var(--scalebun-fg); padding:32px; overflow:auto; animation:var(--scalebun-anim-in, scalebun-fade .2s ease); }\n.scalebun-takeover-inner{ position:relative; max-width:640px; width:100%; text-align:center; }\n.scalebun-takeover-x{ position:absolute; top:-8px; right:-8px; }\n\n/* S12 \u2014 floating launcher */\n.scalebun-launcher{ position:absolute; bottom:0; right:0; display:flex; flex-direction:column; align-items:flex-end; gap:10px; }\n.scalebun-launcher-fab{ width:52px; height:52px; border-radius:50%; border:0; background:var(--scalebun-accent); color:var(--scalebun-accent-fg);\n font-size:22px; cursor:pointer; box-shadow:var(--scalebun-shadow); }\n.scalebun-launcher-menu{ display:flex; flex-direction:column; gap:2px; background:var(--scalebun-bg); color:var(--scalebun-fg);\n border:1px solid var(--scalebun-border); border-radius:12px; box-shadow:var(--scalebun-shadow); padding:6px; min-width:180px;\n animation:scalebun-pop .14s ease; }\n.scalebun-launcher-menu[hidden]{ display:none; }\n.scalebun-launcher-item{ text-align:left; background:none; border:0; color:var(--scalebun-fg); cursor:pointer; font:inherit;\n font-size:13.5px; padding:9px 12px; border-radius:8px; }\n.scalebun-launcher-item:hover{ background:color-mix(in srgb, var(--scalebun-fg) 7%, transparent); }\n";
6
+ export declare const SURFACES_CSS = "\n/* shared close button */\n.scalebun-x{ background:none; border:0; color:var(--scalebun-muted); cursor:pointer; font-size:16px; line-height:1;\n padding:4px 6px; border-radius:6px; }\n.scalebun-x:hover{ background:color-mix(in srgb, var(--scalebun-fg) 12%, transparent); color:var(--scalebun-fg); }\n.scalebun-x:focus-visible{ outline:2px solid var(--scalebun-accent); outline-offset:2px; }\n\n/* --scalebun-anim-in carries the variant's AUTHORED entrance animation, mapped from a fixed\n dictionary in richInApp (never interpolated). Each use falls back to that surface's own\n long-standing default, so a variant that authored nothing renders byte-identically to before.\n The reduced-motion rule in host.ts is marked important and still wins over anything set here. */\n\n/* S9 \u2014 banner */\n/* WRAPS rather than overflows. A banner carrying a heading, body, a stat and a CTA measures 407px of\n content, so on any phone it ran past the screen edge and took the page's horizontal scroll with it\n \u2014 the one remaining defect that reproduced with the catalog's OWN copy, not stressed content.\n Wrapping to a second row was chosen over dropping the stat or scrolling horizontally: nothing is\n lost, and a banner is already variable-height, so no other surface has to change to allow it. */\n.scalebun-banner{ display:flex; align-items:center; gap:12px; padding:10px 16px; flex-wrap:wrap;\n background:var(--scalebun-bg); color:var(--scalebun-fg); border-bottom:1px solid var(--scalebun-border);\n box-shadow:var(--scalebun-shadow); animation:var(--scalebun-anim-in, scalebun-slidedown .18s ease); }\n.scalebun-banner-bottom{ border-bottom:0; border-top:1px solid var(--scalebun-border); animation:var(--scalebun-anim-in, scalebun-slideup .18s ease); }\n.scalebun-banner .scalebun-body{ flex:1; display:flex; align-items:center; gap:12px; min-width:0; flex-wrap:wrap; }\n.scalebun-banner .scalebun-body>*{ margin:0; }\n.scalebun-banner .scalebun-cta-row{ margin:0; }\n@keyframes scalebun-slidedown{ from{ transform:translateY(-100%); } to{ transform:none; } }\n\n/* S10 \u2014 toast */\n.scalebun-toast{ background:var(--scalebun-bg); color:var(--scalebun-fg); border:1px solid var(--scalebun-border);\n border-radius:var(--scalebun-radius); box-shadow:var(--scalebun-shadow); padding:12px 14px; max-width:340px;\n display:flex; gap:10px; align-items:flex-start; animation:var(--scalebun-anim-in, scalebun-slideup .18s ease); }\n.scalebun-toast .scalebun-body{ flex:1; min-width:0; }\n.scalebun-toast .scalebun-body>*:last-child{ margin-bottom:0; }\n@keyframes scalebun-slideup{ from{ transform:translateY(8px); opacity:0; } to{ transform:none; opacity:1; } }\n\n/* S1 \u2014 modal */\n/* pointer-events:auto is load-bearing \u2014 the zone is click-transparent (see host.ts BASE_CSS docblock) */\n.scalebun-backdrop{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; pointer-events:auto;\n background:rgba(15,18,26,.55); padding:24px; animation:scalebun-fade .15s ease; }\n.scalebun-modal-card{ position:relative; background:var(--scalebun-bg); color:var(--scalebun-fg);\n border:1px solid var(--scalebun-border); border-radius:var(--scalebun-radius); box-shadow:var(--scalebun-shadow);\n padding:22px; width:100%; max-height:calc(100vh - 48px); overflow:auto; animation:var(--scalebun-anim-in, scalebun-pop .16s ease); }\n.scalebun-modal-card[data-size=\"sm\"]{ max-width:360px; }\n.scalebun-modal-card[data-size=\"md\"]{ max-width:460px; }\n.scalebun-modal-card[data-size=\"lg\"]{ max-width:620px; }\n.scalebun-modal-card[data-size=\"xl\"]{ max-width:820px; }\n.scalebun-modal-x{ position:absolute; top:10px; inset-inline-end:10px; }\n@keyframes scalebun-fade{ from{ opacity:0; } to{ opacity:1; } }\n@keyframes scalebun-pop{ from{ transform:scale(.96); opacity:0; } to{ transform:none; opacity:1; } }\n\n/* S2 \u2014 slide-over */\n.scalebun-slideover{ position:absolute; top:0; bottom:0; width:380px; background:var(--scalebun-bg); color:var(--scalebun-fg);\n box-shadow:var(--scalebun-shadow); display:flex; flex-direction:column; overflow:hidden; }\n.scalebun-slideover-right{ right:0; border-left:1px solid var(--scalebun-border); animation:var(--scalebun-anim-in, scalebun-slide-in-r .2s ease); }\n.scalebun-slideover-left{ left:0; border-right:1px solid var(--scalebun-border); animation:var(--scalebun-anim-in, scalebun-slide-in-l .2s ease); }\n/* BOTTOM SHEET. bottom_sheet is one of the seven legacy layouts and richInApp has always mapped it\n to slideover with placement 'bottom' \u2014 but only -right/-left existed, and the surface treated any\n non-'left' placement as right. So every bottom-sheet campaign rendered as a full-height RIGHT panel.\n Overrides the base's top/bottom/width, which describe a vertical edge panel. */\n.scalebun-slideover-bottom{ top:auto; left:0; right:0; bottom:0; width:auto; max-height:82vh;\n border-top:1px solid var(--scalebun-border); border-radius:16px 16px 0 0;\n animation:var(--scalebun-anim-in, scalebun-slideup .22s ease); }\n.scalebun-so-header{ display:flex; justify-content:flex-end; gap:4px; padding:8px 8px 0; }\n/* A grab handle reads as \"this came from the bottom edge\" \u2014 the affordance a sheet has and a side\n panel doesn't. Decorative only; the \u00D7 button remains the accessible dismiss. */\n.scalebun-slideover-bottom .scalebun-so-header::before{ content:''; position:absolute; top:8px;\n left:50%; transform:translateX(-50%); width:36px; height:4px; border-radius:99px;\n background:var(--scalebun-border); }\n.scalebun-slideover-bottom .scalebun-so-header{ padding-top:16px; }\n.scalebun-so-body{ padding:8px 18px 18px; overflow:auto; flex:1; }\n.scalebun-so-resize{ position:absolute; top:0; bottom:0; width:6px; cursor:ew-resize; }\n.scalebun-slideover-right .scalebun-so-resize{ left:0; }\n.scalebun-slideover-left .scalebun-so-resize{ right:0; }\n.scalebun-so-resize:hover{ background:color-mix(in srgb, var(--scalebun-accent) 40%, transparent); }\n@keyframes scalebun-slide-in-r{ from{ transform:translateX(100%); } to{ transform:none; } }\n@keyframes scalebun-slide-in-l{ from{ transform:translateX(-100%); } to{ transform:none; } }\n\n/* S4 \u2014 anchored popover */\n.scalebun-popover{ position:absolute; background:var(--scalebun-bg); color:var(--scalebun-fg); border:1px solid var(--scalebun-border);\n border-radius:var(--scalebun-radius); box-shadow:var(--scalebun-shadow); padding:14px 16px; max-width:320px;\n animation:scalebun-pop .14s ease; }\n.scalebun-pop-body>*:last-child{ margin-bottom:0; }\n.scalebun-pop-x{ position:absolute; top:6px; inset-inline-end:6px; }\n/* A close button is out of flow, so nothing stops a heading running underneath it \u2014 the \u00D7 then\n lands on a word of the title. Reserving the space is the same thing .scalebun-toolbar-callout\n already did with its right padding. Every surface that pairs an absolute \u00D7 with a heading needs\n it, which the stressed sweep put at nine of them, not the three the authored copy revealed.\n\n LOGICAL, not physical. This was padding-right, correct only while text runs left-to-right: in\n RTL a line ENDS on the left and STARTS under the close button, so the reserved gap sat on the\n side the text was leaving and the \u00D7 landed on the first word instead of the last. The buttons\n use inset-inline-end for the same reason. Caught by sweeping the catalog in Arabic. */\n.scalebun-popover .scalebun-h,\n.scalebun-coachmark .scalebun-h,\n.scalebun-modal-card .scalebun-h,\n.scalebun-inline .scalebun-h,\n.scalebun-toast .scalebun-h,\n.scalebun-banner .scalebun-h,\n.scalebun-takeover-inner .scalebun-h,\n.scalebun-toolbar-callout .scalebun-h{ padding-inline-end:24px; }\n\n/* S5 \u2014 coachmark + spotlight */\n.scalebun-coach-spot{ position:fixed; border-radius:8px; box-shadow:0 0 0 9999px rgba(12,10,20,.55);\n pointer-events:none; transition:top .18s ease,left .18s ease,width .18s ease,height .18s ease; }\n.scalebun-coachmark{ position:absolute; pointer-events:auto; background:var(--scalebun-bg); color:var(--scalebun-fg);\n border:1px solid var(--scalebun-border); border-radius:var(--scalebun-radius); box-shadow:var(--scalebun-shadow);\n padding:14px 16px; max-width:300px; animation:scalebun-pop .14s ease; }\n\n/* S6 \u2014 product tour. The same three phone-only defects fixed in coach/overlay.ts, which carries the\n full reasoning: width is EXPLICIT because a fixed box with left:50% and no width shrink-wraps to\n half the viewport; the heading reserves the space .scalebun-pop-x is absolutely positioned in; and\n the nav's items are flex:none so an overflowing footer wraps intact instead of collapsing the\n progress counter into a one-character column. */\n.scalebun-tour-card{ width:min(320px, calc(100vw - 32px)); }\n.scalebun-tour-card .scalebun-h{ padding-right:20px; }\n/* Centred by transform, and ANIMATED by transform \u2014 so the entrance clobbered the centring.\n .scalebun-coachmark carries animation:scalebun-pop, whose keyframes set transform:scale(.96) then\n transform:none. An animated property REPLACES the declared one for the whole run, so for the\n animation's 140ms this card was drawn at left:50%/top:50% with NO translate \u2014 sitting half its own\n width down and to the right \u2014 then snapped into place when the animation finished. That is the\n visible jump on opening a tour and on every Next.\n The fix keeps the translate inside the keyframes so the centring survives the run. The individual\n translate property would be tidier, but it silently breaks centring where unsupported, and a card\n that never centres is worse than one that briefly animates. */\n.scalebun-tour-center{ top:50%; left:50%; transform:translate(-50%,-50%); animation-name:scalebun-pop-center; }\n@keyframes scalebun-pop-center{\n from{ transform:translate(-50%,-50%) scale(.96); opacity:0; }\n to{ transform:translate(-50%,-50%); opacity:1; } }\n.scalebun-tour-nav{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:14px; flex-wrap:wrap; }\n.scalebun-tour-prog{ font-size:11.5px; color:var(--scalebun-muted); font-variant-numeric:tabular-nums; flex:none; white-space:nowrap; }\n.scalebun-tour-btns{ display:flex; gap:6px; flex:none; }\n.scalebun-tour-btns .scalebun-btn{ padding:6px 12px; font-size:12.5px; }\n\n/* S7 \u2014 hotspot / beacon */\n.scalebun-beacon{ position:absolute; width:14px; height:14px; padding:0; border:0; border-radius:50%;\n background:var(--scalebun-accent); cursor:pointer; pointer-events:auto; box-shadow:0 0 0 4px color-mix(in srgb, var(--scalebun-accent) 30%, transparent); }\n.scalebun-beacon::after{ content:''; position:absolute; inset:0; border-radius:50%; background:var(--scalebun-accent);\n animation:scalebun-pulse 1.8s ease-out infinite; }\n.scalebun-beacon:focus-visible{ outline:2px solid var(--scalebun-accent); outline-offset:3px; }\n@keyframes scalebun-pulse{ 0%{ transform:scale(1); opacity:.6; } 100%{ transform:scale(2.6); opacity:0; } }\n.scalebun-beacon-card{ position:absolute; pointer-events:auto; background:var(--scalebun-bg); color:var(--scalebun-fg);\n border:1px solid var(--scalebun-border); border-radius:var(--scalebun-radius); box-shadow:var(--scalebun-shadow);\n padding:12px 14px; max-width:260px; font-size:13px; }\n.scalebun-beacon-card[hidden]{ display:none; }\n\n/* S16 \u2014 toolbar / menu callout */\n.scalebun-toolbar-callout{ position:absolute; pointer-events:auto; background:var(--scalebun-bg); color:var(--scalebun-fg);\n border:1px solid var(--scalebun-border); border-radius:10px; box-shadow:var(--scalebun-shadow);\n padding:10px 30px 10px 12px; max-width:240px; font-size:13px; animation:scalebun-pop .14s ease; }\n\n/* S13 \u2014 command palette */\n.scalebun-palette-backdrop{ position:absolute; inset:0; display:flex; align-items:flex-start; justify-content:center; pointer-events:auto;\n padding-top:12vh; background:rgba(15,18,26,.45); }\n.scalebun-palette{ width:min(560px, 92%); background:var(--scalebun-bg); color:var(--scalebun-fg); border:1px solid var(--scalebun-border);\n border-radius:14px; box-shadow:var(--scalebun-shadow); overflow:hidden; animation:scalebun-pop .14s ease; }\n.scalebun-palette-input{ width:100%; box-sizing:border-box; border:0; border-bottom:1px solid var(--scalebun-border);\n padding:16px 18px; font:inherit; font-size:15px; background:transparent; color:var(--scalebun-fg); outline:none; }\n.scalebun-palette-list{ list-style:none; margin:0; padding:6px; max-height:50vh; overflow-y:auto; }\n.scalebun-palette-item{ display:flex; align-items:center; gap:10px; padding:9px 12px; border-radius:8px; cursor:pointer; }\n.scalebun-palette-item.active{ background:var(--scalebun-accent); color:var(--scalebun-accent-fg); }\n.scalebun-palette-label{ flex:1; font-size:13.5px; }\n.scalebun-palette-hint{ font-size:11.5px; opacity:.7; }\n.scalebun-palette-empty{ padding:16px; text-align:center; color:var(--scalebun-muted); font-size:13px; }\n\n/* Every flex ROW below holds text, and a flex item's min-width defaults to its CONTENT \u2014 so a single\n unbreakable run (a support URL, a deploy hash) forces the row wider than the surface that contains\n it, no matter that the text itself is allowed to wrap. This is the same defect already fixed on\n .scalebun-cta-row; these are the remaining rows, and between them they were 84 of the sweep's last\n 112 findings. The text children already carry overflow-wrap from BLOCKS_CSS \u2014 this is what lets\n them actually use it. */\n.scalebun-panel-head, .scalebun-panel-title, .scalebun-cl-head, .scalebun-cl-title,\n.scalebun-cl-item, .scalebun-cl-label, .scalebun-palette-item, .scalebun-code-bar,\n.scalebun-code-lang, .scalebun-code-copy{ min-width:0; overflow-wrap:anywhere; }\n\n/* S3 \u2014 docked panel + AI shell */\n.scalebun-panel{ position:absolute; top:0; bottom:0; width:360px; display:flex; flex-direction:column;\n background:var(--scalebun-bg); color:var(--scalebun-fg); box-shadow:var(--scalebun-shadow); }\n.scalebun-panel-right{ right:0; border-left:1px solid var(--scalebun-border); }\n.scalebun-panel-left{ left:0; border-right:1px solid var(--scalebun-border); }\n.scalebun-panel-head{ display:flex; align-items:center; gap:8px; padding:12px 14px; border-bottom:1px solid var(--scalebun-border); }\n.scalebun-panel-title{ flex:1; font-weight:700; font-size:14px; }\n.scalebun-panel-thread{ flex:1; overflow-y:auto; padding:14px; display:flex; flex-direction:column; gap:10px; }\n.scalebun-bubble{ max-width:85%; padding:9px 12px; border-radius:12px; font-size:13.5px; line-height:1.45; white-space:pre-wrap; }\n.scalebun-bubble-user{ align-self:flex-end; background:var(--scalebun-accent); color:var(--scalebun-accent-fg); border-bottom-right-radius:4px; }\n.scalebun-bubble-assistant{ align-self:flex-start; background:color-mix(in srgb, var(--scalebun-fg) 7%, transparent); border-bottom-left-radius:4px; }\n.scalebun-bubble.streaming::after{ content:'\u258D'; animation:scalebun-blink 1s step-end infinite; }\n@keyframes scalebun-blink{ 50%{ opacity:0; } }\n.scalebun-panel-composer{ display:flex; gap:8px; padding:12px 14px; border-top:1px solid var(--scalebun-border); align-items:flex-end; }\n.scalebun-panel-input{ flex:1; resize:none; border:1px solid var(--scalebun-border); border-radius:10px; padding:9px 11px;\n font:inherit; font-size:13.5px; background:transparent; color:var(--scalebun-fg); max-height:120px; }\n.scalebun-panel-send{ padding:9px 14px; }\n\n/* S14 \u2014 checklist / onboarding widget */\n.scalebun-checklist{ position:absolute; bottom:16px; right:16px; width:320px; background:var(--scalebun-bg); color:var(--scalebun-fg);\n border:1px solid var(--scalebun-border); border-radius:14px; box-shadow:var(--scalebun-shadow); padding:14px 16px; }\n.scalebun-checklist.complete{ border-color:var(--scalebun-accent); }\n.scalebun-cl-head{ display:flex; align-items:center; gap:6px; margin-bottom:10px; }\n.scalebun-cl-title{ flex:1; font-weight:700; font-size:14px; }\n.scalebun-cl-dock{ font-size:14px; }\n.scalebun-cl-bar{ height:6px; border-radius:3px; background:color-mix(in srgb, var(--scalebun-fg) 10%, transparent); overflow:hidden; }\n.scalebun-cl-fill{ height:100%; background:var(--scalebun-accent); transition:width .25s ease; }\n.scalebun-cl-count{ font-size:11.5px; color:var(--scalebun-muted); margin:6px 0 10px; }\n.scalebun-checklist.collapsed .scalebun-cl-bar, .scalebun-checklist.collapsed .scalebun-cl-count, .scalebun-checklist.collapsed .scalebun-cl-list{ display:none; }\n.scalebun-cl-list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:4px; }\n.scalebun-cl-item{ display:flex; align-items:center; gap:10px; padding:6px 4px; font-size:13.5px; }\n.scalebun-cl-item.done .scalebun-cl-label{ color:var(--scalebun-muted); text-decoration:line-through; }\n.scalebun-cl-check{ width:20px; height:20px; flex:0 0 auto; border-radius:6px; border:1.5px solid var(--scalebun-border);\n background:transparent; color:var(--scalebun-accent-fg); cursor:pointer; font-size:12px; line-height:1; }\n.scalebun-cl-item.done .scalebun-cl-check{ background:var(--scalebun-accent); border-color:var(--scalebun-accent); }\n.scalebun-cl-label{ flex:1; }\n\n/* S15 \u2014 full-page takeover */\n.scalebun-takeover{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; pointer-events:auto;\n background:var(--scalebun-bg); color:var(--scalebun-fg); padding:32px; overflow:auto; animation:var(--scalebun-anim-in, scalebun-fade .2s ease); }\n.scalebun-takeover-inner{ position:relative; max-width:640px; width:100%; text-align:center; }\n.scalebun-takeover-x{ position:absolute; top:-8px; inset-inline-end:-8px; }\n\n/* S12 \u2014 floating launcher */\n.scalebun-launcher{ position:absolute; bottom:0; right:0; display:flex; flex-direction:column; align-items:flex-end; gap:10px; }\n.scalebun-launcher-fab{ width:52px; height:52px; border-radius:50%; border:0; background:var(--scalebun-accent); color:var(--scalebun-accent-fg);\n font-size:22px; cursor:pointer; box-shadow:var(--scalebun-shadow); }\n.scalebun-launcher-menu{ display:flex; flex-direction:column; gap:2px; background:var(--scalebun-bg); color:var(--scalebun-fg);\n border:1px solid var(--scalebun-border); border-radius:12px; box-shadow:var(--scalebun-shadow); padding:6px; min-width:180px;\n animation:scalebun-pop .14s ease; }\n.scalebun-launcher-menu[hidden]{ display:none; }\n.scalebun-launcher-item{ text-align:left; background:none; border:0; color:var(--scalebun-fg); cursor:pointer; font:inherit;\n font-size:13.5px; padding:9px 12px; border-radius:8px; }\n.scalebun-launcher-item:hover{ background:color-mix(in srgb, var(--scalebun-fg) 7%, transparent); }\n";
7
7
  //# sourceMappingURL=styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/styles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,YAAY,y5cAmLxB,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/styles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,YAAY,y3kBAoOxB,CAAC"}
@@ -16,11 +16,16 @@ export const SURFACES_CSS = `
16
16
  The reduced-motion rule in host.ts is marked important and still wins over anything set here. */
17
17
 
18
18
  /* S9 — banner */
19
- .scalebun-banner{ display:flex; align-items:center; gap:12px; padding:10px 16px;
19
+ /* WRAPS rather than overflows. A banner carrying a heading, body, a stat and a CTA measures 407px of
20
+ content, so on any phone it ran past the screen edge and took the page's horizontal scroll with it
21
+ — the one remaining defect that reproduced with the catalog's OWN copy, not stressed content.
22
+ Wrapping to a second row was chosen over dropping the stat or scrolling horizontally: nothing is
23
+ lost, and a banner is already variable-height, so no other surface has to change to allow it. */
24
+ .scalebun-banner{ display:flex; align-items:center; gap:12px; padding:10px 16px; flex-wrap:wrap;
20
25
  background:var(--scalebun-bg); color:var(--scalebun-fg); border-bottom:1px solid var(--scalebun-border);
21
26
  box-shadow:var(--scalebun-shadow); animation:var(--scalebun-anim-in, scalebun-slidedown .18s ease); }
22
27
  .scalebun-banner-bottom{ border-bottom:0; border-top:1px solid var(--scalebun-border); animation:var(--scalebun-anim-in, scalebun-slideup .18s ease); }
23
- .scalebun-banner .scalebun-body{ flex:1; display:flex; align-items:center; gap:12px; min-width:0; }
28
+ .scalebun-banner .scalebun-body{ flex:1; display:flex; align-items:center; gap:12px; min-width:0; flex-wrap:wrap; }
24
29
  .scalebun-banner .scalebun-body>*{ margin:0; }
25
30
  .scalebun-banner .scalebun-cta-row{ margin:0; }
26
31
  @keyframes scalebun-slidedown{ from{ transform:translateY(-100%); } to{ transform:none; } }
@@ -44,7 +49,7 @@ export const SURFACES_CSS = `
44
49
  .scalebun-modal-card[data-size="md"]{ max-width:460px; }
45
50
  .scalebun-modal-card[data-size="lg"]{ max-width:620px; }
46
51
  .scalebun-modal-card[data-size="xl"]{ max-width:820px; }
47
- .scalebun-modal-x{ position:absolute; top:10px; right:10px; }
52
+ .scalebun-modal-x{ position:absolute; top:10px; inset-inline-end:10px; }
48
53
  @keyframes scalebun-fade{ from{ opacity:0; } to{ opacity:1; } }
49
54
  @keyframes scalebun-pop{ from{ transform:scale(.96); opacity:0; } to{ transform:none; opacity:1; } }
50
55
 
@@ -80,7 +85,24 @@ export const SURFACES_CSS = `
80
85
  border-radius:var(--scalebun-radius); box-shadow:var(--scalebun-shadow); padding:14px 16px; max-width:320px;
81
86
  animation:scalebun-pop .14s ease; }
82
87
  .scalebun-pop-body>*:last-child{ margin-bottom:0; }
83
- .scalebun-pop-x{ position:absolute; top:6px; right:6px; }
88
+ .scalebun-pop-x{ position:absolute; top:6px; inset-inline-end:6px; }
89
+ /* A close button is out of flow, so nothing stops a heading running underneath it — the × then
90
+ lands on a word of the title. Reserving the space is the same thing .scalebun-toolbar-callout
91
+ already did with its right padding. Every surface that pairs an absolute × with a heading needs
92
+ it, which the stressed sweep put at nine of them, not the three the authored copy revealed.
93
+
94
+ LOGICAL, not physical. This was padding-right, correct only while text runs left-to-right: in
95
+ RTL a line ENDS on the left and STARTS under the close button, so the reserved gap sat on the
96
+ side the text was leaving and the × landed on the first word instead of the last. The buttons
97
+ use inset-inline-end for the same reason. Caught by sweeping the catalog in Arabic. */
98
+ .scalebun-popover .scalebun-h,
99
+ .scalebun-coachmark .scalebun-h,
100
+ .scalebun-modal-card .scalebun-h,
101
+ .scalebun-inline .scalebun-h,
102
+ .scalebun-toast .scalebun-h,
103
+ .scalebun-banner .scalebun-h,
104
+ .scalebun-takeover-inner .scalebun-h,
105
+ .scalebun-toolbar-callout .scalebun-h{ padding-inline-end:24px; }
84
106
 
85
107
  /* S5 — coachmark + spotlight */
86
108
  .scalebun-coach-spot{ position:fixed; border-radius:8px; box-shadow:0 0 0 9999px rgba(12,10,20,.55);
@@ -89,12 +111,29 @@ export const SURFACES_CSS = `
89
111
  border:1px solid var(--scalebun-border); border-radius:var(--scalebun-radius); box-shadow:var(--scalebun-shadow);
90
112
  padding:14px 16px; max-width:300px; animation:scalebun-pop .14s ease; }
91
113
 
92
- /* S6 — product tour */
93
- .scalebun-tour-card{ max-width:320px; }
94
- .scalebun-tour-center{ top:50%; left:50%; transform:translate(-50%,-50%); }
95
- .scalebun-tour-nav{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:14px; }
96
- .scalebun-tour-prog{ font-size:11.5px; color:var(--scalebun-muted); font-variant-numeric:tabular-nums; }
97
- .scalebun-tour-btns{ display:flex; gap:6px; }
114
+ /* S6 — product tour. The same three phone-only defects fixed in coach/overlay.ts, which carries the
115
+ full reasoning: width is EXPLICIT because a fixed box with left:50% and no width shrink-wraps to
116
+ half the viewport; the heading reserves the space .scalebun-pop-x is absolutely positioned in; and
117
+ the nav's items are flex:none so an overflowing footer wraps intact instead of collapsing the
118
+ progress counter into a one-character column. */
119
+ .scalebun-tour-card{ width:min(320px, calc(100vw - 32px)); }
120
+ .scalebun-tour-card .scalebun-h{ padding-right:20px; }
121
+ /* Centred by transform, and ANIMATED by transform — so the entrance clobbered the centring.
122
+ .scalebun-coachmark carries animation:scalebun-pop, whose keyframes set transform:scale(.96) then
123
+ transform:none. An animated property REPLACES the declared one for the whole run, so for the
124
+ animation's 140ms this card was drawn at left:50%/top:50% with NO translate — sitting half its own
125
+ width down and to the right — then snapped into place when the animation finished. That is the
126
+ visible jump on opening a tour and on every Next.
127
+ The fix keeps the translate inside the keyframes so the centring survives the run. The individual
128
+ translate property would be tidier, but it silently breaks centring where unsupported, and a card
129
+ that never centres is worse than one that briefly animates. */
130
+ .scalebun-tour-center{ top:50%; left:50%; transform:translate(-50%,-50%); animation-name:scalebun-pop-center; }
131
+ @keyframes scalebun-pop-center{
132
+ from{ transform:translate(-50%,-50%) scale(.96); opacity:0; }
133
+ to{ transform:translate(-50%,-50%); opacity:1; } }
134
+ .scalebun-tour-nav{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:14px; flex-wrap:wrap; }
135
+ .scalebun-tour-prog{ font-size:11.5px; color:var(--scalebun-muted); font-variant-numeric:tabular-nums; flex:none; white-space:nowrap; }
136
+ .scalebun-tour-btns{ display:flex; gap:6px; flex:none; }
98
137
  .scalebun-tour-btns .scalebun-btn{ padding:6px 12px; font-size:12.5px; }
99
138
 
100
139
  /* S7 — hotspot / beacon */
@@ -128,6 +167,16 @@ export const SURFACES_CSS = `
128
167
  .scalebun-palette-hint{ font-size:11.5px; opacity:.7; }
129
168
  .scalebun-palette-empty{ padding:16px; text-align:center; color:var(--scalebun-muted); font-size:13px; }
130
169
 
170
+ /* Every flex ROW below holds text, and a flex item's min-width defaults to its CONTENT — so a single
171
+ unbreakable run (a support URL, a deploy hash) forces the row wider than the surface that contains
172
+ it, no matter that the text itself is allowed to wrap. This is the same defect already fixed on
173
+ .scalebun-cta-row; these are the remaining rows, and between them they were 84 of the sweep's last
174
+ 112 findings. The text children already carry overflow-wrap from BLOCKS_CSS — this is what lets
175
+ them actually use it. */
176
+ .scalebun-panel-head, .scalebun-panel-title, .scalebun-cl-head, .scalebun-cl-title,
177
+ .scalebun-cl-item, .scalebun-cl-label, .scalebun-palette-item, .scalebun-code-bar,
178
+ .scalebun-code-lang, .scalebun-code-copy{ min-width:0; overflow-wrap:anywhere; }
179
+
131
180
  /* S3 — docked panel + AI shell */
132
181
  .scalebun-panel{ position:absolute; top:0; bottom:0; width:360px; display:flex; flex-direction:column;
133
182
  background:var(--scalebun-bg); color:var(--scalebun-fg); box-shadow:var(--scalebun-shadow); }
@@ -169,7 +218,7 @@ export const SURFACES_CSS = `
169
218
  .scalebun-takeover{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; pointer-events:auto;
170
219
  background:var(--scalebun-bg); color:var(--scalebun-fg); padding:32px; overflow:auto; animation:var(--scalebun-anim-in, scalebun-fade .2s ease); }
171
220
  .scalebun-takeover-inner{ position:relative; max-width:640px; width:100%; text-align:center; }
172
- .scalebun-takeover-x{ position:absolute; top:-8px; right:-8px; }
221
+ .scalebun-takeover-x{ position:absolute; top:-8px; inset-inline-end:-8px; }
173
222
 
174
223
  /* S12 — floating launcher */
175
224
  .scalebun-launcher{ position:absolute; bottom:0; right:0; display:flex; flex-direction:column; align-items:flex-end; gap:10px; }
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/styles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmL3B,CAAC"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/styles.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoO3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/toolbar.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAalE,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,CAuDpE"}
1
+ {"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/toolbar.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAalE,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,CA0DpE"}
@@ -33,8 +33,11 @@ export function toolbarSurface(ctx) {
33
33
  ? new LiveAnchor({
34
34
  spec: specFromSelector(selector),
35
35
  size: () => {
36
- const r = root.getBoundingClientRect();
37
- return { width: r.width || root.offsetWidth || 220, height: r.height || root.offsetHeight || 80 };
36
+ // offsetWidth/Height, NOT getBoundingClientRect: the rect includes TRANSFORMS, and every
37
+ // anchored surface animates in with a scale. Measuring mid-animation placed the card from
38
+ // a size it was about to stop having, so it painted in the wrong spot and visibly jumped
39
+ // when the entrance finished — measured at ~150ms of wrong position on a tour step.
40
+ return { width: root.offsetWidth || 220, height: root.offsetHeight || 80 };
38
41
  },
39
42
  preferred: { side: preferredSide(ctx), align: 'center' },
40
43
  offset: variant.surfaceOptions?.offset,
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar.js","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/toolbar.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGpE,SAAS,cAAc,CAAC,GAAoB;IAC1C,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;AAC5I,CAAC;AACD,SAAS,aAAa,CAAC,GAAoB;IACzC,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC;IAChD,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAoB;IACjD,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IAC7B,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAErC,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,SAAS,GAAG,0BAA0B,CAAC;IAC5C,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC;IAC1D,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IAEjC,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,mBAAmB,CAAC,GAAG,CAAC;QAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEvB,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC;QAClB,CAAC,CAAC,SAAS,GAAG,2BAA2B,CAAC;QAC1C,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;QACpB,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ;QACrB,CAAC,CAAC,IAAI,UAAU,CAAC;YACb,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC;YAChC,IAAI,EAAE,GAAG,EAAE;gBACT,MAAM,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACvC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;YACpG,CAAC;YACD,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;YACxD,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE,MAAM;YACtC,KAAK,EAAE;gBACL,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE;oBACpB,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC/B,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC1D,CAAC;gBACD,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,iBAAiB,EAAE;gBAC9C,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,QAAS,CAAC;gBAC1D,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC;aACvC;SACF,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC;IAET,OAAO;QACL,EAAE,EAAE,IAAI;QACR,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE;QACjC,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,EAAE,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"toolbar.js","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/toolbar.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tour.d.ts","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/tour.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAwBlE,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,CA2LjE"}
1
+ {"version":3,"file":"tour.d.ts","sourceRoot":"","sources":["../../../../src/features/inapp/surfaces/tour.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAwBlE,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,CA8LjE"}