@syntrologie/runtime-sdk 2.8.0-canary.9 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CAPABILITIES.md +35 -13
- package/dist/{chunk-UURRUKSW.js → chunk-56IOA4JZ.js} +235 -121
- package/dist/chunk-56IOA4JZ.js.map +7 -0
- package/dist/components/TileIcon.d.ts +2 -2
- package/dist/components/emojiToIcon.d.ts +24 -0
- package/dist/index.js +74 -11
- package/dist/index.js.map +3 -3
- package/dist/react.js +1 -1
- package/dist/smart-canvas.esm.js +68 -57
- package/dist/smart-canvas.esm.js.map +4 -4
- package/dist/smart-canvas.js +690 -383
- package/dist/smart-canvas.js.map +4 -4
- package/dist/smart-canvas.min.js +68 -57
- package/dist/smart-canvas.min.js.map +4 -4
- package/dist/version.d.ts +1 -1
- package/package.json +7 -7
- package/schema/canvas-config.schema.json +52 -0
- package/dist/chunk-UURRUKSW.js.map +0 -7
package/dist/smart-canvas.js
CHANGED
|
@@ -12983,6 +12983,11 @@ var SyntrologieSDK = (() => {
|
|
|
12983
12983
|
debounceTimer = setTimeout(() => {
|
|
12984
12984
|
if (disconnected)
|
|
12985
12985
|
return;
|
|
12986
|
+
if (!anchor.isConnected) {
|
|
12987
|
+
observer2.disconnect();
|
|
12988
|
+
disconnected = true;
|
|
12989
|
+
return;
|
|
12990
|
+
}
|
|
12986
12991
|
retries++;
|
|
12987
12992
|
try {
|
|
12988
12993
|
reinsertFn();
|
|
@@ -13024,7 +13029,16 @@ var SyntrologieSDK = (() => {
|
|
|
13024
13029
|
"sup",
|
|
13025
13030
|
"sub",
|
|
13026
13031
|
"a",
|
|
13027
|
-
"button"
|
|
13032
|
+
"button",
|
|
13033
|
+
// SVG elements (for inline Lucide icons in config HTML)
|
|
13034
|
+
"svg",
|
|
13035
|
+
"path",
|
|
13036
|
+
"circle",
|
|
13037
|
+
"line",
|
|
13038
|
+
"polyline",
|
|
13039
|
+
"polygon",
|
|
13040
|
+
"rect",
|
|
13041
|
+
"g"
|
|
13028
13042
|
]);
|
|
13029
13043
|
function sanitizeHtml(html3) {
|
|
13030
13044
|
const hasNative = typeof window.Sanitizer === "function";
|
|
@@ -13159,15 +13173,20 @@ var SyntrologieSDK = (() => {
|
|
|
13159
13173
|
container.removeEventListener("click", deepLinkHandler);
|
|
13160
13174
|
}
|
|
13161
13175
|
guardCleanup();
|
|
13162
|
-
if (
|
|
13163
|
-
|
|
13164
|
-
|
|
13165
|
-
|
|
13166
|
-
restoredEl.
|
|
13167
|
-
|
|
13168
|
-
|
|
13169
|
-
|
|
13170
|
-
|
|
13176
|
+
if (!container.isConnected)
|
|
13177
|
+
return;
|
|
13178
|
+
try {
|
|
13179
|
+
if (action.position === "replace" && originalContent !== null) {
|
|
13180
|
+
const restoredEl = document.createElement(anchorEl.tagName);
|
|
13181
|
+
restoredEl.innerHTML = originalContent;
|
|
13182
|
+
Array.from(anchorEl.attributes).forEach((attr) => {
|
|
13183
|
+
restoredEl.setAttribute(attr.name, attr.value);
|
|
13184
|
+
});
|
|
13185
|
+
container.replaceWith(restoredEl);
|
|
13186
|
+
} else {
|
|
13187
|
+
container.remove();
|
|
13188
|
+
}
|
|
13189
|
+
} catch {
|
|
13171
13190
|
}
|
|
13172
13191
|
},
|
|
13173
13192
|
updateFn: (changes) => {
|
|
@@ -13196,6 +13215,8 @@ var SyntrologieSDK = (() => {
|
|
|
13196
13215
|
});
|
|
13197
13216
|
return {
|
|
13198
13217
|
cleanup: () => {
|
|
13218
|
+
if (!anchorEl.isConnected)
|
|
13219
|
+
return;
|
|
13199
13220
|
anchorEl.textContent = originalText;
|
|
13200
13221
|
},
|
|
13201
13222
|
updateFn: (changes) => {
|
|
@@ -13237,6 +13258,8 @@ var SyntrologieSDK = (() => {
|
|
|
13237
13258
|
});
|
|
13238
13259
|
return {
|
|
13239
13260
|
cleanup: () => {
|
|
13261
|
+
if (!anchorEl.isConnected)
|
|
13262
|
+
return;
|
|
13240
13263
|
if (hadAttribute && originalValue !== null) {
|
|
13241
13264
|
anchorEl.setAttribute(action.attr, originalValue);
|
|
13242
13265
|
} else {
|
|
@@ -13270,6 +13293,8 @@ var SyntrologieSDK = (() => {
|
|
|
13270
13293
|
});
|
|
13271
13294
|
return {
|
|
13272
13295
|
cleanup: () => {
|
|
13296
|
+
if (!anchorEl.isConnected)
|
|
13297
|
+
return;
|
|
13273
13298
|
if (!hadClass) {
|
|
13274
13299
|
anchorEl.classList.remove(action.className);
|
|
13275
13300
|
}
|
|
@@ -13296,6 +13321,8 @@ var SyntrologieSDK = (() => {
|
|
|
13296
13321
|
});
|
|
13297
13322
|
return {
|
|
13298
13323
|
cleanup: () => {
|
|
13324
|
+
if (!anchorEl.isConnected)
|
|
13325
|
+
return;
|
|
13299
13326
|
if (hadClass) {
|
|
13300
13327
|
anchorEl.classList.add(action.className);
|
|
13301
13328
|
}
|
|
@@ -13328,6 +13355,8 @@ var SyntrologieSDK = (() => {
|
|
|
13328
13355
|
});
|
|
13329
13356
|
return {
|
|
13330
13357
|
cleanup: () => {
|
|
13358
|
+
if (!anchorEl.isConnected)
|
|
13359
|
+
return;
|
|
13331
13360
|
for (const [prop, originalValue] of originalStyles) {
|
|
13332
13361
|
if (originalValue) {
|
|
13333
13362
|
anchorEl.style.setProperty(prop, originalValue);
|
|
@@ -14578,8 +14607,14 @@ var SyntrologieSDK = (() => {
|
|
|
14578
14607
|
scrim.style.pointerEvents = "none";
|
|
14579
14608
|
scrim.style.opacity = "0";
|
|
14580
14609
|
setTimeout(() => {
|
|
14581
|
-
|
|
14582
|
-
|
|
14610
|
+
try {
|
|
14611
|
+
scrim.remove();
|
|
14612
|
+
} catch {
|
|
14613
|
+
}
|
|
14614
|
+
try {
|
|
14615
|
+
ring.remove();
|
|
14616
|
+
} catch {
|
|
14617
|
+
}
|
|
14583
14618
|
}, 220);
|
|
14584
14619
|
}
|
|
14585
14620
|
};
|
|
@@ -14607,7 +14642,16 @@ var SyntrologieSDK = (() => {
|
|
|
14607
14642
|
"sup",
|
|
14608
14643
|
"sub",
|
|
14609
14644
|
"a",
|
|
14610
|
-
"button"
|
|
14645
|
+
"button",
|
|
14646
|
+
// SVG elements (for inline Lucide icons in config HTML)
|
|
14647
|
+
"svg",
|
|
14648
|
+
"path",
|
|
14649
|
+
"circle",
|
|
14650
|
+
"line",
|
|
14651
|
+
"polyline",
|
|
14652
|
+
"polygon",
|
|
14653
|
+
"rect",
|
|
14654
|
+
"g"
|
|
14611
14655
|
]);
|
|
14612
14656
|
function sanitizeHtml2(html3) {
|
|
14613
14657
|
const hasNative = typeof window.Sanitizer === "function";
|
|
@@ -14814,8 +14858,14 @@ var SyntrologieSDK = (() => {
|
|
|
14814
14858
|
modal2.style.transform = "translate(-50%, -50%) scale(0.95)";
|
|
14815
14859
|
scrimEl.style.opacity = "0";
|
|
14816
14860
|
setTimeout(() => {
|
|
14817
|
-
|
|
14818
|
-
|
|
14861
|
+
try {
|
|
14862
|
+
modal2.remove();
|
|
14863
|
+
} catch {
|
|
14864
|
+
}
|
|
14865
|
+
try {
|
|
14866
|
+
scrimEl.remove();
|
|
14867
|
+
} catch {
|
|
14868
|
+
}
|
|
14819
14869
|
}, 200);
|
|
14820
14870
|
context.publishEvent("action.modal_dismissed", {
|
|
14821
14871
|
actionClicked
|
|
@@ -16327,10 +16377,12 @@ var SyntrologieSDK = (() => {
|
|
|
16327
16377
|
};
|
|
16328
16378
|
}
|
|
16329
16379
|
function showTooltip(anchorEl, overlayRoot, opts) {
|
|
16330
|
-
|
|
16331
|
-
|
|
16332
|
-
|
|
16333
|
-
|
|
16380
|
+
if (!opts.trigger || opts.trigger === "immediate") {
|
|
16381
|
+
const rect = anchorEl.getBoundingClientRect();
|
|
16382
|
+
const isLargeElement = rect.width > window.innerWidth * 0.8 || rect.height > window.innerHeight * 0.8;
|
|
16383
|
+
if (!isLargeElement) {
|
|
16384
|
+
anchorEl.scrollIntoView({ behavior: "smooth", block: "center", inline: "center" });
|
|
16385
|
+
}
|
|
16334
16386
|
}
|
|
16335
16387
|
const div = document.createElement("div");
|
|
16336
16388
|
div.className = "syntro-tooltip";
|
|
@@ -16540,7 +16592,12 @@ var SyntrologieSDK = (() => {
|
|
|
16540
16592
|
}
|
|
16541
16593
|
div.style.pointerEvents = "none";
|
|
16542
16594
|
div.style.opacity = "0";
|
|
16543
|
-
setTimeout(() =>
|
|
16595
|
+
setTimeout(() => {
|
|
16596
|
+
try {
|
|
16597
|
+
div.remove();
|
|
16598
|
+
} catch {
|
|
16599
|
+
}
|
|
16600
|
+
}, 200);
|
|
16544
16601
|
}
|
|
16545
16602
|
};
|
|
16546
16603
|
return handle;
|
|
@@ -16573,7 +16630,7 @@ var SyntrologieSDK = (() => {
|
|
|
16573
16630
|
}
|
|
16574
16631
|
|
|
16575
16632
|
// ../adaptives/adaptive-overlays/dist/WorkflowWidget.js
|
|
16576
|
-
function showWorkflowToast(
|
|
16633
|
+
function showWorkflowToast(notification) {
|
|
16577
16634
|
const toast = document.createElement("div");
|
|
16578
16635
|
toast.setAttribute("data-testid", "workflow-toast");
|
|
16579
16636
|
toast.className = "se-fixed se-bottom-4 se-right-4 se-z-50";
|
|
@@ -16607,7 +16664,7 @@ var SyntrologieSDK = (() => {
|
|
|
16607
16664
|
bodyEl.textContent = notification.body;
|
|
16608
16665
|
toast.appendChild(bodyEl);
|
|
16609
16666
|
}
|
|
16610
|
-
|
|
16667
|
+
document.body.appendChild(toast);
|
|
16611
16668
|
let removeTimer;
|
|
16612
16669
|
const fadeTimer = setTimeout(() => {
|
|
16613
16670
|
toast.style.opacity = "0";
|
|
@@ -16696,10 +16753,10 @@ var SyntrologieSDK = (() => {
|
|
|
16696
16753
|
return newEntries.length > 0 ? [...prev, ...newEntries] : prev;
|
|
16697
16754
|
});
|
|
16698
16755
|
for (const [tourId, { meta }] of tourWorkflows) {
|
|
16699
|
-
if (!notifiedRef.current.has(tourId) && meta.notification &&
|
|
16756
|
+
if (!notifiedRef.current.has(tourId) && meta.notification && !dismissed.includes(tourId) && !completed[tourId]) {
|
|
16700
16757
|
notifiedRef.current.add(tourId);
|
|
16701
16758
|
stateNs?.set?.("notified", [...notifiedRef.current]);
|
|
16702
|
-
const cleanup = showWorkflowToast(
|
|
16759
|
+
const cleanup = showWorkflowToast(meta.notification);
|
|
16703
16760
|
toastCleanupsRef.current.push(cleanup);
|
|
16704
16761
|
}
|
|
16705
16762
|
}
|
|
@@ -16729,8 +16786,8 @@ var SyntrologieSDK = (() => {
|
|
|
16729
16786
|
notifiedRef.current.add(tourId);
|
|
16730
16787
|
stateNs?.set?.("notified", [...notifiedRef.current]);
|
|
16731
16788
|
const workflow = currentWorkflows.get(tourId);
|
|
16732
|
-
if (workflow?.meta.notification
|
|
16733
|
-
const cleanup = showWorkflowToast(
|
|
16789
|
+
if (workflow?.meta.notification) {
|
|
16790
|
+
const cleanup = showWorkflowToast(workflow.meta.notification);
|
|
16734
16791
|
toastCleanupsRef.current.push(cleanup);
|
|
16735
16792
|
}
|
|
16736
16793
|
}
|
|
@@ -16871,6 +16928,7 @@ var SyntrologieSDK = (() => {
|
|
|
16871
16928
|
cleanup: () => {
|
|
16872
16929
|
handle.destroy();
|
|
16873
16930
|
anchorEl.removeAttribute("data-syntro-highlight");
|
|
16931
|
+
anchorEl.removeAttribute("data-syntro-highlight-dismissed");
|
|
16874
16932
|
}
|
|
16875
16933
|
};
|
|
16876
16934
|
};
|
|
@@ -16959,6 +17017,8 @@ var SyntrologieSDK = (() => {
|
|
|
16959
17017
|
return {
|
|
16960
17018
|
cleanup: () => {
|
|
16961
17019
|
clearTimeout(timeoutId);
|
|
17020
|
+
if (!anchorEl.isConnected)
|
|
17021
|
+
return;
|
|
16962
17022
|
anchorEl.style.animation = originalAnimation;
|
|
16963
17023
|
anchorEl.removeAttribute("data-syntro-pulse");
|
|
16964
17024
|
}
|
|
@@ -17027,7 +17087,12 @@ var SyntrologieSDK = (() => {
|
|
|
17027
17087
|
});
|
|
17028
17088
|
return {
|
|
17029
17089
|
cleanup: () => {
|
|
17030
|
-
|
|
17090
|
+
try {
|
|
17091
|
+
badge2.remove();
|
|
17092
|
+
} catch {
|
|
17093
|
+
}
|
|
17094
|
+
if (!anchorEl.isConnected)
|
|
17095
|
+
return;
|
|
17031
17096
|
if (originalPosition !== void 0) {
|
|
17032
17097
|
anchorEl.style.position = originalPosition;
|
|
17033
17098
|
}
|
|
@@ -20426,7 +20491,10 @@ ${text2}</tr>
|
|
|
20426
20491
|
},
|
|
20427
20492
|
item: {
|
|
20428
20493
|
backgroundColor: "var(--sc-content-background)",
|
|
20429
|
-
|
|
20494
|
+
borderTop: "var(--sc-content-border)",
|
|
20495
|
+
borderRight: "var(--sc-content-border)",
|
|
20496
|
+
borderBottom: "var(--sc-content-border)",
|
|
20497
|
+
borderLeft: "var(--sc-content-border)"
|
|
20430
20498
|
},
|
|
20431
20499
|
itemExpanded: {
|
|
20432
20500
|
boxShadow: "0 4px 12px rgba(0, 0, 0, 0.08)"
|
|
@@ -20465,7 +20533,10 @@ ${text2}</tr>
|
|
|
20465
20533
|
},
|
|
20466
20534
|
item: {
|
|
20467
20535
|
backgroundColor: "var(--sc-content-background)",
|
|
20468
|
-
|
|
20536
|
+
borderTop: "var(--sc-content-border)",
|
|
20537
|
+
borderRight: "var(--sc-content-border)",
|
|
20538
|
+
borderBottom: "var(--sc-content-border)",
|
|
20539
|
+
borderLeft: "var(--sc-content-border)"
|
|
20469
20540
|
},
|
|
20470
20541
|
itemExpanded: {
|
|
20471
20542
|
boxShadow: "0 4px 12px rgba(0, 0, 0, 0.15)"
|
|
@@ -20846,6 +20917,20 @@ ${text2}</tr>
|
|
|
20846
20917
|
var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1);
|
|
20847
20918
|
var import_react5 = __toESM(require_react(), 1);
|
|
20848
20919
|
var import_client4 = __toESM(require_client(), 1);
|
|
20920
|
+
var EMOJI_SVG_MAP = {
|
|
20921
|
+
"\u{1F4B5}": '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="12" x="2" y="6" rx="2"/><circle cx="12" cy="12" r="2"/><path d="M6 12h.01M18 12h.01"/></svg>',
|
|
20922
|
+
"\u{1F3DB}\uFE0F": '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="3" x2="21" y1="22" y2="22"/><line x1="6" x2="6" y1="18" y2="11"/><line x1="10" x2="10" y1="18" y2="11"/><line x1="14" x2="14" y1="18" y2="11"/><line x1="18" x2="18" y1="18" y2="11"/><polygon points="12 2 20 7 4 7"/></svg>',
|
|
20923
|
+
"\u23ED\uFE0F": '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="5 4 15 12 5 20 5 4"/><line x1="19" x2="19" y1="5" y2="19"/></svg>',
|
|
20924
|
+
"\u27A1\uFE0F": '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg>',
|
|
20925
|
+
"\u{1F4A1}": '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"/><path d="M9 18h6"/><path d="M10 22h4"/></svg>',
|
|
20926
|
+
"\u{1F4B0}": '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="12" x="2" y="6" rx="2"/><circle cx="12" cy="12" r="2"/><path d="M6 12h.01M18 12h.01"/></svg>',
|
|
20927
|
+
"\u{1F4CB}": '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="8" height="4" x="8" y="2" rx="1" ry="1"/><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/><path d="M12 11h4"/><path d="M12 16h4"/><path d="M8 11h.01"/><path d="M8 16h.01"/></svg>',
|
|
20928
|
+
"\u2705": '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><path d="m9 11 3 3L22 4"/></svg>',
|
|
20929
|
+
"\u26A0\uFE0F": '<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg>'
|
|
20930
|
+
};
|
|
20931
|
+
function renderIcon(emoji) {
|
|
20932
|
+
return EMOJI_SVG_MAP[emoji] ?? escapeHtml(emoji);
|
|
20933
|
+
}
|
|
20849
20934
|
function escapeHtml(str) {
|
|
20850
20935
|
return str.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
20851
20936
|
}
|
|
@@ -20995,10 +21080,29 @@ ${text2}</tr>
|
|
|
20995
21080
|
}
|
|
20996
21081
|
}
|
|
20997
21082
|
};
|
|
20998
|
-
function
|
|
21083
|
+
function routeMatchesCurrent(routes) {
|
|
21084
|
+
if (typeof window === "undefined")
|
|
21085
|
+
return false;
|
|
21086
|
+
const current = window.location.pathname;
|
|
21087
|
+
return routes.some((route) => {
|
|
21088
|
+
const routePath = route.split("?")[0].split("#")[0];
|
|
21089
|
+
if (routePath.endsWith("/**")) {
|
|
21090
|
+
return current.startsWith(routePath.slice(0, -3));
|
|
21091
|
+
}
|
|
21092
|
+
return current === routePath;
|
|
21093
|
+
});
|
|
21094
|
+
}
|
|
21095
|
+
function pulseElement(el) {
|
|
21096
|
+
const keyframes = [
|
|
21097
|
+
{ boxShadow: "0 0 0 0 rgba(13, 148, 136, 0.5)" },
|
|
21098
|
+
{ boxShadow: "0 0 0 8px rgba(13, 148, 136, 0)" }
|
|
21099
|
+
];
|
|
21100
|
+
el.animate(keyframes, { duration: 600, iterations: 3, easing: "ease-out" });
|
|
21101
|
+
}
|
|
21102
|
+
function NavTipItem({ item, isExpanded, isLast, onToggle, onNavigate, onFocusAnchor, theme }) {
|
|
20999
21103
|
const [isHovered, setIsHovered] = (0, import_react5.useState)(false);
|
|
21000
21104
|
const colors = themeStyles2[theme];
|
|
21001
|
-
const { title, description, href, icon, external } = item.config;
|
|
21105
|
+
const { title, description, href, icon, external, anchor } = item.config;
|
|
21002
21106
|
const itemStyle = {
|
|
21003
21107
|
...baseStyles2.item,
|
|
21004
21108
|
...colors.item,
|
|
@@ -21020,14 +21124,22 @@ ${text2}</tr>
|
|
|
21020
21124
|
maxHeight: isExpanded ? "500px" : "0",
|
|
21021
21125
|
paddingBottom: isExpanded ? "16px" : "0"
|
|
21022
21126
|
};
|
|
21127
|
+
const effectiveHref = anchor ? Array.isArray(anchor.route) ? anchor.route[0] : anchor.route : href;
|
|
21128
|
+
const isSamePage = anchor ? routeMatchesCurrent(Array.isArray(anchor.route) ? anchor.route : [anchor.route]) : effectiveHref ? routeMatchesCurrent([effectiveHref]) : false;
|
|
21129
|
+
const hasSelector = anchor?.selector && anchor.selector !== "*";
|
|
21130
|
+
const isFocusAction = isSamePage && hasSelector;
|
|
21131
|
+
const hasAction = !!effectiveHref || isFocusAction;
|
|
21023
21132
|
const handleLinkClick = (e2) => {
|
|
21024
21133
|
e2.preventDefault();
|
|
21025
21134
|
e2.stopPropagation();
|
|
21026
|
-
if (
|
|
21027
|
-
|
|
21135
|
+
if (isFocusAction && anchor) {
|
|
21136
|
+
onFocusAnchor(anchor);
|
|
21137
|
+
} else if (effectiveHref) {
|
|
21138
|
+
onNavigate(effectiveHref, external ?? false);
|
|
21028
21139
|
}
|
|
21029
21140
|
};
|
|
21030
|
-
|
|
21141
|
+
const ctaLabel = isFocusAction ? `Focus \u2192` : external ? `Go \u2197` : `Go \u2192`;
|
|
21142
|
+
return (0, import_jsx_runtime5.jsxs)("div", { style: itemStyle, "data-nav-tip-id": item.config.id, children: [(0, import_jsx_runtime5.jsxs)("button", { type: "button", style: headerStyle, onClick: onToggle, onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), "aria-expanded": isExpanded, children: [icon && (0, import_jsx_runtime5.jsx)("span", { style: baseStyles2.icon, dangerouslySetInnerHTML: { __html: renderIcon(icon) } }), (0, import_jsx_runtime5.jsx)("span", { children: title }), (0, import_jsx_runtime5.jsx)("span", { style: chevronStyle, children: "\u203A" })] }), (0, import_jsx_runtime5.jsxs)("div", { style: bodyStyle, "aria-hidden": !isExpanded, children: [(0, import_jsx_runtime5.jsx)("p", { style: baseStyles2.description, children: description }), hasAction && (0, import_jsx_runtime5.jsx)("a", { href: effectiveHref || "#", onClick: handleLinkClick, style: { ...baseStyles2.linkButton, ...colors.linkButton }, target: external ? "_blank" : void 0, rel: external ? "noopener noreferrer" : void 0, children: ctaLabel })] })] });
|
|
21031
21143
|
}
|
|
21032
21144
|
function NavWidget({ config, runtime: runtime7, instanceId }) {
|
|
21033
21145
|
const [renderTick, forceUpdate] = (0, import_react5.useReducer)((x2) => x2 + 1, 0);
|
|
@@ -21124,9 +21236,24 @@ ${text2}</tr>
|
|
|
21124
21236
|
} else {
|
|
21125
21237
|
const url = new URL(href, window.location.origin);
|
|
21126
21238
|
url.search = window.location.search;
|
|
21127
|
-
window.
|
|
21239
|
+
window.history.pushState(null, "", url.toString());
|
|
21240
|
+
window.dispatchEvent(new PopStateEvent("popstate"));
|
|
21128
21241
|
}
|
|
21129
21242
|
}, [runtime7.events, instanceId]);
|
|
21243
|
+
const handleFocusAnchor = (0, import_react5.useCallback)((anchor) => {
|
|
21244
|
+
const el = document.querySelector(anchor.selector);
|
|
21245
|
+
if (!(el instanceof HTMLElement))
|
|
21246
|
+
return;
|
|
21247
|
+
runtime7.events.publish("nav:tip_focused", {
|
|
21248
|
+
instanceId,
|
|
21249
|
+
selector: anchor.selector,
|
|
21250
|
+
route: anchor.route,
|
|
21251
|
+
timestamp: Date.now()
|
|
21252
|
+
});
|
|
21253
|
+
el.scrollIntoView({ behavior: "smooth", block: "center" });
|
|
21254
|
+
pulseElement(el);
|
|
21255
|
+
setTimeout(() => el.focus(), 400);
|
|
21256
|
+
}, [runtime7.events, instanceId]);
|
|
21130
21257
|
const containerStyle = {
|
|
21131
21258
|
...baseStyles2.container,
|
|
21132
21259
|
...themeStyles2[resolvedTheme].container
|
|
@@ -21139,7 +21266,7 @@ ${text2}</tr>
|
|
|
21139
21266
|
...baseStyles2.emptyState,
|
|
21140
21267
|
...themeStyles2[resolvedTheme].emptyState
|
|
21141
21268
|
};
|
|
21142
|
-
const renderItems = (items) => items.map((tip, index2) => (0, import_jsx_runtime5.jsx)(NavTipItem, { item: tip, isExpanded: expandedIds.has(tip.config.id), isLast: index2 === items.length - 1, onToggle: () => handleToggle(tip.config.id), onNavigate: handleNavigate, theme: resolvedTheme }, tip.config.id));
|
|
21269
|
+
const renderItems = (items) => items.map((tip, index2) => (0, import_jsx_runtime5.jsx)(NavTipItem, { item: tip, isExpanded: expandedIds.has(tip.config.id), isLast: index2 === items.length - 1, onToggle: () => handleToggle(tip.config.id), onNavigate: handleNavigate, onFocusAnchor: handleFocusAnchor, theme: resolvedTheme }, tip.config.id));
|
|
21143
21270
|
if (visibleTips.length === 0) {
|
|
21144
21271
|
return (0, import_jsx_runtime5.jsx)("div", { style: containerStyle, "data-adaptive-id": instanceId, "data-adaptive-type": "adaptive-nav", children: (0, import_jsx_runtime5.jsx)("div", { style: emptyStateStyle, children: "You're all set for now! We'll share helpful tips here when they're relevant to what you're doing." }) });
|
|
21145
21272
|
}
|
|
@@ -21168,7 +21295,7 @@ ${text2}</tr>
|
|
|
21168
21295
|
<div style="font-family: system-ui; max-width: 100%;">
|
|
21169
21296
|
${tips.map((tip) => `
|
|
21170
21297
|
<div style="margin-bottom: 4px; padding: 12px 16px; background: ${slateGrey[12]}; border-radius: 8px;">
|
|
21171
|
-
${tip.config.icon ? `<span>${
|
|
21298
|
+
${tip.config.icon ? `<span>${renderIcon(tip.config.icon)}</span> ` : ""}<strong>${escapeHtml(tip.config.title)}</strong>
|
|
21172
21299
|
<p style="margin-top: 8px; color: ${slateGrey[6]}; font-size: 13px;">${escapeHtml(tip.config.description)}</p>
|
|
21173
21300
|
${tip.config.href ? `<a href="${escapeHtml(tip.config.href)}" style="color: ${purple[2]}; font-size: 13px;">Go →</a>` : ""}
|
|
21174
21301
|
</div>
|
|
@@ -21438,7 +21565,7 @@ ${text2}</tr>
|
|
|
21438
21565
|
}
|
|
21439
21566
|
|
|
21440
21567
|
// src/version.ts
|
|
21441
|
-
var SDK_VERSION = "2.
|
|
21568
|
+
var SDK_VERSION = "2.9.0";
|
|
21442
21569
|
|
|
21443
21570
|
// src/types.ts
|
|
21444
21571
|
var SDK_SCHEMA_VERSION = "2.0";
|
|
@@ -21836,7 +21963,8 @@ ${text2}</tr>
|
|
|
21836
21963
|
if (cond.type === "event_count" && cond.key) {
|
|
21837
21964
|
const counter = cond.counter;
|
|
21838
21965
|
const predicate = counter ? buildPredicate(counter) : () => true;
|
|
21839
|
-
|
|
21966
|
+
const needsTimestamps = typeof cond.withinMs === "number";
|
|
21967
|
+
accumulator.register(cond.key, predicate, needsTimestamps);
|
|
21840
21968
|
}
|
|
21841
21969
|
}
|
|
21842
21970
|
}
|
|
@@ -22356,8 +22484,390 @@ ${text2}</tr>
|
|
|
22356
22484
|
custom: customCanvasEvent
|
|
22357
22485
|
};
|
|
22358
22486
|
|
|
22359
|
-
//
|
|
22487
|
+
// ../../node_modules/lucide-react/dist/esm/createLucideIcon.js
|
|
22488
|
+
var import_react8 = __toESM(require_react());
|
|
22489
|
+
|
|
22490
|
+
// ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
22491
|
+
var mergeClasses = (...classes2) => classes2.filter((className, index2, array) => {
|
|
22492
|
+
return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index2;
|
|
22493
|
+
}).join(" ").trim();
|
|
22494
|
+
|
|
22495
|
+
// ../../node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js
|
|
22496
|
+
var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
22497
|
+
|
|
22498
|
+
// ../../node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js
|
|
22499
|
+
var toCamelCase = (string) => string.replace(
|
|
22500
|
+
/^([A-Z])|[\s-_]+(\w)/g,
|
|
22501
|
+
(match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
|
|
22502
|
+
);
|
|
22503
|
+
|
|
22504
|
+
// ../../node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js
|
|
22505
|
+
var toPascalCase = (string) => {
|
|
22506
|
+
const camelCase = toCamelCase(string);
|
|
22507
|
+
return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
|
|
22508
|
+
};
|
|
22509
|
+
|
|
22510
|
+
// ../../node_modules/lucide-react/dist/esm/Icon.js
|
|
22511
|
+
var import_react7 = __toESM(require_react());
|
|
22512
|
+
|
|
22513
|
+
// ../../node_modules/lucide-react/dist/esm/defaultAttributes.js
|
|
22514
|
+
var defaultAttributes = {
|
|
22515
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
22516
|
+
width: 24,
|
|
22517
|
+
height: 24,
|
|
22518
|
+
viewBox: "0 0 24 24",
|
|
22519
|
+
fill: "none",
|
|
22520
|
+
stroke: "currentColor",
|
|
22521
|
+
strokeWidth: 2,
|
|
22522
|
+
strokeLinecap: "round",
|
|
22523
|
+
strokeLinejoin: "round"
|
|
22524
|
+
};
|
|
22525
|
+
|
|
22526
|
+
// ../../node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js
|
|
22527
|
+
var hasA11yProp = (props) => {
|
|
22528
|
+
for (const prop in props) {
|
|
22529
|
+
if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
|
|
22530
|
+
return true;
|
|
22531
|
+
}
|
|
22532
|
+
}
|
|
22533
|
+
return false;
|
|
22534
|
+
};
|
|
22535
|
+
|
|
22536
|
+
// ../../node_modules/lucide-react/dist/esm/Icon.js
|
|
22537
|
+
var Icon = (0, import_react7.forwardRef)(
|
|
22538
|
+
({
|
|
22539
|
+
color = "currentColor",
|
|
22540
|
+
size: size2 = 24,
|
|
22541
|
+
strokeWidth = 2,
|
|
22542
|
+
absoluteStrokeWidth,
|
|
22543
|
+
className = "",
|
|
22544
|
+
children,
|
|
22545
|
+
iconNode,
|
|
22546
|
+
...rest
|
|
22547
|
+
}, ref) => (0, import_react7.createElement)(
|
|
22548
|
+
"svg",
|
|
22549
|
+
{
|
|
22550
|
+
ref,
|
|
22551
|
+
...defaultAttributes,
|
|
22552
|
+
width: size2,
|
|
22553
|
+
height: size2,
|
|
22554
|
+
stroke: color,
|
|
22555
|
+
strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size2) : strokeWidth,
|
|
22556
|
+
className: mergeClasses("lucide", className),
|
|
22557
|
+
...!children && !hasA11yProp(rest) && { "aria-hidden": "true" },
|
|
22558
|
+
...rest
|
|
22559
|
+
},
|
|
22560
|
+
[
|
|
22561
|
+
...iconNode.map(([tag3, attrs]) => (0, import_react7.createElement)(tag3, attrs)),
|
|
22562
|
+
...Array.isArray(children) ? children : [children]
|
|
22563
|
+
]
|
|
22564
|
+
)
|
|
22565
|
+
);
|
|
22566
|
+
|
|
22567
|
+
// ../../node_modules/lucide-react/dist/esm/createLucideIcon.js
|
|
22568
|
+
var createLucideIcon = (iconName, iconNode) => {
|
|
22569
|
+
const Component = (0, import_react8.forwardRef)(
|
|
22570
|
+
({ className, ...props }, ref) => (0, import_react8.createElement)(Icon, {
|
|
22571
|
+
ref,
|
|
22572
|
+
iconNode,
|
|
22573
|
+
className: mergeClasses(
|
|
22574
|
+
`lucide-${toKebabCase(toPascalCase(iconName))}`,
|
|
22575
|
+
`lucide-${iconName}`,
|
|
22576
|
+
className
|
|
22577
|
+
),
|
|
22578
|
+
...props
|
|
22579
|
+
})
|
|
22580
|
+
);
|
|
22581
|
+
Component.displayName = toPascalCase(iconName);
|
|
22582
|
+
return Component;
|
|
22583
|
+
};
|
|
22584
|
+
|
|
22585
|
+
// ../../node_modules/lucide-react/dist/esm/icons/arrow-right.js
|
|
22586
|
+
var __iconNode = [
|
|
22587
|
+
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
22588
|
+
["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
|
|
22589
|
+
];
|
|
22590
|
+
var ArrowRight = createLucideIcon("arrow-right", __iconNode);
|
|
22591
|
+
|
|
22592
|
+
// ../../node_modules/lucide-react/dist/esm/icons/banknote.js
|
|
22593
|
+
var __iconNode2 = [
|
|
22594
|
+
["rect", { width: "20", height: "12", x: "2", y: "6", rx: "2", key: "9lu3g6" }],
|
|
22595
|
+
["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }],
|
|
22596
|
+
["path", { d: "M6 12h.01M18 12h.01", key: "113zkx" }]
|
|
22597
|
+
];
|
|
22598
|
+
var Banknote = createLucideIcon("banknote", __iconNode2);
|
|
22599
|
+
|
|
22600
|
+
// ../../node_modules/lucide-react/dist/esm/icons/bell.js
|
|
22601
|
+
var __iconNode3 = [
|
|
22602
|
+
["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
|
|
22603
|
+
[
|
|
22604
|
+
"path",
|
|
22605
|
+
{
|
|
22606
|
+
d: "M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",
|
|
22607
|
+
key: "11g9vi"
|
|
22608
|
+
}
|
|
22609
|
+
]
|
|
22610
|
+
];
|
|
22611
|
+
var Bell = createLucideIcon("bell", __iconNode3);
|
|
22612
|
+
|
|
22613
|
+
// ../../node_modules/lucide-react/dist/esm/icons/book-open.js
|
|
22614
|
+
var __iconNode4 = [
|
|
22615
|
+
["path", { d: "M12 7v14", key: "1akyts" }],
|
|
22616
|
+
[
|
|
22617
|
+
"path",
|
|
22618
|
+
{
|
|
22619
|
+
d: "M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",
|
|
22620
|
+
key: "ruj8y"
|
|
22621
|
+
}
|
|
22622
|
+
]
|
|
22623
|
+
];
|
|
22624
|
+
var BookOpen = createLucideIcon("book-open", __iconNode4);
|
|
22625
|
+
|
|
22626
|
+
// ../../node_modules/lucide-react/dist/esm/icons/circle-check-big.js
|
|
22627
|
+
var __iconNode5 = [
|
|
22628
|
+
["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
|
|
22629
|
+
["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
|
|
22630
|
+
];
|
|
22631
|
+
var CircleCheckBig = createLucideIcon("circle-check-big", __iconNode5);
|
|
22632
|
+
|
|
22633
|
+
// ../../node_modules/lucide-react/dist/esm/icons/circle-question-mark.js
|
|
22634
|
+
var __iconNode6 = [
|
|
22635
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
22636
|
+
["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
|
|
22637
|
+
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
22638
|
+
];
|
|
22639
|
+
var CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode6);
|
|
22640
|
+
|
|
22641
|
+
// ../../node_modules/lucide-react/dist/esm/icons/clipboard-list.js
|
|
22642
|
+
var __iconNode7 = [
|
|
22643
|
+
["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
|
|
22644
|
+
[
|
|
22645
|
+
"path",
|
|
22646
|
+
{
|
|
22647
|
+
d: "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",
|
|
22648
|
+
key: "116196"
|
|
22649
|
+
}
|
|
22650
|
+
],
|
|
22651
|
+
["path", { d: "M12 11h4", key: "1jrz19" }],
|
|
22652
|
+
["path", { d: "M12 16h4", key: "n85exb" }],
|
|
22653
|
+
["path", { d: "M8 11h.01", key: "1dfujw" }],
|
|
22654
|
+
["path", { d: "M8 16h.01", key: "18s6g9" }]
|
|
22655
|
+
];
|
|
22656
|
+
var ClipboardList = createLucideIcon("clipboard-list", __iconNode7);
|
|
22657
|
+
|
|
22658
|
+
// ../../node_modules/lucide-react/dist/esm/icons/compass.js
|
|
22659
|
+
var __iconNode8 = [
|
|
22660
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
22661
|
+
[
|
|
22662
|
+
"path",
|
|
22663
|
+
{
|
|
22664
|
+
d: "m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",
|
|
22665
|
+
key: "9ktpf1"
|
|
22666
|
+
}
|
|
22667
|
+
]
|
|
22668
|
+
];
|
|
22669
|
+
var Compass = createLucideIcon("compass", __iconNode8);
|
|
22670
|
+
|
|
22671
|
+
// ../../node_modules/lucide-react/dist/esm/icons/file-text.js
|
|
22672
|
+
var __iconNode9 = [
|
|
22673
|
+
[
|
|
22674
|
+
"path",
|
|
22675
|
+
{
|
|
22676
|
+
d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
|
|
22677
|
+
key: "1oefj6"
|
|
22678
|
+
}
|
|
22679
|
+
],
|
|
22680
|
+
["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }],
|
|
22681
|
+
["path", { d: "M10 9H8", key: "b1mrlr" }],
|
|
22682
|
+
["path", { d: "M16 13H8", key: "t4e002" }],
|
|
22683
|
+
["path", { d: "M16 17H8", key: "z1uh3a" }]
|
|
22684
|
+
];
|
|
22685
|
+
var FileText = createLucideIcon("file-text", __iconNode9);
|
|
22686
|
+
|
|
22687
|
+
// ../../node_modules/lucide-react/dist/esm/icons/gamepad-2.js
|
|
22688
|
+
var __iconNode10 = [
|
|
22689
|
+
["line", { x1: "6", x2: "10", y1: "11", y2: "11", key: "1gktln" }],
|
|
22690
|
+
["line", { x1: "8", x2: "8", y1: "9", y2: "13", key: "qnk9ow" }],
|
|
22691
|
+
["line", { x1: "15", x2: "15.01", y1: "12", y2: "12", key: "krot7o" }],
|
|
22692
|
+
["line", { x1: "18", x2: "18.01", y1: "10", y2: "10", key: "1lcuu1" }],
|
|
22693
|
+
[
|
|
22694
|
+
"path",
|
|
22695
|
+
{
|
|
22696
|
+
d: "M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z",
|
|
22697
|
+
key: "mfqc10"
|
|
22698
|
+
}
|
|
22699
|
+
]
|
|
22700
|
+
];
|
|
22701
|
+
var Gamepad2 = createLucideIcon("gamepad-2", __iconNode10);
|
|
22702
|
+
|
|
22703
|
+
// ../../node_modules/lucide-react/dist/esm/icons/landmark.js
|
|
22704
|
+
var __iconNode11 = [
|
|
22705
|
+
["path", { d: "M10 18v-7", key: "wt116b" }],
|
|
22706
|
+
[
|
|
22707
|
+
"path",
|
|
22708
|
+
{
|
|
22709
|
+
d: "M11.12 2.198a2 2 0 0 1 1.76.006l7.866 3.847c.476.233.31.949-.22.949H3.474c-.53 0-.695-.716-.22-.949z",
|
|
22710
|
+
key: "1m329m"
|
|
22711
|
+
}
|
|
22712
|
+
],
|
|
22713
|
+
["path", { d: "M14 18v-7", key: "vav6t3" }],
|
|
22714
|
+
["path", { d: "M18 18v-7", key: "aexdmj" }],
|
|
22715
|
+
["path", { d: "M3 22h18", key: "8prr45" }],
|
|
22716
|
+
["path", { d: "M6 18v-7", key: "1ivflk" }]
|
|
22717
|
+
];
|
|
22718
|
+
var Landmark = createLucideIcon("landmark", __iconNode11);
|
|
22719
|
+
|
|
22720
|
+
// ../../node_modules/lucide-react/dist/esm/icons/layers.js
|
|
22721
|
+
var __iconNode12 = [
|
|
22722
|
+
[
|
|
22723
|
+
"path",
|
|
22724
|
+
{
|
|
22725
|
+
d: "M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",
|
|
22726
|
+
key: "zw3jo"
|
|
22727
|
+
}
|
|
22728
|
+
],
|
|
22729
|
+
[
|
|
22730
|
+
"path",
|
|
22731
|
+
{
|
|
22732
|
+
d: "M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",
|
|
22733
|
+
key: "1wduqc"
|
|
22734
|
+
}
|
|
22735
|
+
],
|
|
22736
|
+
[
|
|
22737
|
+
"path",
|
|
22738
|
+
{
|
|
22739
|
+
d: "M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",
|
|
22740
|
+
key: "kqbvx6"
|
|
22741
|
+
}
|
|
22742
|
+
]
|
|
22743
|
+
];
|
|
22744
|
+
var Layers = createLucideIcon("layers", __iconNode12);
|
|
22745
|
+
|
|
22746
|
+
// ../../node_modules/lucide-react/dist/esm/icons/lightbulb.js
|
|
22747
|
+
var __iconNode13 = [
|
|
22748
|
+
[
|
|
22749
|
+
"path",
|
|
22750
|
+
{
|
|
22751
|
+
d: "M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",
|
|
22752
|
+
key: "1gvzjb"
|
|
22753
|
+
}
|
|
22754
|
+
],
|
|
22755
|
+
["path", { d: "M9 18h6", key: "x1upvd" }],
|
|
22756
|
+
["path", { d: "M10 22h4", key: "ceow96" }]
|
|
22757
|
+
];
|
|
22758
|
+
var Lightbulb = createLucideIcon("lightbulb", __iconNode13);
|
|
22759
|
+
|
|
22760
|
+
// ../../node_modules/lucide-react/dist/esm/icons/message-circle.js
|
|
22761
|
+
var __iconNode14 = [
|
|
22762
|
+
[
|
|
22763
|
+
"path",
|
|
22764
|
+
{
|
|
22765
|
+
d: "M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",
|
|
22766
|
+
key: "1sd12s"
|
|
22767
|
+
}
|
|
22768
|
+
]
|
|
22769
|
+
];
|
|
22770
|
+
var MessageCircle = createLucideIcon("message-circle", __iconNode14);
|
|
22771
|
+
|
|
22772
|
+
// ../../node_modules/lucide-react/dist/esm/icons/skip-forward.js
|
|
22773
|
+
var __iconNode15 = [
|
|
22774
|
+
["path", { d: "M21 4v16", key: "7j8fe9" }],
|
|
22775
|
+
[
|
|
22776
|
+
"path",
|
|
22777
|
+
{
|
|
22778
|
+
d: "M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",
|
|
22779
|
+
key: "zs4d6"
|
|
22780
|
+
}
|
|
22781
|
+
]
|
|
22782
|
+
];
|
|
22783
|
+
var SkipForward = createLucideIcon("skip-forward", __iconNode15);
|
|
22784
|
+
|
|
22785
|
+
// ../../node_modules/lucide-react/dist/esm/icons/sparkles.js
|
|
22786
|
+
var __iconNode16 = [
|
|
22787
|
+
[
|
|
22788
|
+
"path",
|
|
22789
|
+
{
|
|
22790
|
+
d: "M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",
|
|
22791
|
+
key: "1s2grr"
|
|
22792
|
+
}
|
|
22793
|
+
],
|
|
22794
|
+
["path", { d: "M20 2v4", key: "1rf3ol" }],
|
|
22795
|
+
["path", { d: "M22 4h-4", key: "gwowj6" }],
|
|
22796
|
+
["circle", { cx: "4", cy: "20", r: "2", key: "6kqj1y" }]
|
|
22797
|
+
];
|
|
22798
|
+
var Sparkles = createLucideIcon("sparkles", __iconNode16);
|
|
22799
|
+
|
|
22800
|
+
// ../../node_modules/lucide-react/dist/esm/icons/timer.js
|
|
22801
|
+
var __iconNode17 = [
|
|
22802
|
+
["line", { x1: "10", x2: "14", y1: "2", y2: "2", key: "14vaq8" }],
|
|
22803
|
+
["line", { x1: "12", x2: "15", y1: "14", y2: "11", key: "17fdiu" }],
|
|
22804
|
+
["circle", { cx: "12", cy: "14", r: "8", key: "1e1u0o" }]
|
|
22805
|
+
];
|
|
22806
|
+
var Timer = createLucideIcon("timer", __iconNode17);
|
|
22807
|
+
|
|
22808
|
+
// ../../node_modules/lucide-react/dist/esm/icons/triangle-alert.js
|
|
22809
|
+
var __iconNode18 = [
|
|
22810
|
+
[
|
|
22811
|
+
"path",
|
|
22812
|
+
{
|
|
22813
|
+
d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",
|
|
22814
|
+
key: "wmoenq"
|
|
22815
|
+
}
|
|
22816
|
+
],
|
|
22817
|
+
["path", { d: "M12 9v4", key: "juzpu7" }],
|
|
22818
|
+
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
22819
|
+
];
|
|
22820
|
+
var TriangleAlert = createLucideIcon("triangle-alert", __iconNode18);
|
|
22821
|
+
|
|
22822
|
+
// ../../node_modules/lucide-react/dist/esm/icons/trophy.js
|
|
22823
|
+
var __iconNode19 = [
|
|
22824
|
+
["path", { d: "M10 14.66v1.626a2 2 0 0 1-.976 1.696A5 5 0 0 0 7 21.978", key: "1n3hpd" }],
|
|
22825
|
+
["path", { d: "M14 14.66v1.626a2 2 0 0 0 .976 1.696A5 5 0 0 1 17 21.978", key: "rfe1zi" }],
|
|
22826
|
+
["path", { d: "M18 9h1.5a1 1 0 0 0 0-5H18", key: "7xy6bh" }],
|
|
22827
|
+
["path", { d: "M4 22h16", key: "57wxv0" }],
|
|
22828
|
+
["path", { d: "M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z", key: "1mhfuq" }],
|
|
22829
|
+
["path", { d: "M6 9H4.5a1 1 0 0 1 0-5H6", key: "tex48p" }]
|
|
22830
|
+
];
|
|
22831
|
+
var Trophy = createLucideIcon("trophy", __iconNode19);
|
|
22832
|
+
|
|
22833
|
+
// src/components/emojiToIcon.tsx
|
|
22360
22834
|
var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);
|
|
22835
|
+
var EMOJI_ICON_MAP = {
|
|
22836
|
+
"\u2753": CircleQuestionMark,
|
|
22837
|
+
"\u{1F9ED}": Compass,
|
|
22838
|
+
"\u{1F4DD}": FileText,
|
|
22839
|
+
"\u{1F3AF}": Layers,
|
|
22840
|
+
"\u{1F3C6}": Trophy,
|
|
22841
|
+
"\u2728": Sparkles,
|
|
22842
|
+
"\u{1F4AC}": MessageCircle,
|
|
22843
|
+
"\u{1F3AE}": Gamepad2,
|
|
22844
|
+
"\u{1F4A1}": Lightbulb,
|
|
22845
|
+
"\u{1F4B0}": Banknote,
|
|
22846
|
+
"\u{1F4CB}": ClipboardList,
|
|
22847
|
+
"\u2705": CircleCheckBig,
|
|
22848
|
+
"\u26A0\uFE0F": TriangleAlert,
|
|
22849
|
+
"\u{1F4B5}": Banknote,
|
|
22850
|
+
"\u{1F3DB}\uFE0F": Landmark,
|
|
22851
|
+
"\u23ED\uFE0F": SkipForward,
|
|
22852
|
+
"\u27A1\uFE0F": ArrowRight,
|
|
22853
|
+
"\u23F1\uFE0F": Timer,
|
|
22854
|
+
"\u{1F4D6}": BookOpen,
|
|
22855
|
+
"\u{1F514}": Bell
|
|
22856
|
+
};
|
|
22857
|
+
function EmojiIcon({
|
|
22858
|
+
emoji,
|
|
22859
|
+
size: size2 = 14,
|
|
22860
|
+
color = "currentColor"
|
|
22861
|
+
}) {
|
|
22862
|
+
const Icon2 = EMOJI_ICON_MAP[emoji];
|
|
22863
|
+
if (!Icon2) {
|
|
22864
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: emoji });
|
|
22865
|
+
}
|
|
22866
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Icon2, { size: size2, color });
|
|
22867
|
+
}
|
|
22868
|
+
|
|
22869
|
+
// src/notifications/NotificationToastStack.tsx
|
|
22870
|
+
var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
|
|
22361
22871
|
var TOAST_STYLES_ID = "syntro-toast-styles";
|
|
22362
22872
|
var TOAST_CSS = `
|
|
22363
22873
|
@keyframes syntro-toast-slide-in {
|
|
@@ -22394,7 +22904,7 @@ ${text2}</tr>
|
|
|
22394
22904
|
const { shadowRoot } = useShadowRoot();
|
|
22395
22905
|
ensureToastStyles(shadowRoot);
|
|
22396
22906
|
if (notifications.length === 0) return null;
|
|
22397
|
-
return /* @__PURE__ */ (0,
|
|
22907
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
22398
22908
|
"div",
|
|
22399
22909
|
{
|
|
22400
22910
|
"data-testid": "notification-toast-stack",
|
|
@@ -22411,7 +22921,7 @@ ${text2}</tr>
|
|
|
22411
22921
|
},
|
|
22412
22922
|
children: notifications.map((notif) => (
|
|
22413
22923
|
// biome-ignore lint/a11y/noStaticElementInteractions: Hover effects for pause-on-hover UX; not interactive in the a11y sense
|
|
22414
|
-
/* @__PURE__ */ (0,
|
|
22924
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
22415
22925
|
"div",
|
|
22416
22926
|
{
|
|
22417
22927
|
className: "syntro-toast-enter",
|
|
@@ -22436,7 +22946,7 @@ ${text2}</tr>
|
|
|
22436
22946
|
if (bar) bar.classList.remove("paused");
|
|
22437
22947
|
},
|
|
22438
22948
|
children: [
|
|
22439
|
-
/* @__PURE__ */ (0,
|
|
22949
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
22440
22950
|
"div",
|
|
22441
22951
|
{
|
|
22442
22952
|
onClick: () => onClickNotification(notif),
|
|
@@ -22447,7 +22957,7 @@ ${text2}</tr>
|
|
|
22447
22957
|
padding: "10px 12px"
|
|
22448
22958
|
},
|
|
22449
22959
|
children: [
|
|
22450
|
-
/* @__PURE__ */ (0,
|
|
22960
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
22451
22961
|
"div",
|
|
22452
22962
|
{
|
|
22453
22963
|
style: {
|
|
@@ -22461,11 +22971,11 @@ ${text2}</tr>
|
|
|
22461
22971
|
flexShrink: 0,
|
|
22462
22972
|
fontSize: "14px"
|
|
22463
22973
|
},
|
|
22464
|
-
children: notif.icon ?? "\u{1F514}"
|
|
22974
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(EmojiIcon, { emoji: notif.icon ?? "\u{1F514}", size: 14 })
|
|
22465
22975
|
}
|
|
22466
22976
|
),
|
|
22467
|
-
/* @__PURE__ */ (0,
|
|
22468
|
-
/* @__PURE__ */ (0,
|
|
22977
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
22978
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
22469
22979
|
"div",
|
|
22470
22980
|
{
|
|
22471
22981
|
style: {
|
|
@@ -22480,7 +22990,7 @@ ${text2}</tr>
|
|
|
22480
22990
|
children: notif.title
|
|
22481
22991
|
}
|
|
22482
22992
|
),
|
|
22483
|
-
notif.body && /* @__PURE__ */ (0,
|
|
22993
|
+
notif.body && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
22484
22994
|
"div",
|
|
22485
22995
|
{
|
|
22486
22996
|
style: {
|
|
@@ -22496,7 +23006,7 @@ ${text2}</tr>
|
|
|
22496
23006
|
}
|
|
22497
23007
|
)
|
|
22498
23008
|
] }),
|
|
22499
|
-
/* @__PURE__ */ (0,
|
|
23009
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
22500
23010
|
"button",
|
|
22501
23011
|
{
|
|
22502
23012
|
type: "button",
|
|
@@ -22521,7 +23031,7 @@ ${text2}</tr>
|
|
|
22521
23031
|
]
|
|
22522
23032
|
}
|
|
22523
23033
|
),
|
|
22524
|
-
/* @__PURE__ */ (0,
|
|
23034
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: { height: "2px", background: "rgba(0, 0, 0, 0.08)" }, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
22525
23035
|
"div",
|
|
22526
23036
|
{
|
|
22527
23037
|
className: "syntro-toast-progress",
|
|
@@ -22542,7 +23052,7 @@ ${text2}</tr>
|
|
|
22542
23052
|
}
|
|
22543
23053
|
|
|
22544
23054
|
// src/notifications/useNotifications.ts
|
|
22545
|
-
var
|
|
23055
|
+
var import_react9 = __toESM(require_react(), 1);
|
|
22546
23056
|
|
|
22547
23057
|
// src/notifications/types.ts
|
|
22548
23058
|
var MAX_VISIBLE_TOASTS = 3;
|
|
@@ -22594,10 +23104,10 @@ ${text2}</tr>
|
|
|
22594
23104
|
|
|
22595
23105
|
// src/notifications/useNotifications.ts
|
|
22596
23106
|
function useNotifications(eventBus, tiles) {
|
|
22597
|
-
const [notifications, setNotifications] = (0,
|
|
22598
|
-
const cooldownMap = (0,
|
|
22599
|
-
const timerIds = (0,
|
|
22600
|
-
const publishDismissed = (0,
|
|
23107
|
+
const [notifications, setNotifications] = (0, import_react9.useState)([]);
|
|
23108
|
+
const cooldownMap = (0, import_react9.useRef)(/* @__PURE__ */ new Map());
|
|
23109
|
+
const timerIds = (0, import_react9.useRef)(/* @__PURE__ */ new Map());
|
|
23110
|
+
const publishDismissed = (0, import_react9.useCallback)(
|
|
22601
23111
|
(notif) => {
|
|
22602
23112
|
eventBus?.publish(StandardEvents.NOTIFICATION_DISMISSED, {
|
|
22603
23113
|
notificationId: notif.id,
|
|
@@ -22607,7 +23117,7 @@ ${text2}</tr>
|
|
|
22607
23117
|
},
|
|
22608
23118
|
[eventBus]
|
|
22609
23119
|
);
|
|
22610
|
-
const scheduleDismiss = (0,
|
|
23120
|
+
const scheduleDismiss = (0, import_react9.useCallback)(
|
|
22611
23121
|
(notif) => {
|
|
22612
23122
|
const timerId = setTimeout(() => {
|
|
22613
23123
|
setNotifications((prev) => prev.filter((n2) => n2.id !== notif.id));
|
|
@@ -22618,7 +23128,7 @@ ${text2}</tr>
|
|
|
22618
23128
|
},
|
|
22619
23129
|
[publishDismissed]
|
|
22620
23130
|
);
|
|
22621
|
-
const dismiss = (0,
|
|
23131
|
+
const dismiss = (0, import_react9.useCallback)(
|
|
22622
23132
|
(id) => {
|
|
22623
23133
|
setNotifications((prev) => {
|
|
22624
23134
|
const notif = prev.find((n2) => n2.id === id);
|
|
@@ -22633,7 +23143,7 @@ ${text2}</tr>
|
|
|
22633
23143
|
},
|
|
22634
23144
|
[publishDismissed]
|
|
22635
23145
|
);
|
|
22636
|
-
(0,
|
|
23146
|
+
(0, import_react9.useEffect)(() => {
|
|
22637
23147
|
if (!eventBus) return;
|
|
22638
23148
|
const unsubscribe2 = eventBus.subscribe((event) => {
|
|
22639
23149
|
const match = matchEvent(event, tiles);
|
|
@@ -22683,7 +23193,7 @@ ${text2}</tr>
|
|
|
22683
23193
|
}
|
|
22684
23194
|
|
|
22685
23195
|
// src/notifications/useNotifyWatcher.ts
|
|
22686
|
-
var
|
|
23196
|
+
var import_react10 = __toESM(require_react(), 1);
|
|
22687
23197
|
function collectEntries(tiles, appRegistry2) {
|
|
22688
23198
|
const entries = [];
|
|
22689
23199
|
for (const tile of tiles) {
|
|
@@ -22697,8 +23207,8 @@ ${text2}</tr>
|
|
|
22697
23207
|
return entries;
|
|
22698
23208
|
}
|
|
22699
23209
|
function useNotifyWatcher(runtime7, tiles, appRegistry2) {
|
|
22700
|
-
const prevStateRef = (0,
|
|
22701
|
-
(0,
|
|
23210
|
+
const prevStateRef = (0, import_react10.useRef)(/* @__PURE__ */ new Map());
|
|
23211
|
+
(0, import_react10.useEffect)(() => {
|
|
22702
23212
|
if (!runtime7?.events || !appRegistry2) return;
|
|
22703
23213
|
const entries = collectEntries(tiles, appRegistry2);
|
|
22704
23214
|
if (entries.length === 0) return;
|
|
@@ -22731,17 +23241,17 @@ ${text2}</tr>
|
|
|
22731
23241
|
}
|
|
22732
23242
|
|
|
22733
23243
|
// src/RuntimeProvider.tsx
|
|
22734
|
-
var
|
|
22735
|
-
var
|
|
22736
|
-
var RuntimeReactContext = (0,
|
|
23244
|
+
var import_react11 = __toESM(require_react(), 1);
|
|
23245
|
+
var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1);
|
|
23246
|
+
var RuntimeReactContext = (0, import_react11.createContext)({
|
|
22737
23247
|
runtime: null,
|
|
22738
23248
|
context: null
|
|
22739
23249
|
});
|
|
22740
23250
|
function RuntimeProvider({ runtime: runtime7, children }) {
|
|
22741
|
-
const [context, setContext] = (0,
|
|
23251
|
+
const [context, setContext] = (0, import_react11.useState)(
|
|
22742
23252
|
runtime7 ? runtime7.context.get() : null
|
|
22743
23253
|
);
|
|
22744
|
-
(0,
|
|
23254
|
+
(0, import_react11.useEffect)(() => {
|
|
22745
23255
|
if (!runtime7) return;
|
|
22746
23256
|
setContext(runtime7.context.get());
|
|
22747
23257
|
const unsubscribe2 = runtime7.context.subscribe((ctx) => {
|
|
@@ -22749,15 +23259,15 @@ ${text2}</tr>
|
|
|
22749
23259
|
});
|
|
22750
23260
|
return unsubscribe2;
|
|
22751
23261
|
}, [runtime7]);
|
|
22752
|
-
const value = (0,
|
|
22753
|
-
return /* @__PURE__ */ (0,
|
|
23262
|
+
const value = (0, import_react11.useMemo)(() => ({ runtime: runtime7, context }), [runtime7, context]);
|
|
23263
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(RuntimeReactContext.Provider, { value, children });
|
|
22754
23264
|
}
|
|
22755
23265
|
function useRuntime() {
|
|
22756
|
-
const { runtime: runtime7 } = (0,
|
|
23266
|
+
const { runtime: runtime7 } = (0, import_react11.useContext)(RuntimeReactContext);
|
|
22757
23267
|
return runtime7;
|
|
22758
23268
|
}
|
|
22759
23269
|
function useRuntimeContext() {
|
|
22760
|
-
const { context } = (0,
|
|
23270
|
+
const { context } = (0, import_react11.useContext)(RuntimeReactContext);
|
|
22761
23271
|
return context;
|
|
22762
23272
|
}
|
|
22763
23273
|
function usePageContext() {
|
|
@@ -22774,7 +23284,7 @@ ${text2}</tr>
|
|
|
22774
23284
|
}
|
|
22775
23285
|
function useRuntimeEvents(filter, callback, deps = []) {
|
|
22776
23286
|
const runtime7 = useRuntime();
|
|
22777
|
-
(0,
|
|
23287
|
+
(0, import_react11.useEffect)(() => {
|
|
22778
23288
|
if (!runtime7) return;
|
|
22779
23289
|
const unsubscribe2 = filter ? runtime7.events.subscribe(filter, callback) : runtime7.events.subscribe(callback);
|
|
22780
23290
|
return unsubscribe2;
|
|
@@ -22786,12 +23296,12 @@ ${text2}</tr>
|
|
|
22786
23296
|
}
|
|
22787
23297
|
function useDecision(strategy, defaultValue) {
|
|
22788
23298
|
const runtime7 = useRuntime();
|
|
22789
|
-
const [result, setResult] = (0,
|
|
23299
|
+
const [result, setResult] = (0, import_react11.useState)({
|
|
22790
23300
|
value: defaultValue,
|
|
22791
23301
|
isFallback: true,
|
|
22792
23302
|
isLoading: true
|
|
22793
23303
|
});
|
|
22794
|
-
(0,
|
|
23304
|
+
(0, import_react11.useEffect)(() => {
|
|
22795
23305
|
if (!runtime7 || !strategy) {
|
|
22796
23306
|
setResult({ value: defaultValue, isFallback: true, isLoading: false });
|
|
22797
23307
|
return;
|
|
@@ -23202,21 +23712,21 @@ ${text2}</tr>
|
|
|
23202
23712
|
}
|
|
23203
23713
|
|
|
23204
23714
|
// src/theme/ThemeProvider.tsx
|
|
23205
|
-
var
|
|
23206
|
-
var
|
|
23207
|
-
var ThemeContext = (0,
|
|
23715
|
+
var import_react12 = __toESM(require_react(), 1);
|
|
23716
|
+
var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);
|
|
23717
|
+
var ThemeContext = (0, import_react12.createContext)(null);
|
|
23208
23718
|
function ThemeProvider({
|
|
23209
23719
|
children,
|
|
23210
23720
|
themeConfig,
|
|
23211
23721
|
workspaceTheme,
|
|
23212
23722
|
shadowRoot
|
|
23213
23723
|
}) {
|
|
23214
|
-
const merged = (0,
|
|
23724
|
+
const merged = (0, import_react12.useMemo)(
|
|
23215
23725
|
() => workspaceTheme ? mergeThemeWithWorkspace(workspaceTheme, themeConfig ?? {}) : mergeThemeConfig(themeConfig ?? {}),
|
|
23216
23726
|
[themeConfig, workspaceTheme]
|
|
23217
23727
|
);
|
|
23218
|
-
const cssVariables = (0,
|
|
23219
|
-
(0,
|
|
23728
|
+
const cssVariables = (0, import_react12.useMemo)(() => flattenThemeConfig(merged), [merged]);
|
|
23729
|
+
(0, import_react12.useEffect)(() => {
|
|
23220
23730
|
if (!shadowRoot) return;
|
|
23221
23731
|
let styleEl = shadowRoot.querySelector("#sc-theme-vars");
|
|
23222
23732
|
if (!styleEl) {
|
|
@@ -23234,10 +23744,10 @@ ${cssRules}
|
|
|
23234
23744
|
mode: merged.mode,
|
|
23235
23745
|
cssVariables
|
|
23236
23746
|
};
|
|
23237
|
-
return /* @__PURE__ */ (0,
|
|
23747
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ThemeContext.Provider, { value, children });
|
|
23238
23748
|
}
|
|
23239
23749
|
function useTheme() {
|
|
23240
|
-
const context = (0,
|
|
23750
|
+
const context = (0, import_react12.useContext)(ThemeContext);
|
|
23241
23751
|
if (!context) {
|
|
23242
23752
|
throw new Error("useTheme must be used within a ThemeProvider");
|
|
23243
23753
|
}
|
|
@@ -23247,247 +23757,18 @@ ${cssRules}
|
|
|
23247
23757
|
// src/components/TileCard.tsx
|
|
23248
23758
|
var import_react13 = __toESM(require_react(), 1);
|
|
23249
23759
|
|
|
23250
|
-
// ../../node_modules/lucide-react/dist/esm/createLucideIcon.js
|
|
23251
|
-
var import_react12 = __toESM(require_react());
|
|
23252
|
-
|
|
23253
|
-
// ../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
23254
|
-
var mergeClasses = (...classes2) => classes2.filter((className, index2, array) => {
|
|
23255
|
-
return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index2;
|
|
23256
|
-
}).join(" ").trim();
|
|
23257
|
-
|
|
23258
|
-
// ../../node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js
|
|
23259
|
-
var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
23260
|
-
|
|
23261
|
-
// ../../node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js
|
|
23262
|
-
var toCamelCase = (string) => string.replace(
|
|
23263
|
-
/^([A-Z])|[\s-_]+(\w)/g,
|
|
23264
|
-
(match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
|
|
23265
|
-
);
|
|
23266
|
-
|
|
23267
|
-
// ../../node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js
|
|
23268
|
-
var toPascalCase = (string) => {
|
|
23269
|
-
const camelCase = toCamelCase(string);
|
|
23270
|
-
return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
|
|
23271
|
-
};
|
|
23272
|
-
|
|
23273
|
-
// ../../node_modules/lucide-react/dist/esm/Icon.js
|
|
23274
|
-
var import_react11 = __toESM(require_react());
|
|
23275
|
-
|
|
23276
|
-
// ../../node_modules/lucide-react/dist/esm/defaultAttributes.js
|
|
23277
|
-
var defaultAttributes = {
|
|
23278
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
23279
|
-
width: 24,
|
|
23280
|
-
height: 24,
|
|
23281
|
-
viewBox: "0 0 24 24",
|
|
23282
|
-
fill: "none",
|
|
23283
|
-
stroke: "currentColor",
|
|
23284
|
-
strokeWidth: 2,
|
|
23285
|
-
strokeLinecap: "round",
|
|
23286
|
-
strokeLinejoin: "round"
|
|
23287
|
-
};
|
|
23288
|
-
|
|
23289
|
-
// ../../node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js
|
|
23290
|
-
var hasA11yProp = (props) => {
|
|
23291
|
-
for (const prop in props) {
|
|
23292
|
-
if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
|
|
23293
|
-
return true;
|
|
23294
|
-
}
|
|
23295
|
-
}
|
|
23296
|
-
return false;
|
|
23297
|
-
};
|
|
23298
|
-
|
|
23299
|
-
// ../../node_modules/lucide-react/dist/esm/Icon.js
|
|
23300
|
-
var Icon = (0, import_react11.forwardRef)(
|
|
23301
|
-
({
|
|
23302
|
-
color = "currentColor",
|
|
23303
|
-
size: size2 = 24,
|
|
23304
|
-
strokeWidth = 2,
|
|
23305
|
-
absoluteStrokeWidth,
|
|
23306
|
-
className = "",
|
|
23307
|
-
children,
|
|
23308
|
-
iconNode,
|
|
23309
|
-
...rest
|
|
23310
|
-
}, ref) => (0, import_react11.createElement)(
|
|
23311
|
-
"svg",
|
|
23312
|
-
{
|
|
23313
|
-
ref,
|
|
23314
|
-
...defaultAttributes,
|
|
23315
|
-
width: size2,
|
|
23316
|
-
height: size2,
|
|
23317
|
-
stroke: color,
|
|
23318
|
-
strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size2) : strokeWidth,
|
|
23319
|
-
className: mergeClasses("lucide", className),
|
|
23320
|
-
...!children && !hasA11yProp(rest) && { "aria-hidden": "true" },
|
|
23321
|
-
...rest
|
|
23322
|
-
},
|
|
23323
|
-
[
|
|
23324
|
-
...iconNode.map(([tag3, attrs]) => (0, import_react11.createElement)(tag3, attrs)),
|
|
23325
|
-
...Array.isArray(children) ? children : [children]
|
|
23326
|
-
]
|
|
23327
|
-
)
|
|
23328
|
-
);
|
|
23329
|
-
|
|
23330
|
-
// ../../node_modules/lucide-react/dist/esm/createLucideIcon.js
|
|
23331
|
-
var createLucideIcon = (iconName, iconNode) => {
|
|
23332
|
-
const Component = (0, import_react12.forwardRef)(
|
|
23333
|
-
({ className, ...props }, ref) => (0, import_react12.createElement)(Icon, {
|
|
23334
|
-
ref,
|
|
23335
|
-
iconNode,
|
|
23336
|
-
className: mergeClasses(
|
|
23337
|
-
`lucide-${toKebabCase(toPascalCase(iconName))}`,
|
|
23338
|
-
`lucide-${iconName}`,
|
|
23339
|
-
className
|
|
23340
|
-
),
|
|
23341
|
-
...props
|
|
23342
|
-
})
|
|
23343
|
-
);
|
|
23344
|
-
Component.displayName = toPascalCase(iconName);
|
|
23345
|
-
return Component;
|
|
23346
|
-
};
|
|
23347
|
-
|
|
23348
|
-
// ../../node_modules/lucide-react/dist/esm/icons/circle-question-mark.js
|
|
23349
|
-
var __iconNode = [
|
|
23350
|
-
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
23351
|
-
["path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", key: "1u773s" }],
|
|
23352
|
-
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
23353
|
-
];
|
|
23354
|
-
var CircleQuestionMark = createLucideIcon("circle-question-mark", __iconNode);
|
|
23355
|
-
|
|
23356
|
-
// ../../node_modules/lucide-react/dist/esm/icons/compass.js
|
|
23357
|
-
var __iconNode2 = [
|
|
23358
|
-
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
23359
|
-
[
|
|
23360
|
-
"path",
|
|
23361
|
-
{
|
|
23362
|
-
d: "m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",
|
|
23363
|
-
key: "9ktpf1"
|
|
23364
|
-
}
|
|
23365
|
-
]
|
|
23366
|
-
];
|
|
23367
|
-
var Compass = createLucideIcon("compass", __iconNode2);
|
|
23368
|
-
|
|
23369
|
-
// ../../node_modules/lucide-react/dist/esm/icons/file-text.js
|
|
23370
|
-
var __iconNode3 = [
|
|
23371
|
-
[
|
|
23372
|
-
"path",
|
|
23373
|
-
{
|
|
23374
|
-
d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
|
|
23375
|
-
key: "1oefj6"
|
|
23376
|
-
}
|
|
23377
|
-
],
|
|
23378
|
-
["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }],
|
|
23379
|
-
["path", { d: "M10 9H8", key: "b1mrlr" }],
|
|
23380
|
-
["path", { d: "M16 13H8", key: "t4e002" }],
|
|
23381
|
-
["path", { d: "M16 17H8", key: "z1uh3a" }]
|
|
23382
|
-
];
|
|
23383
|
-
var FileText = createLucideIcon("file-text", __iconNode3);
|
|
23384
|
-
|
|
23385
|
-
// ../../node_modules/lucide-react/dist/esm/icons/gamepad-2.js
|
|
23386
|
-
var __iconNode4 = [
|
|
23387
|
-
["line", { x1: "6", x2: "10", y1: "11", y2: "11", key: "1gktln" }],
|
|
23388
|
-
["line", { x1: "8", x2: "8", y1: "9", y2: "13", key: "qnk9ow" }],
|
|
23389
|
-
["line", { x1: "15", x2: "15.01", y1: "12", y2: "12", key: "krot7o" }],
|
|
23390
|
-
["line", { x1: "18", x2: "18.01", y1: "10", y2: "10", key: "1lcuu1" }],
|
|
23391
|
-
[
|
|
23392
|
-
"path",
|
|
23393
|
-
{
|
|
23394
|
-
d: "M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z",
|
|
23395
|
-
key: "mfqc10"
|
|
23396
|
-
}
|
|
23397
|
-
]
|
|
23398
|
-
];
|
|
23399
|
-
var Gamepad2 = createLucideIcon("gamepad-2", __iconNode4);
|
|
23400
|
-
|
|
23401
|
-
// ../../node_modules/lucide-react/dist/esm/icons/layers.js
|
|
23402
|
-
var __iconNode5 = [
|
|
23403
|
-
[
|
|
23404
|
-
"path",
|
|
23405
|
-
{
|
|
23406
|
-
d: "M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z",
|
|
23407
|
-
key: "zw3jo"
|
|
23408
|
-
}
|
|
23409
|
-
],
|
|
23410
|
-
[
|
|
23411
|
-
"path",
|
|
23412
|
-
{
|
|
23413
|
-
d: "M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12",
|
|
23414
|
-
key: "1wduqc"
|
|
23415
|
-
}
|
|
23416
|
-
],
|
|
23417
|
-
[
|
|
23418
|
-
"path",
|
|
23419
|
-
{
|
|
23420
|
-
d: "M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17",
|
|
23421
|
-
key: "kqbvx6"
|
|
23422
|
-
}
|
|
23423
|
-
]
|
|
23424
|
-
];
|
|
23425
|
-
var Layers = createLucideIcon("layers", __iconNode5);
|
|
23426
|
-
|
|
23427
|
-
// ../../node_modules/lucide-react/dist/esm/icons/message-circle.js
|
|
23428
|
-
var __iconNode6 = [
|
|
23429
|
-
[
|
|
23430
|
-
"path",
|
|
23431
|
-
{
|
|
23432
|
-
d: "M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",
|
|
23433
|
-
key: "1sd12s"
|
|
23434
|
-
}
|
|
23435
|
-
]
|
|
23436
|
-
];
|
|
23437
|
-
var MessageCircle = createLucideIcon("message-circle", __iconNode6);
|
|
23438
|
-
|
|
23439
|
-
// ../../node_modules/lucide-react/dist/esm/icons/sparkles.js
|
|
23440
|
-
var __iconNode7 = [
|
|
23441
|
-
[
|
|
23442
|
-
"path",
|
|
23443
|
-
{
|
|
23444
|
-
d: "M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",
|
|
23445
|
-
key: "1s2grr"
|
|
23446
|
-
}
|
|
23447
|
-
],
|
|
23448
|
-
["path", { d: "M20 2v4", key: "1rf3ol" }],
|
|
23449
|
-
["path", { d: "M22 4h-4", key: "gwowj6" }],
|
|
23450
|
-
["circle", { cx: "4", cy: "20", r: "2", key: "6kqj1y" }]
|
|
23451
|
-
];
|
|
23452
|
-
var Sparkles = createLucideIcon("sparkles", __iconNode7);
|
|
23453
|
-
|
|
23454
|
-
// ../../node_modules/lucide-react/dist/esm/icons/trophy.js
|
|
23455
|
-
var __iconNode8 = [
|
|
23456
|
-
["path", { d: "M10 14.66v1.626a2 2 0 0 1-.976 1.696A5 5 0 0 0 7 21.978", key: "1n3hpd" }],
|
|
23457
|
-
["path", { d: "M14 14.66v1.626a2 2 0 0 0 .976 1.696A5 5 0 0 1 17 21.978", key: "rfe1zi" }],
|
|
23458
|
-
["path", { d: "M18 9h1.5a1 1 0 0 0 0-5H18", key: "7xy6bh" }],
|
|
23459
|
-
["path", { d: "M4 22h16", key: "57wxv0" }],
|
|
23460
|
-
["path", { d: "M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z", key: "1mhfuq" }],
|
|
23461
|
-
["path", { d: "M6 9H4.5a1 1 0 0 1 0-5H6", key: "tex48p" }]
|
|
23462
|
-
];
|
|
23463
|
-
var Trophy = createLucideIcon("trophy", __iconNode8);
|
|
23464
|
-
|
|
23465
23760
|
// src/components/TileIcon.tsx
|
|
23466
|
-
var
|
|
23467
|
-
var ICON_MAP = {
|
|
23468
|
-
"\u2753": CircleQuestionMark,
|
|
23469
|
-
"\u{1F9ED}": Compass,
|
|
23470
|
-
"\u{1F4DD}": FileText,
|
|
23471
|
-
"\u{1F3AF}": Layers,
|
|
23472
|
-
"\u{1F3C6}": Trophy,
|
|
23473
|
-
"\u2728": Sparkles,
|
|
23474
|
-
"\u{1F4AC}": MessageCircle,
|
|
23475
|
-
"\u{1F3AE}": Gamepad2
|
|
23476
|
-
};
|
|
23761
|
+
var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
|
|
23477
23762
|
function TileIcon({
|
|
23478
23763
|
emoji,
|
|
23479
23764
|
size: size2 = 18,
|
|
23480
23765
|
color = "currentColor"
|
|
23481
23766
|
}) {
|
|
23482
|
-
|
|
23483
|
-
if (!Icon2) {
|
|
23484
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { children: emoji });
|
|
23485
|
-
}
|
|
23486
|
-
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Icon2, { size: size2, color });
|
|
23767
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(EmojiIcon, { emoji, size: size2, color });
|
|
23487
23768
|
}
|
|
23488
23769
|
|
|
23489
23770
|
// src/components/TileCard.tsx
|
|
23490
|
-
var
|
|
23771
|
+
var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
|
|
23491
23772
|
function WidgetMount({ widgetId, props }) {
|
|
23492
23773
|
const runtime7 = useRuntime();
|
|
23493
23774
|
const parentRef = (0, import_react13.useRef)(null);
|
|
@@ -23516,7 +23797,6 @@ ${cssRules}
|
|
|
23516
23797
|
return () => {
|
|
23517
23798
|
handle.unmount();
|
|
23518
23799
|
handleRef.current = null;
|
|
23519
|
-
container.remove();
|
|
23520
23800
|
};
|
|
23521
23801
|
}, [registry, widgetId, widgetAvailable]);
|
|
23522
23802
|
const propsJson = JSON.stringify(props);
|
|
@@ -23527,7 +23807,7 @@ ${cssRules}
|
|
|
23527
23807
|
handleRef.current?.update(propsRef.current);
|
|
23528
23808
|
}, [propsJson]);
|
|
23529
23809
|
if (!registry || !registry.has(widgetId)) {
|
|
23530
|
-
return /* @__PURE__ */ (0,
|
|
23810
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
23531
23811
|
"div",
|
|
23532
23812
|
{
|
|
23533
23813
|
style: {
|
|
@@ -23543,7 +23823,7 @@ ${cssRules}
|
|
|
23543
23823
|
}
|
|
23544
23824
|
);
|
|
23545
23825
|
}
|
|
23546
|
-
return /* @__PURE__ */ (0,
|
|
23826
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { ref: parentRef });
|
|
23547
23827
|
}
|
|
23548
23828
|
function TileCard({
|
|
23549
23829
|
config,
|
|
@@ -23602,7 +23882,7 @@ ${cssRules}
|
|
|
23602
23882
|
justifyContent: "center",
|
|
23603
23883
|
flexShrink: 0
|
|
23604
23884
|
};
|
|
23605
|
-
return /* @__PURE__ */ (0,
|
|
23885
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
23606
23886
|
"article",
|
|
23607
23887
|
{
|
|
23608
23888
|
"data-shadow-canvas-id": `tile-${config.id}`,
|
|
@@ -23610,10 +23890,10 @@ ${cssRules}
|
|
|
23610
23890
|
onMouseEnter,
|
|
23611
23891
|
onMouseLeave,
|
|
23612
23892
|
children: [
|
|
23613
|
-
/* @__PURE__ */ (0,
|
|
23614
|
-
/* @__PURE__ */ (0,
|
|
23615
|
-
/* @__PURE__ */ (0,
|
|
23616
|
-
/* @__PURE__ */ (0,
|
|
23893
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { style: headerStyle, children: [
|
|
23894
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { style: iconStyle, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(TileIcon, { emoji: resolvedIcon, size: resolvedSubtitle ? 36 : 24 }) }),
|
|
23895
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
23896
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
23617
23897
|
"h3",
|
|
23618
23898
|
{
|
|
23619
23899
|
style: {
|
|
@@ -23628,7 +23908,7 @@ ${cssRules}
|
|
|
23628
23908
|
children: title ?? widget
|
|
23629
23909
|
}
|
|
23630
23910
|
),
|
|
23631
|
-
resolvedSubtitle && /* @__PURE__ */ (0,
|
|
23911
|
+
resolvedSubtitle && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
23632
23912
|
"p",
|
|
23633
23913
|
{
|
|
23634
23914
|
style: {
|
|
@@ -23645,14 +23925,14 @@ ${cssRules}
|
|
|
23645
23925
|
)
|
|
23646
23926
|
] })
|
|
23647
23927
|
] }),
|
|
23648
|
-
/* @__PURE__ */ (0,
|
|
23928
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
23649
23929
|
"div",
|
|
23650
23930
|
{
|
|
23651
23931
|
style: {
|
|
23652
23932
|
padding: "var(--sc-tile-body-padding, 0 0.75rem 0.5rem)",
|
|
23653
23933
|
borderTop: "1px solid rgba(255, 255, 255, 0.06)"
|
|
23654
23934
|
},
|
|
23655
|
-
children: /* @__PURE__ */ (0,
|
|
23935
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { style: { paddingTop: "var(--sc-tile-gap, 0.25rem)" }, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(WidgetMount, { widgetId: widget, props: { ...props, instanceId: config.id } }) })
|
|
23656
23936
|
}
|
|
23657
23937
|
)
|
|
23658
23938
|
]
|
|
@@ -23661,7 +23941,7 @@ ${cssRules}
|
|
|
23661
23941
|
}
|
|
23662
23942
|
|
|
23663
23943
|
// src/components/ShadowCanvasOverlay.tsx
|
|
23664
|
-
var
|
|
23944
|
+
var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
|
|
23665
23945
|
var LAUNCHER_STYLES_ID = "syntro-launcher-styles";
|
|
23666
23946
|
function ensureLauncherStyles(target, css) {
|
|
23667
23947
|
if (target.querySelector(`#${LAUNCHER_STYLES_ID}`)) return;
|
|
@@ -23897,7 +24177,7 @@ ${cssRules}
|
|
|
23897
24177
|
pointerEvents: "none",
|
|
23898
24178
|
padding: "0"
|
|
23899
24179
|
};
|
|
23900
|
-
const content = /* @__PURE__ */ (0,
|
|
24180
|
+
const content = /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
23901
24181
|
"div",
|
|
23902
24182
|
{
|
|
23903
24183
|
"data-shadow-canvas-id": "overlay-root",
|
|
@@ -23907,9 +24187,9 @@ ${cssRules}
|
|
|
23907
24187
|
pointerEvents: isOpen ? "auto" : "none",
|
|
23908
24188
|
zIndex
|
|
23909
24189
|
},
|
|
23910
|
-
children: /* @__PURE__ */ (0,
|
|
23911
|
-
/* @__PURE__ */ (0,
|
|
23912
|
-
isFocused && canvasTitle && /* @__PURE__ */ (0,
|
|
24190
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: wrapperStyle, children: [
|
|
24191
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { ref: containerRef, "data-shadow-canvas-id": "overlay-container", style: containerStyle, children: [
|
|
24192
|
+
isFocused && canvasTitle && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("header", { style: { color: "white", padding: "1.5rem 1.5rem 0" }, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
23913
24193
|
"p",
|
|
23914
24194
|
{
|
|
23915
24195
|
style: {
|
|
@@ -23922,13 +24202,13 @@ ${cssRules}
|
|
|
23922
24202
|
children: canvasTitle
|
|
23923
24203
|
}
|
|
23924
24204
|
) }),
|
|
23925
|
-
/* @__PURE__ */ (0,
|
|
24205
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: { flex: 1, overflowY: "auto", padding: isFocused ? "0" : "1rem" }, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
23926
24206
|
"div",
|
|
23927
24207
|
{
|
|
23928
24208
|
style: { color: "var(--sc-overlay-text-color)", padding: isFocused ? "1rem" : "0" },
|
|
23929
24209
|
children: "Loading..."
|
|
23930
24210
|
}
|
|
23931
|
-
) : error2 ? /* @__PURE__ */ (0,
|
|
24211
|
+
) : error2 ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
23932
24212
|
"div",
|
|
23933
24213
|
{
|
|
23934
24214
|
style: {
|
|
@@ -23942,7 +24222,7 @@ ${cssRules}
|
|
|
23942
24222
|
}
|
|
23943
24223
|
) : isFocused ? (
|
|
23944
24224
|
/* Focused Mode: Render first tile full size */
|
|
23945
|
-
tiles.length > 0 ? /* @__PURE__ */ (0,
|
|
24225
|
+
tiles.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
23946
24226
|
TileCard,
|
|
23947
24227
|
{
|
|
23948
24228
|
config: tiles[0],
|
|
@@ -23953,7 +24233,7 @@ ${cssRules}
|
|
|
23953
24233
|
) : null
|
|
23954
24234
|
) : (
|
|
23955
24235
|
/* Standard Mode: Stacked cards — widgets always visible */
|
|
23956
|
-
/* @__PURE__ */ (0,
|
|
24236
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
23957
24237
|
"div",
|
|
23958
24238
|
{
|
|
23959
24239
|
style: {
|
|
@@ -23962,7 +24242,7 @@ ${cssRules}
|
|
|
23962
24242
|
gap: "0.75rem",
|
|
23963
24243
|
width: "100%"
|
|
23964
24244
|
},
|
|
23965
|
-
children: tiles.map((tile) => /* @__PURE__ */ (0,
|
|
24245
|
+
children: tiles.map((tile) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
23966
24246
|
TileCard,
|
|
23967
24247
|
{
|
|
23968
24248
|
config: tile,
|
|
@@ -23977,7 +24257,7 @@ ${cssRules}
|
|
|
23977
24257
|
) }),
|
|
23978
24258
|
footerSlot
|
|
23979
24259
|
] }),
|
|
23980
|
-
/* @__PURE__ */ (0,
|
|
24260
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
23981
24261
|
"div",
|
|
23982
24262
|
{
|
|
23983
24263
|
onClick: toggle2,
|
|
@@ -23992,9 +24272,9 @@ ${cssRules}
|
|
|
23992
24272
|
}
|
|
23993
24273
|
);
|
|
23994
24274
|
if (!mounted) return null;
|
|
23995
|
-
return /* @__PURE__ */ (0,
|
|
24275
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
|
|
23996
24276
|
(0, import_react_dom.createPortal)(
|
|
23997
|
-
/* @__PURE__ */ (0,
|
|
24277
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
23998
24278
|
"div",
|
|
23999
24279
|
{
|
|
24000
24280
|
"data-shadow-canvas-id": "overlay-launcher",
|
|
@@ -24005,7 +24285,7 @@ ${cssRules}
|
|
|
24005
24285
|
zIndex: zIndex + 47
|
|
24006
24286
|
},
|
|
24007
24287
|
children: [
|
|
24008
|
-
/* @__PURE__ */ (0,
|
|
24288
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
24009
24289
|
NotificationToastStack,
|
|
24010
24290
|
{
|
|
24011
24291
|
notifications,
|
|
@@ -24014,7 +24294,7 @@ ${cssRules}
|
|
|
24014
24294
|
position: config.canvas.position ?? "right"
|
|
24015
24295
|
}
|
|
24016
24296
|
),
|
|
24017
|
-
/* @__PURE__ */ (0,
|
|
24297
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
24018
24298
|
"button",
|
|
24019
24299
|
{
|
|
24020
24300
|
type: "button",
|
|
@@ -24058,7 +24338,7 @@ ${cssRules}
|
|
|
24058
24338
|
}
|
|
24059
24339
|
},
|
|
24060
24340
|
children: [
|
|
24061
|
-
isOpen ? /* @__PURE__ */ (0,
|
|
24341
|
+
isOpen ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
24062
24342
|
"svg",
|
|
24063
24343
|
{
|
|
24064
24344
|
width: "24",
|
|
@@ -24073,11 +24353,11 @@ ${cssRules}
|
|
|
24073
24353
|
focusable: "false",
|
|
24074
24354
|
style: { transition: "transform 200ms ease" },
|
|
24075
24355
|
children: [
|
|
24076
|
-
/* @__PURE__ */ (0,
|
|
24077
|
-
/* @__PURE__ */ (0,
|
|
24356
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { d: "M18 6L6 18" }),
|
|
24357
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { d: "M6 6l12 12" })
|
|
24078
24358
|
]
|
|
24079
24359
|
}
|
|
24080
|
-
) : launcherIcon ? /* @__PURE__ */ (0,
|
|
24360
|
+
) : launcherIcon ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
24081
24361
|
"img",
|
|
24082
24362
|
{
|
|
24083
24363
|
src: launcherIcon,
|
|
@@ -24090,7 +24370,7 @@ ${cssRules}
|
|
|
24090
24370
|
pointerEvents: "none"
|
|
24091
24371
|
}
|
|
24092
24372
|
}
|
|
24093
|
-
) : /* @__PURE__ */ (0,
|
|
24373
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
|
|
24094
24374
|
"svg",
|
|
24095
24375
|
{
|
|
24096
24376
|
width: "24",
|
|
@@ -24105,16 +24385,16 @@ ${cssRules}
|
|
|
24105
24385
|
focusable: "false",
|
|
24106
24386
|
style: { transition: "transform 200ms ease" },
|
|
24107
24387
|
children: [
|
|
24108
|
-
/* @__PURE__ */ (0,
|
|
24109
|
-
/* @__PURE__ */ (0,
|
|
24110
|
-
/* @__PURE__ */ (0,
|
|
24111
|
-
/* @__PURE__ */ (0,
|
|
24112
|
-
/* @__PURE__ */ (0,
|
|
24388
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { d: "M12 3l1.912 5.813a2 2 0 0 0 1.275 1.275L21 12l-5.813 1.912a2 2 0 0 0-1.275 1.275L12 21l-1.912-5.813a2 2 0 0 0-1.275-1.275L3 12l5.813-1.912a2 2 0 0 0 1.275-1.275L12 3Z" }),
|
|
24389
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { d: "M5 3v4" }),
|
|
24390
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { d: "M3 5h4" }),
|
|
24391
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { d: "M19 17v4" }),
|
|
24392
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("path", { d: "M17 19h4" })
|
|
24113
24393
|
]
|
|
24114
24394
|
}
|
|
24115
24395
|
),
|
|
24116
|
-
!isOpen && notifications.length > 0 && /* @__PURE__ */ (0,
|
|
24117
|
-
/* @__PURE__ */ (0,
|
|
24396
|
+
!isOpen && notifications.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: { position: "absolute", top: -2, right: -2, pointerEvents: "none" }, children: [
|
|
24397
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
24118
24398
|
"span",
|
|
24119
24399
|
{
|
|
24120
24400
|
className: "syntro-badge-ping",
|
|
@@ -24126,7 +24406,7 @@ ${cssRules}
|
|
|
24126
24406
|
}
|
|
24127
24407
|
}
|
|
24128
24408
|
),
|
|
24129
|
-
/* @__PURE__ */ (0,
|
|
24409
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
24130
24410
|
"span",
|
|
24131
24411
|
{
|
|
24132
24412
|
className: "syntro-badge-glow",
|
|
@@ -24137,7 +24417,7 @@ ${cssRules}
|
|
|
24137
24417
|
}
|
|
24138
24418
|
}
|
|
24139
24419
|
),
|
|
24140
|
-
/* @__PURE__ */ (0,
|
|
24420
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
24141
24421
|
"span",
|
|
24142
24422
|
{
|
|
24143
24423
|
className: "syntro-badge-bounce",
|
|
@@ -24268,7 +24548,7 @@ ${cssRules}
|
|
|
24268
24548
|
}
|
|
24269
24549
|
|
|
24270
24550
|
// src/SmartCanvasApp.tsx
|
|
24271
|
-
var
|
|
24551
|
+
var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
|
|
24272
24552
|
function SmartCanvasApp({
|
|
24273
24553
|
controller,
|
|
24274
24554
|
fetcher,
|
|
@@ -24291,7 +24571,7 @@ ${cssRules}
|
|
|
24291
24571
|
workspaceTheme
|
|
24292
24572
|
}) {
|
|
24293
24573
|
if (runtime7) {
|
|
24294
|
-
return /* @__PURE__ */ (0,
|
|
24574
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(RuntimeProvider, { runtime: runtime7, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
24295
24575
|
SmartCanvasAppInner,
|
|
24296
24576
|
{
|
|
24297
24577
|
controller,
|
|
@@ -24316,7 +24596,7 @@ ${cssRules}
|
|
|
24316
24596
|
}
|
|
24317
24597
|
) });
|
|
24318
24598
|
}
|
|
24319
|
-
return /* @__PURE__ */ (0,
|
|
24599
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
24320
24600
|
SmartCanvasAppInner,
|
|
24321
24601
|
{
|
|
24322
24602
|
controller,
|
|
@@ -24470,13 +24750,13 @@ ${cssRules}
|
|
|
24470
24750
|
}, [runtime7, controller]);
|
|
24471
24751
|
const { shadowRoot } = useShadowRoot();
|
|
24472
24752
|
const themeConfig = configState.theme;
|
|
24473
|
-
return /* @__PURE__ */ (0,
|
|
24753
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
24474
24754
|
ThemeProvider,
|
|
24475
24755
|
{
|
|
24476
24756
|
themeConfig,
|
|
24477
24757
|
workspaceTheme,
|
|
24478
24758
|
shadowRoot,
|
|
24479
|
-
children: !configState.isLoading && !hasContent ? null : /* @__PURE__ */ (0,
|
|
24759
|
+
children: !configState.isLoading && !hasContent ? null : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
24480
24760
|
ShadowCanvasOverlay,
|
|
24481
24761
|
{
|
|
24482
24762
|
tiles: configState.tiles,
|
|
@@ -24500,7 +24780,7 @@ ${cssRules}
|
|
|
24500
24780
|
}
|
|
24501
24781
|
|
|
24502
24782
|
// src/SmartCanvasElement.tsx
|
|
24503
|
-
var
|
|
24783
|
+
var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);
|
|
24504
24784
|
var TAG_NAME = "smart-canvas";
|
|
24505
24785
|
var BASE_CSS = `
|
|
24506
24786
|
:host {
|
|
@@ -24600,13 +24880,13 @@ ${cssRules}
|
|
|
24600
24880
|
__privateSet(this, _root, (0, import_client5.createRoot)(__privateGet(this, _mount)));
|
|
24601
24881
|
}
|
|
24602
24882
|
__privateGet(this, _root).render(
|
|
24603
|
-
/* @__PURE__ */ (0,
|
|
24883
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
24604
24884
|
ShadowRootProvider,
|
|
24605
24885
|
{
|
|
24606
24886
|
shadowRoot: __privateGet(this, _shadow),
|
|
24607
24887
|
portalRoot: __privateGet(this, _portalRoot),
|
|
24608
24888
|
overlayContainer: __privateGet(this, _overlayContainer),
|
|
24609
|
-
children: /* @__PURE__ */ (0,
|
|
24889
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(SmartCanvasApp, { ...__privateGet(this, _lastAppProps), controller: __privateGet(this, _controller), canvasHost: this })
|
|
24610
24890
|
}
|
|
24611
24891
|
)
|
|
24612
24892
|
);
|
|
@@ -24833,7 +25113,7 @@ ${cssRules}
|
|
|
24833
25113
|
|
|
24834
25114
|
// src/components/TileWheel.tsx
|
|
24835
25115
|
var import_react17 = __toESM(require_react(), 1);
|
|
24836
|
-
var
|
|
25116
|
+
var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1);
|
|
24837
25117
|
function TileWheel({ tiles, intervalMs = 7e3, telemetry }) {
|
|
24838
25118
|
const [index2, setIndex] = (0, import_react17.useState)(0);
|
|
24839
25119
|
const ordered = (0, import_react17.useMemo)(
|
|
@@ -24857,7 +25137,7 @@ ${cssRules}
|
|
|
24857
25137
|
}
|
|
24858
25138
|
}, [index2, ordered, telemetry]);
|
|
24859
25139
|
if (!ordered.length) return null;
|
|
24860
|
-
return /* @__PURE__ */ (0,
|
|
25140
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
|
|
24861
25141
|
"div",
|
|
24862
25142
|
{
|
|
24863
25143
|
style: {
|
|
@@ -24871,7 +25151,7 @@ ${cssRules}
|
|
|
24871
25151
|
},
|
|
24872
25152
|
"data-shadow-canvas-id": "wheel",
|
|
24873
25153
|
children: [
|
|
24874
|
-
/* @__PURE__ */ (0,
|
|
25154
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
24875
25155
|
"div",
|
|
24876
25156
|
{
|
|
24877
25157
|
style: {
|
|
@@ -24880,10 +25160,10 @@ ${cssRules}
|
|
|
24880
25160
|
transform: `translateX(-${index2 * 100}%)`,
|
|
24881
25161
|
width: `${ordered.length * 100}%`
|
|
24882
25162
|
},
|
|
24883
|
-
children: ordered.map((tile) => /* @__PURE__ */ (0,
|
|
25163
|
+
children: ordered.map((tile) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { width: "100%", flexShrink: 0, padding: "0 1rem" }, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(TileCard, { config: tile, surface: "wheel", telemetry }) }, tile.id))
|
|
24884
25164
|
}
|
|
24885
25165
|
),
|
|
24886
|
-
/* @__PURE__ */ (0,
|
|
25166
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { style: { marginTop: "1rem", display: "flex", justifyContent: "center", gap: "0.5rem" }, children: ordered.map((tile, idx) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
24887
25167
|
"button",
|
|
24888
25168
|
{
|
|
24889
25169
|
type: "button",
|
|
@@ -37938,13 +38218,9 @@ ${cssRules}
|
|
|
37938
38218
|
entry2.state = "reverted";
|
|
37939
38219
|
publishEvent("action.reverted", { id, kind: action.kind });
|
|
37940
38220
|
} catch (error2) {
|
|
37941
|
-
|
|
37942
|
-
|
|
37943
|
-
|
|
37944
|
-
kind: action.kind,
|
|
37945
|
-
error: String(error2)
|
|
37946
|
-
});
|
|
37947
|
-
throw error2;
|
|
38221
|
+
console.warn(`[ActionEngine] Cleanup error for ${action.kind} (${id}), ignoring:`, error2);
|
|
38222
|
+
entry2.state = "reverted";
|
|
38223
|
+
publishEvent("action.reverted", { id, kind: action.kind });
|
|
37948
38224
|
} finally {
|
|
37949
38225
|
activeActions.delete(id);
|
|
37950
38226
|
}
|
|
@@ -38614,6 +38890,7 @@ ${cssRules}
|
|
|
38614
38890
|
function resolve(selector) {
|
|
38615
38891
|
if (!root) return null;
|
|
38616
38892
|
try {
|
|
38893
|
+
if (root.matches(selector)) return root;
|
|
38617
38894
|
return root.querySelector(selector);
|
|
38618
38895
|
} catch {
|
|
38619
38896
|
return null;
|
|
@@ -39504,15 +39781,23 @@ ${cssRules}
|
|
|
39504
39781
|
}
|
|
39505
39782
|
return eventName.replace("$", "posthog.");
|
|
39506
39783
|
}
|
|
39784
|
+
var INTERACTIVE_TAGS = /* @__PURE__ */ new Set(["a", "button", "input", "select", "textarea"]);
|
|
39785
|
+
function resolveInteractiveTag(elements2, directTag) {
|
|
39786
|
+
if (directTag && INTERACTIVE_TAGS.has(directTag)) return directTag;
|
|
39787
|
+
if (!elements2) return directTag;
|
|
39788
|
+
for (const el of elements2) {
|
|
39789
|
+
const tag3 = el.tag_name;
|
|
39790
|
+
if (tag3 && INTERACTIVE_TAGS.has(tag3)) return tag3;
|
|
39791
|
+
}
|
|
39792
|
+
return directTag;
|
|
39793
|
+
}
|
|
39507
39794
|
function extractProps(phEvent) {
|
|
39508
39795
|
const props = {};
|
|
39509
39796
|
const phProps = phEvent.properties || {};
|
|
39510
39797
|
const elements2 = phProps.$elements;
|
|
39511
|
-
|
|
39512
|
-
|
|
39513
|
-
|
|
39514
|
-
props.tagName = elements2[0].tag_name;
|
|
39515
|
-
}
|
|
39798
|
+
const directTag = phProps.$tag_name ?? elements2?.[0]?.tag_name;
|
|
39799
|
+
const isClickEvent = phEvent.event === "$autocapture" || phEvent.event === "$click";
|
|
39800
|
+
props.tagName = isClickEvent ? resolveInteractiveTag(elements2, directTag) : directTag;
|
|
39516
39801
|
if (phProps.$el_text) props.elementText = phProps.$el_text;
|
|
39517
39802
|
if (elements2) props.elements = elements2;
|
|
39518
39803
|
if (phProps.$current_url) props.url = phProps.$current_url;
|
|
@@ -40395,9 +40680,18 @@ ${cssRules}
|
|
|
40395
40680
|
return handle;
|
|
40396
40681
|
}
|
|
40397
40682
|
async function unmountEntry(entry) {
|
|
40398
|
-
|
|
40399
|
-
|
|
40400
|
-
|
|
40683
|
+
if (entry.container.isConnected) {
|
|
40684
|
+
await playExitAnimation(entry.container, entry.options.animation);
|
|
40685
|
+
}
|
|
40686
|
+
try {
|
|
40687
|
+
entry.cleanup?.();
|
|
40688
|
+
} catch (error2) {
|
|
40689
|
+
console.warn("[Surfaces] Cleanup error during unmount, ignoring:", error2);
|
|
40690
|
+
}
|
|
40691
|
+
try {
|
|
40692
|
+
entry.container.remove();
|
|
40693
|
+
} catch {
|
|
40694
|
+
}
|
|
40401
40695
|
mounts.delete(entry.slot);
|
|
40402
40696
|
publishEvent("surface.unmounted", {
|
|
40403
40697
|
slot: entry.slot,
|
|
@@ -40576,7 +40870,9 @@ ${cssRules}
|
|
|
40576
40870
|
unmount: () => {
|
|
40577
40871
|
const mounted = this.mountedWidgets.get(mountId);
|
|
40578
40872
|
if (mounted) {
|
|
40579
|
-
|
|
40873
|
+
if (container.isConnected) {
|
|
40874
|
+
mounted.cleanup?.();
|
|
40875
|
+
}
|
|
40580
40876
|
this.mountedWidgets.delete(mountId);
|
|
40581
40877
|
container.removeAttribute("data-widget-mount-id");
|
|
40582
40878
|
container.removeAttribute("data-widget-id");
|
|
@@ -41496,7 +41792,7 @@ ${cssRules}
|
|
|
41496
41792
|
}
|
|
41497
41793
|
|
|
41498
41794
|
// src/index.ts
|
|
41499
|
-
var RUNTIME_SDK_BUILD = true ? `${"2026-03-
|
|
41795
|
+
var RUNTIME_SDK_BUILD = true ? `${"2026-03-14T01:00:51.997Z"} (${"d9cb07c81d"})` : "dev";
|
|
41500
41796
|
if (typeof window !== "undefined") {
|
|
41501
41797
|
console.log(`[Syntro Runtime] Build: ${RUNTIME_SDK_BUILD}`);
|
|
41502
41798
|
const existing = window.SynOS;
|
|
@@ -41577,13 +41873,24 @@ lucide-react/dist/esm/defaultAttributes.js:
|
|
|
41577
41873
|
lucide-react/dist/esm/shared/src/utils/hasA11yProp.js:
|
|
41578
41874
|
lucide-react/dist/esm/Icon.js:
|
|
41579
41875
|
lucide-react/dist/esm/createLucideIcon.js:
|
|
41876
|
+
lucide-react/dist/esm/icons/arrow-right.js:
|
|
41877
|
+
lucide-react/dist/esm/icons/banknote.js:
|
|
41878
|
+
lucide-react/dist/esm/icons/bell.js:
|
|
41879
|
+
lucide-react/dist/esm/icons/book-open.js:
|
|
41880
|
+
lucide-react/dist/esm/icons/circle-check-big.js:
|
|
41580
41881
|
lucide-react/dist/esm/icons/circle-question-mark.js:
|
|
41882
|
+
lucide-react/dist/esm/icons/clipboard-list.js:
|
|
41581
41883
|
lucide-react/dist/esm/icons/compass.js:
|
|
41582
41884
|
lucide-react/dist/esm/icons/file-text.js:
|
|
41583
41885
|
lucide-react/dist/esm/icons/gamepad-2.js:
|
|
41886
|
+
lucide-react/dist/esm/icons/landmark.js:
|
|
41584
41887
|
lucide-react/dist/esm/icons/layers.js:
|
|
41888
|
+
lucide-react/dist/esm/icons/lightbulb.js:
|
|
41585
41889
|
lucide-react/dist/esm/icons/message-circle.js:
|
|
41890
|
+
lucide-react/dist/esm/icons/skip-forward.js:
|
|
41586
41891
|
lucide-react/dist/esm/icons/sparkles.js:
|
|
41892
|
+
lucide-react/dist/esm/icons/timer.js:
|
|
41893
|
+
lucide-react/dist/esm/icons/triangle-alert.js:
|
|
41587
41894
|
lucide-react/dist/esm/icons/trophy.js:
|
|
41588
41895
|
lucide-react/dist/esm/lucide-react.js:
|
|
41589
41896
|
(**
|