@guidelytech/guide-runtime 0.15.0 → 0.16.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/dist/capture.cjs +5 -0
- package/dist/capture.cjs.map +1 -1
- package/dist/capture.js +2 -2
- package/dist/{chunk-H3CROHPR.js → chunk-KEQ2VEEC.js} +2 -2
- package/dist/{chunk-VJSQM23R.js → chunk-KQGSHCNW.js} +6 -1
- package/dist/chunk-KQGSHCNW.js.map +1 -0
- package/dist/{chunk-VQJ7MZ2K.js → chunk-YU6SKJK4.js} +2 -2
- package/dist/index.cjs +100 -24
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +11 -4
- package/dist/index.d.ts +11 -4
- package/dist/index.js +76 -5
- package/dist/index.js.map +1 -1
- package/dist/messenger.js +2 -2
- package/package.json +4 -4
- package/dist/chunk-4FKYF6OB.js +0 -466
- package/dist/chunk-4FKYF6OB.js.map +0 -1
- package/dist/chunk-4UW6YF44.js +0 -464
- package/dist/chunk-4UW6YF44.js.map +0 -1
- package/dist/chunk-7DOGZKWD.js +0 -322
- package/dist/chunk-7DOGZKWD.js.map +0 -1
- package/dist/chunk-GUH2PQJ7.js +0 -462
- package/dist/chunk-GUH2PQJ7.js.map +0 -1
- package/dist/chunk-GUSKGNNR.js +0 -301
- package/dist/chunk-GUSKGNNR.js.map +0 -1
- package/dist/chunk-KJRXCITD.js +0 -515
- package/dist/chunk-KJRXCITD.js.map +0 -1
- package/dist/chunk-PG7CMBHD.js +0 -330
- package/dist/chunk-PG7CMBHD.js.map +0 -1
- package/dist/chunk-VJSQM23R.js.map +0 -1
- package/dist/chunk-VNJPNGZ4.js +0 -301
- package/dist/chunk-VNJPNGZ4.js.map +0 -1
- /package/dist/{chunk-H3CROHPR.js.map → chunk-KEQ2VEEC.js.map} +0 -0
- /package/dist/{chunk-VQJ7MZ2K.js.map → chunk-YU6SKJK4.js.map} +0 -0
package/dist/chunk-PG7CMBHD.js
DELETED
|
@@ -1,330 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
|
|
5
|
-
// src/styles.ts
|
|
6
|
-
var STYLES = `
|
|
7
|
-
:host{all:initial;position:static;display:block;contain:none}
|
|
8
|
-
*,*::before,*::after{box-sizing:border-box}
|
|
9
|
-
.g-scope [hidden]{display:none!important}
|
|
10
|
-
.g-scope{
|
|
11
|
-
--g-primary:#4f46e5;--g-bg:#ffffff;--g-text:#111827;--g-radius:12px;--g-font:Inter,system-ui,-apple-system,sans-serif;--g-z:2147483000;--g-overlay:.5;
|
|
12
|
-
--g-muted:color-mix(in srgb,var(--g-text) 62%,transparent);--g-border:color-mix(in srgb,var(--g-text) 12%,transparent);
|
|
13
|
-
--g-subtle:color-mix(in srgb,var(--g-text) 5%,transparent);--g-shadow:0 10px 40px rgba(0,0,0,.18),0 2px 8px rgba(0,0,0,.08);
|
|
14
|
-
--g-primary-text:#ffffff;
|
|
15
|
-
font-family:var(--g-font);font-size:14px;line-height:1.5;color:var(--g-text);-webkit-font-smoothing:antialiased;
|
|
16
|
-
}
|
|
17
|
-
.g-scope[data-theme="dark"]{--g-shadow:0 10px 40px rgba(0,0,0,.5),0 2px 8px rgba(0,0,0,.3)}
|
|
18
|
-
.g-live{position:fixed;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
|
|
19
|
-
.g-layer{position:fixed;inset:0;z-index:var(--g-z);pointer-events:none}
|
|
20
|
-
.g-overlay{position:fixed;inset:0;background:rgba(0,0,0,var(--g-overlay));z-index:calc(var(--g-z) + 3);pointer-events:auto}
|
|
21
|
-
.g-overlay.g-transparent{background:transparent}
|
|
22
|
-
.g-spot-rect{position:fixed;background:rgba(0,0,0,var(--g-overlay));z-index:calc(var(--g-z) + 3);pointer-events:auto}
|
|
23
|
-
.g-spot-ring{position:fixed;z-index:calc(var(--g-z) + 3);pointer-events:none;border-radius:6px;box-shadow:0 0 0 2px var(--g-primary),0 0 0 6px color-mix(in srgb,var(--g-primary) 30%,transparent)}
|
|
24
|
-
.g-card{
|
|
25
|
-
position:fixed;z-index:calc(var(--g-z) + 4);pointer-events:auto;background:var(--g-bg);color:var(--g-text);border-radius:var(--g-radius);
|
|
26
|
-
box-shadow:var(--g-shadow);border:1px solid var(--g-border);width:min(360px,calc(100vw - 32px));max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);overflow:auto;outline:none;
|
|
27
|
-
}
|
|
28
|
-
.g-card.g-modal{left:50%;top:50%;transform:translate(-50%,-50%);width:min(480px,calc(100vw - 32px))}
|
|
29
|
-
.g-card.g-tooltip,.g-card.g-popover,.g-card.g-spotlight-card,.g-card.g-hotspot-card{top:0;left:0;width:min(320px,calc(100vw - 32px))}
|
|
30
|
-
.g-card.g-slideout{width:min(360px,calc(100vw - 32px));margin:16px}
|
|
31
|
-
.g-pos-bottom-right{right:0;bottom:0}.g-pos-bottom-left{left:0;bottom:0}.g-pos-top-right{right:0;top:0}.g-pos-top-left{left:0;top:0}
|
|
32
|
-
.g-pos-center{left:50%;top:50%;transform:translate(-50%,-50%)}
|
|
33
|
-
.g-pos-top{top:0;left:0;right:0}.g-pos-bottom{bottom:0;left:0;right:0}
|
|
34
|
-
.g-banner{position:fixed;left:0;right:0;z-index:calc(var(--g-z) + 1);pointer-events:auto;background:var(--g-primary);color:var(--g-primary-text);padding:10px 48px 10px 16px;display:flex;align-items:center;gap:12px;font-size:14px;box-shadow:0 2px 10px rgba(0,0,0,.15);max-width:100vw}
|
|
35
|
-
.g-banner .g-body{flex:1;min-width:0}
|
|
36
|
-
.g-banner .g-body a{color:inherit;text-decoration:underline}
|
|
37
|
-
.g-banner .g-close{color:inherit;right:8px;top:50%;transform:translateY(-50%)}
|
|
38
|
-
.g-banner .g-btn{background:rgba(255,255,255,.18);color:inherit;border-color:transparent;min-height:36px}
|
|
39
|
-
.g-banner.g-pos-top{top:0}.g-banner.g-pos-bottom{bottom:0}
|
|
40
|
-
.g-inner{padding:20px}
|
|
41
|
-
.g-close{position:absolute;top:8px;right:8px;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--g-muted);border-radius:999px;cursor:pointer;font:inherit;font-size:20px;line-height:1}
|
|
42
|
-
.g-close:hover,.g-close:focus-visible{background:var(--g-subtle);color:var(--g-text);outline:none}
|
|
43
|
-
.g-close:focus-visible,.g-btn:focus-visible,.g-task:focus-visible,.g-choice:focus-visible,.g-scale button:focus-visible,.g-launcher:focus-visible,.g-input:focus-visible,.g-rc-item:focus-visible{outline:2px solid var(--g-primary);outline-offset:2px}
|
|
44
|
-
.g-image{display:block;width:100%;max-height:220px;object-fit:cover;border-radius:var(--g-radius) var(--g-radius) 0 0}
|
|
45
|
-
.g-title{margin:0 28px 6px 0;font-size:16px;font-weight:600;line-height:1.3}
|
|
46
|
-
.g-body{font-size:14px;color:var(--g-text)}
|
|
47
|
-
.g-body p{margin:0 0 8px}.g-body p:last-child{margin-bottom:0}
|
|
48
|
-
.g-body ul,.g-body ol{margin:6px 0;padding-left:20px}
|
|
49
|
-
.g-body a{color:var(--g-primary)}
|
|
50
|
-
.g-body img{max-width:100%;height:auto;border-radius:6px}
|
|
51
|
-
.g-body video,.g-body iframe{display:block;width:100%;max-width:100%;border:0;border-radius:6px;margin:8px 0;background:#000}
|
|
52
|
-
.g-body video{height:auto;max-height:60vh}
|
|
53
|
-
.g-body iframe{aspect-ratio:16/9;height:auto}
|
|
54
|
-
.g-body .gd-pdf{margin:10px 0;border:1px solid var(--g-border);border-radius:10px;background:var(--g-subtle);overflow:hidden}
|
|
55
|
-
.g-body a.gd-file{display:flex;align-items:center;gap:8px;padding:8px 10px;color:var(--g-text);font-size:13px;font-weight:500;text-decoration:none;min-height:40px;overflow-wrap:anywhere}
|
|
56
|
-
.g-body a.gd-file::before{content:"PDF";flex:none;font-size:9px;font-weight:700;letter-spacing:.04em;line-height:1;color:#fff;background:#e5484d;border-radius:4px;padding:4px 5px}
|
|
57
|
-
.g-body a.gd-file::after{content:"\u2922";margin-left:auto;padding-left:8px;color:var(--g-muted);font-size:15px}
|
|
58
|
-
.g-body a.gd-file:hover::after,.g-body a.gd-file:focus-visible::after{color:var(--g-primary)}
|
|
59
|
-
.g-body a.gd-file:focus-visible{outline:2px solid var(--g-primary);outline-offset:-2px;border-radius:10px}
|
|
60
|
-
.g-body > a.gd-file,.g-body p > a.gd-file{margin:10px 0;border:1px solid var(--g-border);border-radius:10px;background:var(--g-subtle)}
|
|
61
|
-
.g-body > a.gd-file::after,.g-body p > a.gd-file::after,.g-body .gd-pdf:not([data-g-ready]) > a.gd-file::after{content:"\u2197"}
|
|
62
|
-
.g-pdf-viewport{position:relative}
|
|
63
|
-
.g-body .gd-pdf-pages{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;padding:0 10px 10px;scroll-padding:0 10px}
|
|
64
|
-
.g-body .gd-pdf-pages::-webkit-scrollbar{display:none}
|
|
65
|
-
.g-body .gd-pdf-pages:focus-visible{outline:2px solid var(--g-primary);outline-offset:-2px}
|
|
66
|
-
.g-body .gd-pdf-pages img{flex:0 0 100%;width:100%;height:auto;margin:0;scroll-snap-align:center;background:#fff;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.18);cursor:zoom-in}
|
|
67
|
-
.g-pdf-viewport .gd-pdf-pages{padding:0;scroll-padding:0;margin:0 10px 10px}
|
|
68
|
-
.g-pdf-count{position:absolute;right:18px;bottom:18px;padding:2px 8px;border-radius:999px;background:rgba(17,17,17,.72);color:#fff;font-size:11px;font-weight:500;pointer-events:none;font-variant-numeric:tabular-nums}
|
|
69
|
-
.g-pdf-nav{position:absolute;top:calc(50% - 21px);width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:999px;background:rgba(17,17,17,.6);color:#fff;font:inherit;font-size:20px;line-height:1;cursor:pointer;opacity:0;transition:opacity .15s}
|
|
70
|
-
.g-pdf-prev{left:16px}.g-pdf-next{right:16px}
|
|
71
|
-
.g-pdf-viewport:hover .g-pdf-nav,.g-pdf-nav:focus-visible{opacity:1}
|
|
72
|
-
.g-pdf-nav:disabled,.g-pdf-single .g-pdf-nav,.g-pdf-single .g-pdf-count{display:none}
|
|
73
|
-
.g-pdf-nav:focus-visible{outline:2px solid #fff;outline-offset:1px}
|
|
74
|
-
@media (hover:none){.g-pdf-nav{display:none}}
|
|
75
|
-
.g-pdf-reader{position:fixed;inset:0;z-index:calc(var(--g-z) + 10);display:flex;flex-direction:column;background:#0b0b0d;pointer-events:auto;color:#fff}
|
|
76
|
-
.g-pdf-bar{display:flex;align-items:center;gap:10px;padding:8px 8px 8px 16px;min-height:56px}
|
|
77
|
-
.g-pdf-title{flex:1;min-width:0;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
78
|
-
.g-pdf-bar .g-btn{min-height:36px;color:#fff;background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.18)}
|
|
79
|
-
.g-pdf-close{position:static;color:#fff}
|
|
80
|
-
.g-pdf-close:hover,.g-pdf-close:focus-visible{background:rgba(255,255,255,.14);color:#fff}
|
|
81
|
-
.g-pdf-scroll{position:relative;flex:1;overflow-y:auto;overscroll-behavior:contain;padding:4px 16px 24px;display:flex;flex-direction:column;align-items:center;gap:12px;outline:none}
|
|
82
|
-
.g-pdf-scroll img{display:block;width:100%;max-width:900px;height:auto;background:#fff;border-radius:2px;box-shadow:0 2px 12px rgba(0,0,0,.4)}
|
|
83
|
-
.g-body code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;background:var(--g-subtle);padding:1px 4px;border-radius:4px}
|
|
84
|
-
.g-body pre{background:var(--g-subtle);padding:10px;border-radius:6px;overflow:auto}
|
|
85
|
-
.g-body blockquote{margin:6px 0;padding-left:10px;border-left:3px solid var(--g-border);color:var(--g-muted)}
|
|
86
|
-
.g-footer{display:flex;align-items:center;gap:8px;margin-top:14px;flex-wrap:wrap}
|
|
87
|
-
.g-progress{font-size:12px;color:var(--g-muted);margin-right:auto}
|
|
88
|
-
.g-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:8px 14px;border-radius:calc(var(--g-radius) * .66);border:1px solid transparent;font:inherit;font-size:14px;font-weight:500;cursor:pointer;text-decoration:none;transition:background .15s,color .15s,border-color .15s}
|
|
89
|
-
.g-btn-primary{background:var(--g-primary);color:var(--g-primary-text)}
|
|
90
|
-
.g-btn-primary:hover{filter:brightness(1.08)}
|
|
91
|
-
.g-btn-secondary{background:var(--g-subtle);color:var(--g-text);border-color:var(--g-border)}
|
|
92
|
-
.g-btn-secondary:hover{background:color-mix(in srgb,var(--g-text) 10%,transparent)}
|
|
93
|
-
.g-btn-ghost{background:transparent;color:var(--g-muted)}
|
|
94
|
-
.g-btn-ghost:hover{background:var(--g-subtle);color:var(--g-text)}
|
|
95
|
-
.g-btn-link{background:transparent;color:var(--g-primary);padding-left:4px;padding-right:4px}
|
|
96
|
-
.g-btn-link:hover{text-decoration:underline}
|
|
97
|
-
.g-btn:disabled{opacity:.5;cursor:not-allowed}
|
|
98
|
-
.g-arrow{position:absolute;width:12px;height:12px;background:var(--g-bg);transform:rotate(45deg);border:1px solid var(--g-border);z-index:-1}
|
|
99
|
-
.g-hotspot{position:fixed;z-index:calc(var(--g-z) + 1);pointer-events:auto;border-radius:999px;background:var(--g-primary);border:2px solid #fff;box-shadow:0 0 0 2px color-mix(in srgb,var(--g-primary) 40%,transparent);cursor:pointer;padding:0;margin:0}
|
|
100
|
-
.g-hotspot::after{content:"";position:absolute;inset:-4px;border-radius:999px;border:2px solid var(--g-primary);opacity:0}
|
|
101
|
-
.g-hotspot.g-pulse::after{animation:g-pulse 1.8s ease-out infinite}
|
|
102
|
-
.g-hotspot-hit{position:absolute;inset:-14px}
|
|
103
|
-
.g-custom{position:fixed;z-index:calc(var(--g-z) + 4);pointer-events:auto;left:50%;top:50%;transform:translate(-50%,-50%);max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);overflow:auto}
|
|
104
|
-
/* animations */
|
|
105
|
-
.g-scope[data-anim="fade"] .g-card,.g-scope[data-anim="fade"] .g-banner,.g-scope[data-anim="fade"] .g-panel{animation:g-fade .18s ease-out}
|
|
106
|
-
.g-scope[data-anim="slide"] .g-card,.g-scope[data-anim="slide"] .g-panel{animation:g-slide .22s ease-out}
|
|
107
|
-
.g-scope[data-anim="none"] *{animation:none!important;transition:none!important}
|
|
108
|
-
@keyframes g-fade{from{opacity:0}to{opacity:1}}
|
|
109
|
-
@keyframes g-slide{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
|
|
110
|
-
@keyframes g-pulse{0%{transform:scale(.6);opacity:.9}100%{transform:scale(2.2);opacity:0}}
|
|
111
|
-
@media (prefers-reduced-motion:reduce){.g-scope *{animation:none!important;transition:none!important}}
|
|
112
|
-
/* launcher + panel (checklist / resource center) */
|
|
113
|
-
.g-launcher{position:fixed;z-index:calc(var(--g-z) + 1);pointer-events:auto;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:10px 16px;border-radius:999px;border:0;background:var(--g-primary);color:var(--g-primary-text);font:inherit;font-size:14px;font-weight:600;cursor:pointer;box-shadow:var(--g-shadow);margin:16px}
|
|
114
|
-
.g-launcher .g-ring{width:22px;height:22px;border-radius:999px;background:conic-gradient(#fff var(--g-pct,0%),rgba(255,255,255,.3) 0);display:inline-flex;align-items:center;justify-content:center;font-size:10px;position:relative}
|
|
115
|
-
.g-launcher .g-ring::after{content:"";position:absolute;inset:3px;border-radius:999px;background:var(--g-primary)}
|
|
116
|
-
.g-launcher .g-count{position:relative;z-index:1}
|
|
117
|
-
.g-panel{position:fixed;z-index:calc(var(--g-z) + 2);pointer-events:auto;width:min(380px,calc(100vw - 32px));max-height:min(620px,calc(100vh - 100px));display:flex;flex-direction:column;background:var(--g-bg);color:var(--g-text);border-radius:var(--g-radius);box-shadow:var(--g-shadow);border:1px solid var(--g-border);margin:16px;bottom:60px;overflow:hidden}
|
|
118
|
-
.g-panel-head{padding:16px 48px 12px 20px;border-bottom:1px solid var(--g-border);position:relative}
|
|
119
|
-
.g-panel-title{margin:0;font-size:16px;font-weight:600}
|
|
120
|
-
.g-panel-sub{margin:4px 0 0;font-size:12px;color:var(--g-muted)}
|
|
121
|
-
.g-panel-body{overflow:auto;padding:8px 0;flex:1}
|
|
122
|
-
.g-help{display:flex;flex-direction:column;min-height:0;flex:1}
|
|
123
|
-
.g-bar{height:6px;border-radius:999px;background:var(--g-subtle);overflow:hidden;margin-top:10px}
|
|
124
|
-
.g-bar > span{display:block;height:100%;background:var(--g-primary);transition:width .3s}
|
|
125
|
-
.g-task{display:flex;gap:12px;align-items:flex-start;width:100%;padding:12px 20px;border:0;background:transparent;text-align:left;font:inherit;color:inherit;cursor:pointer;min-height:44px}
|
|
126
|
-
.g-task:hover{background:var(--g-subtle)}
|
|
127
|
-
.g-task[disabled]{cursor:not-allowed;opacity:.55}
|
|
128
|
-
.g-task .g-check{flex:none;width:22px;height:22px;border-radius:999px;border:2px solid var(--g-border);display:inline-flex;align-items:center;justify-content:center;font-size:13px;margin-top:1px;color:#fff}
|
|
129
|
-
.g-task.g-done .g-check{background:var(--g-primary);border-color:var(--g-primary)}
|
|
130
|
-
.g-task.g-done .g-task-title{text-decoration:line-through;color:var(--g-muted)}
|
|
131
|
-
.g-task-title{font-weight:500}
|
|
132
|
-
.g-task-desc{font-size:12px;color:var(--g-muted);margin-top:2px}
|
|
133
|
-
.g-panel-foot{padding:10px 20px;border-top:1px solid var(--g-border);display:flex;justify-content:flex-end;gap:8px}
|
|
134
|
-
.g-complete{padding:28px 20px;text-align:center}
|
|
135
|
-
.g-complete .g-title{margin-right:0;font-size:18px}
|
|
136
|
-
/* survey */
|
|
137
|
-
.g-question{margin-bottom:16px}
|
|
138
|
-
.g-q-title{font-weight:600;margin:0 0 4px}
|
|
139
|
-
.g-q-desc{font-size:12px;color:var(--g-muted);margin:0 0 8px}
|
|
140
|
-
.g-scale{display:flex;gap:4px;flex-wrap:wrap}
|
|
141
|
-
.g-scale button{min-width:34px;height:40px;flex:1;padding:0 4px;border-radius:6px;border:1px solid var(--g-border);background:var(--g-subtle);color:var(--g-text);font:inherit;cursor:pointer}
|
|
142
|
-
.g-scale button[aria-pressed="true"],.g-scale button:hover{background:var(--g-primary);color:var(--g-primary-text);border-color:var(--g-primary)}
|
|
143
|
-
.g-scale-labels{display:flex;justify-content:space-between;font-size:11px;color:var(--g-muted);margin-top:4px}
|
|
144
|
-
.g-stars button,.g-thumbs button{font-size:22px;background:transparent;border:0;cursor:pointer;color:var(--g-muted);min-width:40px;height:40px;font:inherit}
|
|
145
|
-
.g-stars button[aria-pressed="true"],.g-stars button.g-on{color:#f59e0b}
|
|
146
|
-
.g-thumbs button[aria-pressed="true"]{color:var(--g-primary)}
|
|
147
|
-
.g-choice{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--g-border);border-radius:8px;margin-bottom:6px;cursor:pointer;min-height:40px;font:inherit;background:transparent;color:inherit;width:100%;text-align:left}
|
|
148
|
-
.g-choice[aria-checked="true"]{border-color:var(--g-primary);background:color-mix(in srgb,var(--g-primary) 8%,transparent)}
|
|
149
|
-
.g-choice .g-dot{width:16px;height:16px;border-radius:999px;border:2px solid var(--g-border);flex:none}
|
|
150
|
-
.g-choice.g-multi .g-dot{border-radius:4px}
|
|
151
|
-
.g-choice[aria-checked="true"] .g-dot{background:var(--g-primary);border-color:var(--g-primary)}
|
|
152
|
-
.g-input{width:100%;min-height:40px;padding:8px 10px;border:1px solid var(--g-border);border-radius:8px;background:var(--g-bg);color:var(--g-text);font:inherit;resize:vertical}
|
|
153
|
-
.g-error{color:#dc2626;font-size:12px;margin-top:4px}
|
|
154
|
-
/* resource center */
|
|
155
|
-
.g-rc-search{padding:12px 20px 4px}
|
|
156
|
-
.g-rc-section{padding:8px 20px 4px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--g-muted);font-weight:600}
|
|
157
|
-
.g-rc-section[data-depth]{text-transform:none;letter-spacing:0;font-size:12px}
|
|
158
|
-
.g-rc-item{display:flex;align-items:flex-start;gap:10px;width:100%;padding:10px 20px;border:0;background:transparent;font:inherit;color:inherit;text-align:left;cursor:pointer;min-height:44px;text-decoration:none}
|
|
159
|
-
.g-rc-item:hover{background:var(--g-subtle)}
|
|
160
|
-
.g-rc-item .g-rc-title{font-weight:500}
|
|
161
|
-
.g-rc-item .g-rc-sum{font-size:12px;color:var(--g-muted);margin-top:2px}
|
|
162
|
-
.g-rc-item .g-rc-icon{flex:none;width:20px;text-align:center;color:var(--g-primary)}
|
|
163
|
-
.g-rc-row{display:flex;align-items:center;gap:6px;padding-right:16px}
|
|
164
|
-
.g-rc-row>.g-rc-item{flex:1;min-width:0;padding-right:4px}
|
|
165
|
-
.g-rc-row:hover{background:var(--g-subtle)}
|
|
166
|
-
.g-rc-row:hover>.g-rc-item{background:transparent}
|
|
167
|
-
.g-rc-showme{flex:none;min-height:32px;padding:4px 10px;font-size:12px;white-space:nowrap}
|
|
168
|
-
.g-help-showme{margin:4px 0 12px}
|
|
169
|
-
.g-rc-article{padding:16px 20px}
|
|
170
|
-
.g-resource-center .g-panel{transition:width .2s ease,max-height .2s ease}
|
|
171
|
-
.g-resource-center .g-panel.g-panel-reading{width:min(720px,calc(100vw - 32px));max-height:calc(100vh - 100px)}
|
|
172
|
-
.g-rc-back{margin-bottom:8px}
|
|
173
|
-
.g-rc-empty{padding:24px 20px;color:var(--g-muted);text-align:center}
|
|
174
|
-
.g-faq-a{padding:0 20px 12px 50px;font-size:13px;color:var(--g-muted)}
|
|
175
|
-
.g-faq-a[hidden]{display:none}
|
|
176
|
-
/* authoring */
|
|
177
|
-
.g-auth-bar{position:fixed;top:0;left:0;right:0;z-index:calc(var(--g-z) + 10);pointer-events:auto;display:flex;align-items:center;gap:12px;padding:8px 16px;background:#111827;color:#fff;font:500 13px/1.4 var(--g-font);box-shadow:0 2px 10px rgba(0,0,0,.3)}
|
|
178
|
-
.g-auth-bar .g-dot-live{width:8px;height:8px;border-radius:999px;background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.3)}
|
|
179
|
-
.g-auth-bar .g-spacer{flex:1}
|
|
180
|
-
.g-auth-bar .g-btn{min-height:32px;padding:4px 12px;font-size:13px}
|
|
181
|
-
.g-auth-bar .g-btn-secondary{background:rgba(255,255,255,.12);color:#fff;border-color:transparent}
|
|
182
|
-
.g-auth-outline{position:fixed;z-index:calc(var(--g-z) + 9);pointer-events:none;border:2px solid var(--g-primary);background:color-mix(in srgb,var(--g-primary) 12%,transparent);border-radius:4px;transition:all .06s linear}
|
|
183
|
-
.g-auth-label{position:absolute;left:-2px;top:-24px;background:var(--g-primary);color:#fff;font:600 11px/1 var(--g-font);padding:5px 7px;border-radius:4px;white-space:nowrap;max-width:320px;overflow:hidden;text-overflow:ellipsis}
|
|
184
|
-
.g-auth-outline.g-picked{border-style:dashed;border-color:#22c55e;background:rgba(34,197,94,.12)}
|
|
185
|
-
.g-auth-outline.g-picked .g-auth-label{background:#16a34a}
|
|
186
|
-
.g-highlight{position:fixed;z-index:calc(var(--g-z) + 8);pointer-events:none;border:2px dashed #f59e0b;background:rgba(245,158,11,.12);border-radius:4px}
|
|
187
|
-
@media (max-width:480px){.g-card.g-modal,.g-panel{width:calc(100vw - 32px)}.g-inner{padding:16px}}
|
|
188
|
-
`;
|
|
189
|
-
|
|
190
|
-
// src/host.ts
|
|
191
|
-
var HOST_ID = "guidely-root";
|
|
192
|
-
var current = null;
|
|
193
|
-
var DEFAULT_THEME = {
|
|
194
|
-
primaryColor: "#4f46e5",
|
|
195
|
-
backgroundColor: "#ffffff",
|
|
196
|
-
textColor: "#111827",
|
|
197
|
-
borderRadius: 12,
|
|
198
|
-
fontFamily: "Inter, system-ui, -apple-system, sans-serif"
|
|
199
|
-
};
|
|
200
|
-
function ensureHost(doc = document) {
|
|
201
|
-
if (current && current.host.isConnected && current.host.ownerDocument === doc) return current;
|
|
202
|
-
let host = doc.getElementById(HOST_ID);
|
|
203
|
-
if (!host) {
|
|
204
|
-
host = doc.createElement("div");
|
|
205
|
-
host.id = HOST_ID;
|
|
206
|
-
host.setAttribute("data-guidely", "");
|
|
207
|
-
(doc.body || doc.documentElement).appendChild(host);
|
|
208
|
-
}
|
|
209
|
-
const shadow = host.shadowRoot ?? host.attachShadow({ mode: "open" });
|
|
210
|
-
if (!shadow.querySelector("style[data-g-base]")) {
|
|
211
|
-
const style = doc.createElement("style");
|
|
212
|
-
style.setAttribute("data-g-base", "");
|
|
213
|
-
style.textContent = STYLES;
|
|
214
|
-
shadow.appendChild(style);
|
|
215
|
-
}
|
|
216
|
-
let live = shadow.querySelector(".g-live");
|
|
217
|
-
if (!live) {
|
|
218
|
-
live = doc.createElement("div");
|
|
219
|
-
live.className = "g-live";
|
|
220
|
-
live.setAttribute("aria-live", "polite");
|
|
221
|
-
live.setAttribute("aria-atomic", "true");
|
|
222
|
-
shadow.appendChild(live);
|
|
223
|
-
}
|
|
224
|
-
const liveEl = live;
|
|
225
|
-
current = {
|
|
226
|
-
host,
|
|
227
|
-
shadow,
|
|
228
|
-
live: liveEl,
|
|
229
|
-
announce(text) {
|
|
230
|
-
liveEl.textContent = "";
|
|
231
|
-
setTimeout(() => {
|
|
232
|
-
liveEl.textContent = text;
|
|
233
|
-
}, 30);
|
|
234
|
-
},
|
|
235
|
-
destroy() {
|
|
236
|
-
host?.remove();
|
|
237
|
-
if (current?.host === host) current = null;
|
|
238
|
-
}
|
|
239
|
-
};
|
|
240
|
-
return current;
|
|
241
|
-
}
|
|
242
|
-
function destroyHost() {
|
|
243
|
-
current?.destroy();
|
|
244
|
-
const stray = typeof document !== "undefined" ? document.getElementById(HOST_ID) : null;
|
|
245
|
-
stray?.remove();
|
|
246
|
-
current = null;
|
|
247
|
-
}
|
|
248
|
-
function prefersDark() {
|
|
249
|
-
try {
|
|
250
|
-
return typeof window !== "undefined" && typeof window.matchMedia === "function" && window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
251
|
-
} catch {
|
|
252
|
-
return false;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
function prefersReducedMotion() {
|
|
256
|
-
try {
|
|
257
|
-
return typeof window !== "undefined" && typeof window.matchMedia === "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
258
|
-
} catch {
|
|
259
|
-
return false;
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
function resolveTheme(theme, appearance) {
|
|
263
|
-
const t = { ...DEFAULT_THEME, ...theme || {} };
|
|
264
|
-
const a = appearance || {};
|
|
265
|
-
const requested = a.theme ?? "auto";
|
|
266
|
-
const mode = requested === "auto" ? prefersDark() ? "dark" : "light" : requested;
|
|
267
|
-
const dark = mode === "dark";
|
|
268
|
-
return {
|
|
269
|
-
primary: a.primaryColor || t.primaryColor,
|
|
270
|
-
bg: a.backgroundColor || (dark ? "#1f2937" : t.backgroundColor),
|
|
271
|
-
text: a.textColor || (dark ? "#f9fafb" : t.textColor),
|
|
272
|
-
radius: a.borderRadius ?? t.borderRadius,
|
|
273
|
-
font: a.fontFamily || t.fontFamily,
|
|
274
|
-
z: a.zIndex ?? 2147483e3,
|
|
275
|
-
overlay: a.overlayOpacity ?? 0.5,
|
|
276
|
-
mode,
|
|
277
|
-
animation: prefersReducedMotion() ? "none" : a.animation ?? "fade"
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
function applyTheme(el, vars) {
|
|
281
|
-
el.style.setProperty("--g-primary", vars.primary);
|
|
282
|
-
el.style.setProperty("--g-bg", vars.bg);
|
|
283
|
-
el.style.setProperty("--g-text", vars.text);
|
|
284
|
-
el.style.setProperty("--g-radius", `${vars.radius}px`);
|
|
285
|
-
el.style.setProperty("--g-font", vars.font);
|
|
286
|
-
el.style.setProperty("--g-z", String(vars.z));
|
|
287
|
-
el.style.setProperty("--g-overlay", String(vars.overlay));
|
|
288
|
-
el.setAttribute("data-theme", vars.mode);
|
|
289
|
-
el.setAttribute("data-anim", vars.animation);
|
|
290
|
-
}
|
|
291
|
-
function createScope(theme, appearance, doc = document) {
|
|
292
|
-
const handle = ensureHost(doc);
|
|
293
|
-
const el = doc.createElement("div");
|
|
294
|
-
el.className = "g-scope";
|
|
295
|
-
const vars = resolveTheme(theme, appearance);
|
|
296
|
-
applyTheme(el, vars);
|
|
297
|
-
handle.shadow.appendChild(el);
|
|
298
|
-
let mq = null;
|
|
299
|
-
const onChange = () => applyTheme(el, resolveTheme(theme, appearance));
|
|
300
|
-
if ((appearance?.theme ?? "auto") === "auto" && typeof window !== "undefined" && typeof window.matchMedia === "function") {
|
|
301
|
-
try {
|
|
302
|
-
mq = window.matchMedia("(prefers-color-scheme: dark)");
|
|
303
|
-
mq.addEventListener?.("change", onChange);
|
|
304
|
-
} catch {
|
|
305
|
-
mq = null;
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
return {
|
|
309
|
-
el,
|
|
310
|
-
vars,
|
|
311
|
-
destroy() {
|
|
312
|
-
mq?.removeEventListener?.("change", onChange);
|
|
313
|
-
el.remove();
|
|
314
|
-
}
|
|
315
|
-
};
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
export {
|
|
319
|
-
__publicField,
|
|
320
|
-
STYLES,
|
|
321
|
-
HOST_ID,
|
|
322
|
-
DEFAULT_THEME,
|
|
323
|
-
ensureHost,
|
|
324
|
-
destroyHost,
|
|
325
|
-
prefersReducedMotion,
|
|
326
|
-
resolveTheme,
|
|
327
|
-
applyTheme,
|
|
328
|
-
createScope
|
|
329
|
-
};
|
|
330
|
-
//# sourceMappingURL=chunk-PG7CMBHD.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/styles.ts","../src/host.ts"],"sourcesContent":["/** All runtime CSS, injected once into the Shadow DOM host. Tokens are CSS custom properties. */\nexport const STYLES = `\n:host{all:initial;position:static;display:block;contain:none}\n*,*::before,*::after{box-sizing:border-box}\n.g-scope [hidden]{display:none!important}\n.g-scope{\n --g-primary:#4f46e5;--g-bg:#ffffff;--g-text:#111827;--g-radius:12px;--g-font:Inter,system-ui,-apple-system,sans-serif;--g-z:2147483000;--g-overlay:.5;\n --g-muted:color-mix(in srgb,var(--g-text) 62%,transparent);--g-border:color-mix(in srgb,var(--g-text) 12%,transparent);\n --g-subtle:color-mix(in srgb,var(--g-text) 5%,transparent);--g-shadow:0 10px 40px rgba(0,0,0,.18),0 2px 8px rgba(0,0,0,.08);\n --g-primary-text:#ffffff;\n font-family:var(--g-font);font-size:14px;line-height:1.5;color:var(--g-text);-webkit-font-smoothing:antialiased;\n}\n.g-scope[data-theme=\"dark\"]{--g-shadow:0 10px 40px rgba(0,0,0,.5),0 2px 8px rgba(0,0,0,.3)}\n.g-live{position:fixed;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}\n.g-layer{position:fixed;inset:0;z-index:var(--g-z);pointer-events:none}\n.g-overlay{position:fixed;inset:0;background:rgba(0,0,0,var(--g-overlay));z-index:calc(var(--g-z) + 3);pointer-events:auto}\n.g-overlay.g-transparent{background:transparent}\n.g-spot-rect{position:fixed;background:rgba(0,0,0,var(--g-overlay));z-index:calc(var(--g-z) + 3);pointer-events:auto}\n.g-spot-ring{position:fixed;z-index:calc(var(--g-z) + 3);pointer-events:none;border-radius:6px;box-shadow:0 0 0 2px var(--g-primary),0 0 0 6px color-mix(in srgb,var(--g-primary) 30%,transparent)}\n.g-card{\n position:fixed;z-index:calc(var(--g-z) + 4);pointer-events:auto;background:var(--g-bg);color:var(--g-text);border-radius:var(--g-radius);\n box-shadow:var(--g-shadow);border:1px solid var(--g-border);width:min(360px,calc(100vw - 32px));max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);overflow:auto;outline:none;\n}\n.g-card.g-modal{left:50%;top:50%;transform:translate(-50%,-50%);width:min(480px,calc(100vw - 32px))}\n.g-card.g-tooltip,.g-card.g-popover,.g-card.g-spotlight-card,.g-card.g-hotspot-card{top:0;left:0;width:min(320px,calc(100vw - 32px))}\n.g-card.g-slideout{width:min(360px,calc(100vw - 32px));margin:16px}\n.g-pos-bottom-right{right:0;bottom:0}.g-pos-bottom-left{left:0;bottom:0}.g-pos-top-right{right:0;top:0}.g-pos-top-left{left:0;top:0}\n.g-pos-center{left:50%;top:50%;transform:translate(-50%,-50%)}\n.g-pos-top{top:0;left:0;right:0}.g-pos-bottom{bottom:0;left:0;right:0}\n.g-banner{position:fixed;left:0;right:0;z-index:calc(var(--g-z) + 1);pointer-events:auto;background:var(--g-primary);color:var(--g-primary-text);padding:10px 48px 10px 16px;display:flex;align-items:center;gap:12px;font-size:14px;box-shadow:0 2px 10px rgba(0,0,0,.15);max-width:100vw}\n.g-banner .g-body{flex:1;min-width:0}\n.g-banner .g-body a{color:inherit;text-decoration:underline}\n.g-banner .g-close{color:inherit;right:8px;top:50%;transform:translateY(-50%)}\n.g-banner .g-btn{background:rgba(255,255,255,.18);color:inherit;border-color:transparent;min-height:36px}\n.g-banner.g-pos-top{top:0}.g-banner.g-pos-bottom{bottom:0}\n.g-inner{padding:20px}\n.g-close{position:absolute;top:8px;right:8px;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--g-muted);border-radius:999px;cursor:pointer;font:inherit;font-size:20px;line-height:1}\n.g-close:hover,.g-close:focus-visible{background:var(--g-subtle);color:var(--g-text);outline:none}\n.g-close:focus-visible,.g-btn:focus-visible,.g-task:focus-visible,.g-choice:focus-visible,.g-scale button:focus-visible,.g-launcher:focus-visible,.g-input:focus-visible,.g-rc-item:focus-visible{outline:2px solid var(--g-primary);outline-offset:2px}\n.g-image{display:block;width:100%;max-height:220px;object-fit:cover;border-radius:var(--g-radius) var(--g-radius) 0 0}\n.g-title{margin:0 28px 6px 0;font-size:16px;font-weight:600;line-height:1.3}\n.g-body{font-size:14px;color:var(--g-text)}\n.g-body p{margin:0 0 8px}.g-body p:last-child{margin-bottom:0}\n.g-body ul,.g-body ol{margin:6px 0;padding-left:20px}\n.g-body a{color:var(--g-primary)}\n.g-body img{max-width:100%;height:auto;border-radius:6px}\n.g-body video,.g-body iframe{display:block;width:100%;max-width:100%;border:0;border-radius:6px;margin:8px 0;background:#000}\n.g-body video{height:auto;max-height:60vh}\n.g-body iframe{aspect-ratio:16/9;height:auto}\n.g-body .gd-pdf{margin:10px 0;border:1px solid var(--g-border);border-radius:10px;background:var(--g-subtle);overflow:hidden}\n.g-body a.gd-file{display:flex;align-items:center;gap:8px;padding:8px 10px;color:var(--g-text);font-size:13px;font-weight:500;text-decoration:none;min-height:40px;overflow-wrap:anywhere}\n.g-body a.gd-file::before{content:\"PDF\";flex:none;font-size:9px;font-weight:700;letter-spacing:.04em;line-height:1;color:#fff;background:#e5484d;border-radius:4px;padding:4px 5px}\n.g-body a.gd-file::after{content:\"⤢\";margin-left:auto;padding-left:8px;color:var(--g-muted);font-size:15px}\n.g-body a.gd-file:hover::after,.g-body a.gd-file:focus-visible::after{color:var(--g-primary)}\n.g-body a.gd-file:focus-visible{outline:2px solid var(--g-primary);outline-offset:-2px;border-radius:10px}\n.g-body > a.gd-file,.g-body p > a.gd-file{margin:10px 0;border:1px solid var(--g-border);border-radius:10px;background:var(--g-subtle)}\n.g-body > a.gd-file::after,.g-body p > a.gd-file::after,.g-body .gd-pdf:not([data-g-ready]) > a.gd-file::after{content:\"↗\"}\n.g-pdf-viewport{position:relative}\n.g-body .gd-pdf-pages{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;padding:0 10px 10px;scroll-padding:0 10px}\n.g-body .gd-pdf-pages::-webkit-scrollbar{display:none}\n.g-body .gd-pdf-pages:focus-visible{outline:2px solid var(--g-primary);outline-offset:-2px}\n.g-body .gd-pdf-pages img{flex:0 0 100%;width:100%;height:auto;margin:0;scroll-snap-align:center;background:#fff;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.18);cursor:zoom-in}\n.g-pdf-viewport .gd-pdf-pages{padding:0;scroll-padding:0;margin:0 10px 10px}\n.g-pdf-count{position:absolute;right:18px;bottom:18px;padding:2px 8px;border-radius:999px;background:rgba(17,17,17,.72);color:#fff;font-size:11px;font-weight:500;pointer-events:none;font-variant-numeric:tabular-nums}\n.g-pdf-nav{position:absolute;top:calc(50% - 21px);width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:999px;background:rgba(17,17,17,.6);color:#fff;font:inherit;font-size:20px;line-height:1;cursor:pointer;opacity:0;transition:opacity .15s}\n.g-pdf-prev{left:16px}.g-pdf-next{right:16px}\n.g-pdf-viewport:hover .g-pdf-nav,.g-pdf-nav:focus-visible{opacity:1}\n.g-pdf-nav:disabled,.g-pdf-single .g-pdf-nav,.g-pdf-single .g-pdf-count{display:none}\n.g-pdf-nav:focus-visible{outline:2px solid #fff;outline-offset:1px}\n@media (hover:none){.g-pdf-nav{display:none}}\n.g-pdf-reader{position:fixed;inset:0;z-index:calc(var(--g-z) + 10);display:flex;flex-direction:column;background:#0b0b0d;pointer-events:auto;color:#fff}\n.g-pdf-bar{display:flex;align-items:center;gap:10px;padding:8px 8px 8px 16px;min-height:56px}\n.g-pdf-title{flex:1;min-width:0;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.g-pdf-bar .g-btn{min-height:36px;color:#fff;background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.18)}\n.g-pdf-close{position:static;color:#fff}\n.g-pdf-close:hover,.g-pdf-close:focus-visible{background:rgba(255,255,255,.14);color:#fff}\n.g-pdf-scroll{position:relative;flex:1;overflow-y:auto;overscroll-behavior:contain;padding:4px 16px 24px;display:flex;flex-direction:column;align-items:center;gap:12px;outline:none}\n.g-pdf-scroll img{display:block;width:100%;max-width:900px;height:auto;background:#fff;border-radius:2px;box-shadow:0 2px 12px rgba(0,0,0,.4)}\n.g-body code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;background:var(--g-subtle);padding:1px 4px;border-radius:4px}\n.g-body pre{background:var(--g-subtle);padding:10px;border-radius:6px;overflow:auto}\n.g-body blockquote{margin:6px 0;padding-left:10px;border-left:3px solid var(--g-border);color:var(--g-muted)}\n.g-footer{display:flex;align-items:center;gap:8px;margin-top:14px;flex-wrap:wrap}\n.g-progress{font-size:12px;color:var(--g-muted);margin-right:auto}\n.g-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:8px 14px;border-radius:calc(var(--g-radius) * .66);border:1px solid transparent;font:inherit;font-size:14px;font-weight:500;cursor:pointer;text-decoration:none;transition:background .15s,color .15s,border-color .15s}\n.g-btn-primary{background:var(--g-primary);color:var(--g-primary-text)}\n.g-btn-primary:hover{filter:brightness(1.08)}\n.g-btn-secondary{background:var(--g-subtle);color:var(--g-text);border-color:var(--g-border)}\n.g-btn-secondary:hover{background:color-mix(in srgb,var(--g-text) 10%,transparent)}\n.g-btn-ghost{background:transparent;color:var(--g-muted)}\n.g-btn-ghost:hover{background:var(--g-subtle);color:var(--g-text)}\n.g-btn-link{background:transparent;color:var(--g-primary);padding-left:4px;padding-right:4px}\n.g-btn-link:hover{text-decoration:underline}\n.g-btn:disabled{opacity:.5;cursor:not-allowed}\n.g-arrow{position:absolute;width:12px;height:12px;background:var(--g-bg);transform:rotate(45deg);border:1px solid var(--g-border);z-index:-1}\n.g-hotspot{position:fixed;z-index:calc(var(--g-z) + 1);pointer-events:auto;border-radius:999px;background:var(--g-primary);border:2px solid #fff;box-shadow:0 0 0 2px color-mix(in srgb,var(--g-primary) 40%,transparent);cursor:pointer;padding:0;margin:0}\n.g-hotspot::after{content:\"\";position:absolute;inset:-4px;border-radius:999px;border:2px solid var(--g-primary);opacity:0}\n.g-hotspot.g-pulse::after{animation:g-pulse 1.8s ease-out infinite}\n.g-hotspot-hit{position:absolute;inset:-14px}\n.g-custom{position:fixed;z-index:calc(var(--g-z) + 4);pointer-events:auto;left:50%;top:50%;transform:translate(-50%,-50%);max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);overflow:auto}\n/* animations */\n.g-scope[data-anim=\"fade\"] .g-card,.g-scope[data-anim=\"fade\"] .g-banner,.g-scope[data-anim=\"fade\"] .g-panel{animation:g-fade .18s ease-out}\n.g-scope[data-anim=\"slide\"] .g-card,.g-scope[data-anim=\"slide\"] .g-panel{animation:g-slide .22s ease-out}\n.g-scope[data-anim=\"none\"] *{animation:none!important;transition:none!important}\n@keyframes g-fade{from{opacity:0}to{opacity:1}}\n@keyframes g-slide{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}\n@keyframes g-pulse{0%{transform:scale(.6);opacity:.9}100%{transform:scale(2.2);opacity:0}}\n@media (prefers-reduced-motion:reduce){.g-scope *{animation:none!important;transition:none!important}}\n/* launcher + panel (checklist / resource center) */\n.g-launcher{position:fixed;z-index:calc(var(--g-z) + 1);pointer-events:auto;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:10px 16px;border-radius:999px;border:0;background:var(--g-primary);color:var(--g-primary-text);font:inherit;font-size:14px;font-weight:600;cursor:pointer;box-shadow:var(--g-shadow);margin:16px}\n.g-launcher .g-ring{width:22px;height:22px;border-radius:999px;background:conic-gradient(#fff var(--g-pct,0%),rgba(255,255,255,.3) 0);display:inline-flex;align-items:center;justify-content:center;font-size:10px;position:relative}\n.g-launcher .g-ring::after{content:\"\";position:absolute;inset:3px;border-radius:999px;background:var(--g-primary)}\n.g-launcher .g-count{position:relative;z-index:1}\n.g-panel{position:fixed;z-index:calc(var(--g-z) + 2);pointer-events:auto;width:min(380px,calc(100vw - 32px));max-height:min(620px,calc(100vh - 100px));display:flex;flex-direction:column;background:var(--g-bg);color:var(--g-text);border-radius:var(--g-radius);box-shadow:var(--g-shadow);border:1px solid var(--g-border);margin:16px;bottom:60px;overflow:hidden}\n.g-panel-head{padding:16px 48px 12px 20px;border-bottom:1px solid var(--g-border);position:relative}\n.g-panel-title{margin:0;font-size:16px;font-weight:600}\n.g-panel-sub{margin:4px 0 0;font-size:12px;color:var(--g-muted)}\n.g-panel-body{overflow:auto;padding:8px 0;flex:1}\n.g-help{display:flex;flex-direction:column;min-height:0;flex:1}\n.g-bar{height:6px;border-radius:999px;background:var(--g-subtle);overflow:hidden;margin-top:10px}\n.g-bar > span{display:block;height:100%;background:var(--g-primary);transition:width .3s}\n.g-task{display:flex;gap:12px;align-items:flex-start;width:100%;padding:12px 20px;border:0;background:transparent;text-align:left;font:inherit;color:inherit;cursor:pointer;min-height:44px}\n.g-task:hover{background:var(--g-subtle)}\n.g-task[disabled]{cursor:not-allowed;opacity:.55}\n.g-task .g-check{flex:none;width:22px;height:22px;border-radius:999px;border:2px solid var(--g-border);display:inline-flex;align-items:center;justify-content:center;font-size:13px;margin-top:1px;color:#fff}\n.g-task.g-done .g-check{background:var(--g-primary);border-color:var(--g-primary)}\n.g-task.g-done .g-task-title{text-decoration:line-through;color:var(--g-muted)}\n.g-task-title{font-weight:500}\n.g-task-desc{font-size:12px;color:var(--g-muted);margin-top:2px}\n.g-panel-foot{padding:10px 20px;border-top:1px solid var(--g-border);display:flex;justify-content:flex-end;gap:8px}\n.g-complete{padding:28px 20px;text-align:center}\n.g-complete .g-title{margin-right:0;font-size:18px}\n/* survey */\n.g-question{margin-bottom:16px}\n.g-q-title{font-weight:600;margin:0 0 4px}\n.g-q-desc{font-size:12px;color:var(--g-muted);margin:0 0 8px}\n.g-scale{display:flex;gap:4px;flex-wrap:wrap}\n.g-scale button{min-width:34px;height:40px;flex:1;padding:0 4px;border-radius:6px;border:1px solid var(--g-border);background:var(--g-subtle);color:var(--g-text);font:inherit;cursor:pointer}\n.g-scale button[aria-pressed=\"true\"],.g-scale button:hover{background:var(--g-primary);color:var(--g-primary-text);border-color:var(--g-primary)}\n.g-scale-labels{display:flex;justify-content:space-between;font-size:11px;color:var(--g-muted);margin-top:4px}\n.g-stars button,.g-thumbs button{font-size:22px;background:transparent;border:0;cursor:pointer;color:var(--g-muted);min-width:40px;height:40px;font:inherit}\n.g-stars button[aria-pressed=\"true\"],.g-stars button.g-on{color:#f59e0b}\n.g-thumbs button[aria-pressed=\"true\"]{color:var(--g-primary)}\n.g-choice{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--g-border);border-radius:8px;margin-bottom:6px;cursor:pointer;min-height:40px;font:inherit;background:transparent;color:inherit;width:100%;text-align:left}\n.g-choice[aria-checked=\"true\"]{border-color:var(--g-primary);background:color-mix(in srgb,var(--g-primary) 8%,transparent)}\n.g-choice .g-dot{width:16px;height:16px;border-radius:999px;border:2px solid var(--g-border);flex:none}\n.g-choice.g-multi .g-dot{border-radius:4px}\n.g-choice[aria-checked=\"true\"] .g-dot{background:var(--g-primary);border-color:var(--g-primary)}\n.g-input{width:100%;min-height:40px;padding:8px 10px;border:1px solid var(--g-border);border-radius:8px;background:var(--g-bg);color:var(--g-text);font:inherit;resize:vertical}\n.g-error{color:#dc2626;font-size:12px;margin-top:4px}\n/* resource center */\n.g-rc-search{padding:12px 20px 4px}\n.g-rc-section{padding:8px 20px 4px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--g-muted);font-weight:600}\n.g-rc-section[data-depth]{text-transform:none;letter-spacing:0;font-size:12px}\n.g-rc-item{display:flex;align-items:flex-start;gap:10px;width:100%;padding:10px 20px;border:0;background:transparent;font:inherit;color:inherit;text-align:left;cursor:pointer;min-height:44px;text-decoration:none}\n.g-rc-item:hover{background:var(--g-subtle)}\n.g-rc-item .g-rc-title{font-weight:500}\n.g-rc-item .g-rc-sum{font-size:12px;color:var(--g-muted);margin-top:2px}\n.g-rc-item .g-rc-icon{flex:none;width:20px;text-align:center;color:var(--g-primary)}\n.g-rc-row{display:flex;align-items:center;gap:6px;padding-right:16px}\n.g-rc-row>.g-rc-item{flex:1;min-width:0;padding-right:4px}\n.g-rc-row:hover{background:var(--g-subtle)}\n.g-rc-row:hover>.g-rc-item{background:transparent}\n.g-rc-showme{flex:none;min-height:32px;padding:4px 10px;font-size:12px;white-space:nowrap}\n.g-help-showme{margin:4px 0 12px}\n.g-rc-article{padding:16px 20px}\n.g-resource-center .g-panel{transition:width .2s ease,max-height .2s ease}\n.g-resource-center .g-panel.g-panel-reading{width:min(720px,calc(100vw - 32px));max-height:calc(100vh - 100px)}\n.g-rc-back{margin-bottom:8px}\n.g-rc-empty{padding:24px 20px;color:var(--g-muted);text-align:center}\n.g-faq-a{padding:0 20px 12px 50px;font-size:13px;color:var(--g-muted)}\n.g-faq-a[hidden]{display:none}\n/* authoring */\n.g-auth-bar{position:fixed;top:0;left:0;right:0;z-index:calc(var(--g-z) + 10);pointer-events:auto;display:flex;align-items:center;gap:12px;padding:8px 16px;background:#111827;color:#fff;font:500 13px/1.4 var(--g-font);box-shadow:0 2px 10px rgba(0,0,0,.3)}\n.g-auth-bar .g-dot-live{width:8px;height:8px;border-radius:999px;background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.3)}\n.g-auth-bar .g-spacer{flex:1}\n.g-auth-bar .g-btn{min-height:32px;padding:4px 12px;font-size:13px}\n.g-auth-bar .g-btn-secondary{background:rgba(255,255,255,.12);color:#fff;border-color:transparent}\n.g-auth-outline{position:fixed;z-index:calc(var(--g-z) + 9);pointer-events:none;border:2px solid var(--g-primary);background:color-mix(in srgb,var(--g-primary) 12%,transparent);border-radius:4px;transition:all .06s linear}\n.g-auth-label{position:absolute;left:-2px;top:-24px;background:var(--g-primary);color:#fff;font:600 11px/1 var(--g-font);padding:5px 7px;border-radius:4px;white-space:nowrap;max-width:320px;overflow:hidden;text-overflow:ellipsis}\n.g-auth-outline.g-picked{border-style:dashed;border-color:#22c55e;background:rgba(34,197,94,.12)}\n.g-auth-outline.g-picked .g-auth-label{background:#16a34a}\n.g-highlight{position:fixed;z-index:calc(var(--g-z) + 8);pointer-events:none;border:2px dashed #f59e0b;background:rgba(245,158,11,.12);border-radius:4px}\n@media (max-width:480px){.g-card.g-modal,.g-panel{width:calc(100vw - 32px)}.g-inner{padding:16px}}\n`;\n","import type { Appearance, ProjectTheme } from \"@guidelytech/shared\";\nimport { STYLES } from \"./styles\";\n\nexport const HOST_ID = \"guidely-root\";\n\nexport interface HostHandle {\n host: HTMLElement;\n shadow: ShadowRoot;\n /** Polite live region for screen-reader announcements. */\n live: HTMLElement;\n announce(text: string): void;\n destroy(): void;\n}\n\nlet current: HostHandle | null = null;\n\n/** Default project theme used when the config has not loaded yet. */\nexport const DEFAULT_THEME: ProjectTheme = {\n primaryColor: \"#4f46e5\",\n backgroundColor: \"#ffffff\",\n textColor: \"#111827\",\n borderRadius: 12,\n fontFamily: \"Inter, system-ui, -apple-system, sans-serif\",\n};\n\n/** Returns (creating when needed) the single Shadow-DOM host appended to `document.body`. */\nexport function ensureHost(doc: Document = document): HostHandle {\n if (current && current.host.isConnected && current.host.ownerDocument === doc) return current;\n let host = doc.getElementById(HOST_ID) as HTMLElement | null;\n if (!host) {\n host = doc.createElement(\"div\");\n host.id = HOST_ID;\n host.setAttribute(\"data-guidely\", \"\");\n (doc.body || doc.documentElement).appendChild(host);\n }\n const shadow = host.shadowRoot ?? host.attachShadow({ mode: \"open\" });\n if (!shadow.querySelector(\"style[data-g-base]\")) {\n const style = doc.createElement(\"style\");\n style.setAttribute(\"data-g-base\", \"\");\n style.textContent = STYLES;\n shadow.appendChild(style);\n }\n let live = shadow.querySelector<HTMLElement>(\".g-live\");\n if (!live) {\n live = doc.createElement(\"div\");\n live.className = \"g-live\";\n live.setAttribute(\"aria-live\", \"polite\");\n live.setAttribute(\"aria-atomic\", \"true\");\n shadow.appendChild(live);\n }\n const liveEl = live;\n current = {\n host,\n shadow,\n live: liveEl,\n announce(text: string) {\n liveEl.textContent = \"\";\n setTimeout(() => {\n liveEl.textContent = text;\n }, 30);\n },\n destroy() {\n host?.remove();\n if (current?.host === host) current = null;\n },\n };\n return current;\n}\n\n/** Removes the host from the document (all overlays with it). */\nexport function destroyHost(): void {\n current?.destroy();\n const stray = typeof document !== \"undefined\" ? document.getElementById(HOST_ID) : null;\n stray?.remove();\n current = null;\n}\n\nexport type ResolvedThemeMode = \"light\" | \"dark\";\n\nfunction prefersDark(): boolean {\n try {\n return typeof window !== \"undefined\" && typeof window.matchMedia === \"function\" && window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n } catch {\n return false;\n }\n}\n\nexport function prefersReducedMotion(): boolean {\n try {\n return typeof window !== \"undefined\" && typeof window.matchMedia === \"function\" && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n } catch {\n return false;\n }\n}\n\nexport interface ThemeVars {\n primary: string;\n bg: string;\n text: string;\n radius: number;\n font: string;\n z: number;\n overlay: number;\n mode: ResolvedThemeMode;\n animation: Appearance[\"animation\"];\n}\n\n/** Merges project theme + guide appearance into CSS custom property values. */\nexport function resolveTheme(theme: Partial<ProjectTheme> | null | undefined, appearance?: Partial<Appearance> | null): ThemeVars {\n const t = { ...DEFAULT_THEME, ...(theme || {}) };\n const a = appearance || {};\n const requested = a.theme ?? \"auto\";\n const mode: ResolvedThemeMode = requested === \"auto\" ? (prefersDark() ? \"dark\" : \"light\") : requested;\n const dark = mode === \"dark\";\n return {\n primary: a.primaryColor || t.primaryColor,\n bg: a.backgroundColor || (dark ? \"#1f2937\" : t.backgroundColor),\n text: a.textColor || (dark ? \"#f9fafb\" : t.textColor),\n radius: a.borderRadius ?? t.borderRadius,\n font: a.fontFamily || t.fontFamily,\n z: a.zIndex ?? 2147483000,\n overlay: a.overlayOpacity ?? 0.5,\n mode,\n animation: prefersReducedMotion() ? \"none\" : (a.animation ?? \"fade\"),\n };\n}\n\n/** Applies theme variables to a scope element. */\nexport function applyTheme(el: HTMLElement, vars: ThemeVars): void {\n el.style.setProperty(\"--g-primary\", vars.primary);\n el.style.setProperty(\"--g-bg\", vars.bg);\n el.style.setProperty(\"--g-text\", vars.text);\n el.style.setProperty(\"--g-radius\", `${vars.radius}px`);\n el.style.setProperty(\"--g-font\", vars.font);\n el.style.setProperty(\"--g-z\", String(vars.z));\n el.style.setProperty(\"--g-overlay\", String(vars.overlay));\n el.setAttribute(\"data-theme\", vars.mode);\n el.setAttribute(\"data-anim\", vars.animation);\n}\n\n/**\n * Creates a themed scope container inside the shadow root. Each guide/widget renders inside its\n * own scope so appearance settings never leak between guides.\n */\nexport function createScope(theme?: Partial<ProjectTheme> | null, appearance?: Partial<Appearance> | null, doc: Document = document): { el: HTMLElement; vars: ThemeVars; destroy(): void } {\n const handle = ensureHost(doc);\n const el = doc.createElement(\"div\");\n el.className = \"g-scope\";\n const vars = resolveTheme(theme, appearance);\n applyTheme(el, vars);\n handle.shadow.appendChild(el);\n let mq: MediaQueryList | null = null;\n const onChange = () => applyTheme(el, resolveTheme(theme, appearance));\n if ((appearance?.theme ?? \"auto\") === \"auto\" && typeof window !== \"undefined\" && typeof window.matchMedia === \"function\") {\n try {\n mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n mq.addEventListener?.(\"change\", onChange);\n } catch {\n mq = null;\n }\n }\n return {\n el,\n vars,\n destroy() {\n mq?.removeEventListener?.(\"change\", onChange);\n el.remove();\n },\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/styles.ts","../src/host.ts"],"sourcesContent":["/** All runtime CSS, injected once into the Shadow DOM host. Tokens are CSS custom properties. */\nexport const STYLES = `\n:host{all:initial;position:static;display:block;contain:none}\n*,*::before,*::after{box-sizing:border-box}\n.g-scope [hidden]{display:none!important}\n.g-scope{\n --g-primary:#4f46e5;--g-bg:#ffffff;--g-text:#111827;--g-radius:12px;--g-font:Inter,system-ui,-apple-system,sans-serif;--g-z:2147483000;--g-overlay:.5;\n --g-muted:color-mix(in srgb,var(--g-text) 62%,transparent);--g-border:color-mix(in srgb,var(--g-text) 12%,transparent);\n --g-subtle:color-mix(in srgb,var(--g-text) 5%,transparent);--g-shadow:0 10px 40px rgba(0,0,0,.18),0 2px 8px rgba(0,0,0,.08);\n --g-primary-text:#ffffff;\n font-family:var(--g-font);font-size:14px;line-height:1.5;color:var(--g-text);-webkit-font-smoothing:antialiased;\n}\n.g-scope[data-theme=\"dark\"]{--g-shadow:0 10px 40px rgba(0,0,0,.5),0 2px 8px rgba(0,0,0,.3)}\n.g-live{position:fixed;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}\n.g-layer{position:fixed;inset:0;z-index:var(--g-z);pointer-events:none}\n.g-overlay{position:fixed;inset:0;background:rgba(0,0,0,var(--g-overlay));z-index:calc(var(--g-z) + 3);pointer-events:auto}\n.g-overlay.g-transparent{background:transparent}\n.g-spot-rect{position:fixed;background:rgba(0,0,0,var(--g-overlay));z-index:calc(var(--g-z) + 3);pointer-events:auto}\n.g-spot-ring{position:fixed;z-index:calc(var(--g-z) + 3);pointer-events:none;border-radius:6px;box-shadow:0 0 0 2px var(--g-primary),0 0 0 6px color-mix(in srgb,var(--g-primary) 30%,transparent)}\n.g-card{\n position:fixed;z-index:calc(var(--g-z) + 4);pointer-events:auto;background:var(--g-bg);color:var(--g-text);border-radius:var(--g-radius);\n box-shadow:var(--g-shadow);border:1px solid var(--g-border);width:min(360px,calc(100vw - 32px));max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);overflow:auto;outline:none;\n}\n.g-card.g-modal{left:50%;top:50%;transform:translate(-50%,-50%);width:min(480px,calc(100vw - 32px))}\n.g-card.g-tooltip,.g-card.g-popover,.g-card.g-spotlight-card,.g-card.g-hotspot-card{top:0;left:0;width:min(320px,calc(100vw - 32px))}\n.g-card.g-slideout{width:min(360px,calc(100vw - 32px));margin:16px}\n.g-pos-bottom-right{right:0;bottom:0}.g-pos-bottom-left{left:0;bottom:0}.g-pos-top-right{right:0;top:0}.g-pos-top-left{left:0;top:0}\n.g-pos-center{left:50%;top:50%;transform:translate(-50%,-50%)}\n.g-pos-top{top:0;left:0;right:0}.g-pos-bottom{bottom:0;left:0;right:0}\n.g-banner{position:fixed;left:0;right:0;z-index:calc(var(--g-z) + 1);pointer-events:auto;background:var(--g-primary);color:var(--g-primary-text);padding:10px 48px 10px 16px;display:flex;align-items:center;gap:12px;font-size:14px;box-shadow:0 2px 10px rgba(0,0,0,.15);max-width:100vw}\n.g-banner .g-body{flex:1;min-width:0}\n.g-banner .g-body a{color:inherit;text-decoration:underline}\n.g-banner .g-close{color:inherit;right:8px;top:50%;transform:translateY(-50%)}\n.g-banner .g-btn{background:rgba(255,255,255,.18);color:inherit;border-color:transparent;min-height:36px}\n.g-banner.g-pos-top{top:0}.g-banner.g-pos-bottom{bottom:0}\n.g-inner{padding:20px}\n.g-close{position:absolute;top:8px;right:8px;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--g-muted);border-radius:999px;cursor:pointer;font:inherit;font-size:20px;line-height:1}\n.g-close:hover,.g-close:focus-visible{background:var(--g-subtle);color:var(--g-text);outline:none}\n.g-close:focus-visible,.g-btn:focus-visible,.g-task:focus-visible,.g-choice:focus-visible,.g-scale button:focus-visible,.g-launcher:focus-visible,.g-input:focus-visible,.g-rc-item:focus-visible{outline:2px solid var(--g-primary);outline-offset:2px}\n.g-image{display:block;width:100%;max-height:220px;object-fit:cover;border-radius:var(--g-radius) var(--g-radius) 0 0}\n.g-title{margin:0 28px 6px 0;font-size:16px;font-weight:600;line-height:1.3}\n.g-body{font-size:14px;color:var(--g-text)}\n.g-body p{margin:0 0 8px}.g-body p:last-child{margin-bottom:0}\n.g-body ul,.g-body ol{margin:6px 0;padding-left:20px}\n.g-body a{color:var(--g-primary)}\n.g-body img{max-width:100%;height:auto;border-radius:6px}\n.g-body video,.g-body iframe{display:block;width:100%;max-width:100%;border:0;border-radius:6px;margin:8px 0;background:#000}\n.g-body video{height:auto;max-height:60vh}\n.g-body iframe{aspect-ratio:16/9;height:auto}\n.g-body .gd-pdf{margin:10px 0;border:1px solid var(--g-border);border-radius:10px;background:var(--g-subtle);overflow:hidden}\n.g-body a.gd-file{display:flex;align-items:center;gap:8px;padding:8px 10px;color:var(--g-text);font-size:13px;font-weight:500;text-decoration:none;min-height:40px;overflow-wrap:anywhere}\n.g-body a.gd-file::before{content:\"PDF\";flex:none;font-size:9px;font-weight:700;letter-spacing:.04em;line-height:1;color:#fff;background:#e5484d;border-radius:4px;padding:4px 5px}\n.g-body a.gd-file::after{content:\"⤢\";margin-left:auto;padding-left:8px;color:var(--g-muted);font-size:15px}\n.g-body a.gd-file:hover::after,.g-body a.gd-file:focus-visible::after{color:var(--g-primary)}\n.g-body a.gd-file:focus-visible{outline:2px solid var(--g-primary);outline-offset:-2px;border-radius:10px}\n.g-body > a.gd-file,.g-body p > a.gd-file{margin:10px 0;border:1px solid var(--g-border);border-radius:10px;background:var(--g-subtle)}\n.g-body > a.gd-file::after,.g-body p > a.gd-file::after,.g-body .gd-pdf:not([data-g-ready]) > a.gd-file::after{content:\"↗\"}\n.g-pdf-viewport{position:relative}\n.g-body .gd-pdf-pages{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;padding:0 10px 10px;scroll-padding:0 10px}\n.g-body .gd-pdf-pages::-webkit-scrollbar{display:none}\n.g-body .gd-pdf-pages:focus-visible{outline:2px solid var(--g-primary);outline-offset:-2px}\n.g-body .gd-pdf-pages img{flex:0 0 100%;width:100%;height:auto;margin:0;scroll-snap-align:center;background:#fff;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.18);cursor:zoom-in}\n.g-pdf-viewport .gd-pdf-pages{padding:0;scroll-padding:0;margin:0 10px 10px}\n.g-pdf-count{position:absolute;right:18px;bottom:18px;padding:2px 8px;border-radius:999px;background:rgba(17,17,17,.72);color:#fff;font-size:11px;font-weight:500;pointer-events:none;font-variant-numeric:tabular-nums}\n.g-pdf-nav{position:absolute;top:calc(50% - 21px);width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:999px;background:rgba(17,17,17,.6);color:#fff;font:inherit;font-size:20px;line-height:1;cursor:pointer;opacity:0;transition:opacity .15s}\n.g-pdf-prev{left:16px}.g-pdf-next{right:16px}\n.g-pdf-viewport:hover .g-pdf-nav,.g-pdf-nav:focus-visible{opacity:1}\n.g-pdf-nav:disabled,.g-pdf-single .g-pdf-nav,.g-pdf-single .g-pdf-count{display:none}\n.g-pdf-nav:focus-visible{outline:2px solid #fff;outline-offset:1px}\n@media (hover:none){.g-pdf-nav{display:none}}\n.g-pdf-reader{position:fixed;inset:0;z-index:calc(var(--g-z) + 10);display:flex;flex-direction:column;background:#0b0b0d;pointer-events:auto;color:#fff}\n.g-pdf-bar{display:flex;align-items:center;gap:10px;padding:8px 8px 8px 16px;min-height:56px}\n.g-pdf-title{flex:1;min-width:0;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.g-pdf-bar .g-btn{min-height:36px;color:#fff;background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.18)}\n.g-pdf-close{position:static;color:#fff}\n.g-pdf-close:hover,.g-pdf-close:focus-visible{background:rgba(255,255,255,.14);color:#fff}\n.g-pdf-scroll{position:relative;flex:1;overflow-y:auto;overscroll-behavior:contain;padding:4px 16px 24px;display:flex;flex-direction:column;align-items:center;gap:12px;outline:none}\n.g-pdf-scroll img{display:block;width:100%;max-width:900px;height:auto;background:#fff;border-radius:2px;box-shadow:0 2px 12px rgba(0,0,0,.4)}\n.g-body code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;background:var(--g-subtle);padding:1px 4px;border-radius:4px}\n.g-body pre{background:var(--g-subtle);padding:10px;border-radius:6px;overflow:auto}\n.g-body blockquote{margin:6px 0;padding-left:10px;border-left:3px solid var(--g-border);color:var(--g-muted)}\n.g-footer{display:flex;align-items:center;gap:8px;margin-top:14px;flex-wrap:wrap}\n.g-progress{font-size:12px;color:var(--g-muted);margin-right:auto}\n.g-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:8px 14px;border-radius:calc(var(--g-radius) * .66);border:1px solid transparent;font:inherit;font-size:14px;font-weight:500;cursor:pointer;text-decoration:none;transition:background .15s,color .15s,border-color .15s}\n.g-btn-primary{background:var(--g-primary);color:var(--g-primary-text)}\n.g-btn-primary:hover{filter:brightness(1.08)}\n.g-btn-secondary{background:var(--g-subtle);color:var(--g-text);border-color:var(--g-border)}\n.g-btn-secondary:hover{background:color-mix(in srgb,var(--g-text) 10%,transparent)}\n.g-btn-ghost{background:transparent;color:var(--g-muted)}\n.g-btn-ghost:hover{background:var(--g-subtle);color:var(--g-text)}\n.g-btn-link{background:transparent;color:var(--g-primary);padding-left:4px;padding-right:4px}\n.g-btn-link:hover{text-decoration:underline}\n.g-btn:disabled{opacity:.5;cursor:not-allowed}\n.g-arrow{position:absolute;width:12px;height:12px;background:var(--g-bg);transform:rotate(45deg);border:1px solid var(--g-border);z-index:-1}\n.g-hotspot{position:fixed;z-index:calc(var(--g-z) + 1);pointer-events:auto;border-radius:999px;background:var(--g-primary);border:2px solid #fff;box-shadow:0 0 0 2px color-mix(in srgb,var(--g-primary) 40%,transparent);cursor:pointer;padding:0;margin:0}\n.g-hotspot::after{content:\"\";position:absolute;inset:-4px;border-radius:999px;border:2px solid var(--g-primary);opacity:0}\n.g-hotspot.g-pulse::after{animation:g-pulse 1.8s ease-out infinite}\n.g-hotspot-hit{position:absolute;inset:-14px}\n.g-custom{position:fixed;z-index:calc(var(--g-z) + 4);pointer-events:auto;left:50%;top:50%;transform:translate(-50%,-50%);max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);overflow:auto}\n/* animations */\n.g-scope[data-anim=\"fade\"] .g-card,.g-scope[data-anim=\"fade\"] .g-banner,.g-scope[data-anim=\"fade\"] .g-panel{animation:g-fade .18s ease-out}\n.g-scope[data-anim=\"slide\"] .g-card,.g-scope[data-anim=\"slide\"] .g-panel{animation:g-slide .22s ease-out}\n.g-scope[data-anim=\"none\"] *{animation:none!important;transition:none!important}\n@keyframes g-fade{from{opacity:0}to{opacity:1}}\n@keyframes g-slide{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}\n@keyframes g-pulse{0%{transform:scale(.6);opacity:.9}100%{transform:scale(2.2);opacity:0}}\n@media (prefers-reduced-motion:reduce){.g-scope *{animation:none!important;transition:none!important}}\n/* launcher + panel (checklist / resource center) */\n.g-launcher{position:fixed;z-index:calc(var(--g-z) + 1);pointer-events:auto;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:10px 16px;border-radius:999px;border:0;background:var(--g-primary);color:var(--g-primary-text);font:inherit;font-size:14px;font-weight:600;cursor:pointer;box-shadow:var(--g-shadow);margin:16px}\n.g-launcher .g-ring{width:22px;height:22px;border-radius:999px;background:conic-gradient(#fff var(--g-pct,0%),rgba(255,255,255,.3) 0);display:inline-flex;align-items:center;justify-content:center;font-size:10px;position:relative}\n.g-launcher .g-ring::after{content:\"\";position:absolute;inset:3px;border-radius:999px;background:var(--g-primary)}\n.g-launcher .g-count{position:relative;z-index:1}\n.g-panel{position:fixed;z-index:calc(var(--g-z) + 2);pointer-events:auto;width:min(380px,calc(100vw - 32px));max-height:min(620px,calc(100vh - 100px));display:flex;flex-direction:column;background:var(--g-bg);color:var(--g-text);border-radius:var(--g-radius);box-shadow:var(--g-shadow);border:1px solid var(--g-border);margin:16px;bottom:60px;overflow:hidden}\n.g-panel-head{padding:16px 48px 12px 20px;border-bottom:1px solid var(--g-border);position:relative}\n.g-panel-title{margin:0;font-size:16px;font-weight:600}\n.g-panel-sub{margin:4px 0 0;font-size:12px;color:var(--g-muted)}\n.g-panel-body{overflow:auto;padding:8px 0;flex:1}\n.g-help{display:flex;flex-direction:column;min-height:0;flex:1}\n.g-bar{height:6px;border-radius:999px;background:var(--g-subtle);overflow:hidden;margin-top:10px}\n.g-bar > span{display:block;height:100%;background:var(--g-primary);transition:width .3s}\n.g-task{display:flex;gap:12px;align-items:flex-start;width:100%;padding:12px 20px;border:0;background:transparent;text-align:left;font:inherit;color:inherit;cursor:pointer;min-height:44px}\n.g-task:hover{background:var(--g-subtle)}\n.g-task[disabled]{cursor:not-allowed;opacity:.55}\n.g-task .g-check{flex:none;width:22px;height:22px;border-radius:999px;border:2px solid var(--g-border);display:inline-flex;align-items:center;justify-content:center;font-size:13px;margin-top:1px;color:#fff}\n.g-task.g-done .g-check{background:var(--g-primary);border-color:var(--g-primary)}\n.g-task.g-done .g-task-title{text-decoration:line-through;color:var(--g-muted)}\n.g-task-title{font-weight:500}\n.g-task-desc{font-size:12px;color:var(--g-muted);margin-top:2px}\n.g-panel-foot{padding:10px 20px;border-top:1px solid var(--g-border);display:flex;justify-content:flex-end;gap:8px}\n.g-complete{padding:28px 20px;text-align:center}\n.g-complete .g-title{margin-right:0;font-size:18px}\n/* survey */\n.g-question{margin-bottom:16px}\n.g-q-title{font-weight:600;margin:0 0 4px}\n.g-q-desc{font-size:12px;color:var(--g-muted);margin:0 0 8px}\n.g-scale{display:flex;gap:4px;flex-wrap:wrap}\n.g-scale button{min-width:34px;height:40px;flex:1;padding:0 4px;border-radius:6px;border:1px solid var(--g-border);background:var(--g-subtle);color:var(--g-text);font:inherit;cursor:pointer}\n.g-scale button[aria-pressed=\"true\"],.g-scale button:hover{background:var(--g-primary);color:var(--g-primary-text);border-color:var(--g-primary)}\n.g-scale-labels{display:flex;justify-content:space-between;font-size:11px;color:var(--g-muted);margin-top:4px}\n.g-stars button,.g-thumbs button{font-size:22px;background:transparent;border:0;cursor:pointer;color:var(--g-muted);min-width:40px;height:40px;font:inherit}\n.g-stars button[aria-pressed=\"true\"],.g-stars button.g-on{color:#f59e0b}\n.g-thumbs button[aria-pressed=\"true\"]{color:var(--g-primary)}\n.g-choice{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--g-border);border-radius:8px;margin-bottom:6px;cursor:pointer;min-height:40px;font:inherit;background:transparent;color:inherit;width:100%;text-align:left}\n.g-choice[aria-checked=\"true\"]{border-color:var(--g-primary);background:color-mix(in srgb,var(--g-primary) 8%,transparent)}\n.g-choice .g-dot{width:16px;height:16px;border-radius:999px;border:2px solid var(--g-border);flex:none}\n.g-choice.g-multi .g-dot{border-radius:4px}\n.g-choice[aria-checked=\"true\"] .g-dot{background:var(--g-primary);border-color:var(--g-primary)}\n.g-input{width:100%;min-height:40px;padding:8px 10px;border:1px solid var(--g-border);border-radius:8px;background:var(--g-bg);color:var(--g-text);font:inherit;resize:vertical}\n.g-error{color:#dc2626;font-size:12px;margin-top:4px}\n/* resource center */\n.g-rc-search{padding:12px 20px 4px}\n.g-rc-section{padding:8px 20px 4px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--g-muted);font-weight:600}\n.g-rc-section[data-depth]{text-transform:none;letter-spacing:0;font-size:12px}\n.g-rc-item{display:flex;align-items:flex-start;gap:10px;width:100%;padding:10px 20px;border:0;background:transparent;font:inherit;color:inherit;text-align:left;cursor:pointer;min-height:44px;text-decoration:none}\n.g-rc-item:hover{background:var(--g-subtle)}\n.g-rc-item .g-rc-title{font-weight:500}\n.g-rc-item .g-rc-sum{font-size:12px;color:var(--g-muted);margin-top:2px}\n.g-rc-item .g-rc-icon{flex:none;width:20px;text-align:center;color:var(--g-primary)}\n.g-rc-row{display:flex;align-items:center;gap:6px;padding-right:16px}\n.g-rc-row>.g-rc-item{flex:1;min-width:0;padding-right:4px}\n.g-rc-row:hover{background:var(--g-subtle)}\n.g-rc-row:hover>.g-rc-item{background:transparent}\n.g-rc-showme{flex:none;min-height:32px;padding:4px 10px;font-size:12px;white-space:nowrap}\n.g-help-showme{margin:4px 0 12px}\n.g-rc-article{padding:16px 20px}\n.g-resource-center .g-panel{transition:width .2s ease,max-height .2s ease}\n.g-resource-center .g-panel.g-panel-reading{width:min(720px,calc(100vw - 32px));max-height:calc(100vh - 100px)}\n.g-rc-back{margin-bottom:8px}\n.g-rc-empty{padding:24px 20px;color:var(--g-muted);text-align:center}\n.g-faq-a{padding:0 20px 12px 50px;font-size:13px;color:var(--g-muted)}\n.g-faq-a[hidden]{display:none}\n/* authoring */\n.g-auth-bar{position:fixed;top:0;left:0;right:0;z-index:calc(var(--g-z) + 10);pointer-events:auto;display:flex;align-items:center;gap:12px;padding:8px 16px;background:#111827;color:#fff;font:500 13px/1.4 var(--g-font);box-shadow:0 2px 10px rgba(0,0,0,.3)}\n.g-auth-bar .g-dot-live{width:8px;height:8px;border-radius:999px;background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.3)}\n.g-auth-bar .g-spacer{flex:1}\n.g-auth-bar .g-btn{min-height:32px;padding:4px 12px;font-size:13px}\n.g-auth-bar .g-btn-secondary{background:rgba(255,255,255,.12);color:#fff;border-color:transparent}\n.g-auth-outline{position:fixed;z-index:calc(var(--g-z) + 9);pointer-events:none;border:2px solid var(--g-primary);background:color-mix(in srgb,var(--g-primary) 12%,transparent);border-radius:4px;transition:all .06s linear}\n.g-auth-label{position:absolute;left:-2px;top:-24px;background:var(--g-primary);color:#fff;font:600 11px/1 var(--g-font);padding:5px 7px;border-radius:4px;white-space:nowrap;max-width:320px;overflow:hidden;text-overflow:ellipsis}\n.g-auth-outline.g-picked{border-style:dashed;border-color:#22c55e;background:rgba(34,197,94,.12)}\n.g-auth-outline.g-picked .g-auth-label{background:#16a34a}\n.g-highlight{position:fixed;z-index:calc(var(--g-z) + 8);pointer-events:none;border:2px dashed #f59e0b;background:rgba(245,158,11,.12);border-radius:4px}\n@media (max-width:480px){.g-card.g-modal,.g-panel{width:calc(100vw - 32px)}.g-inner{padding:16px}}\n/* resource center: unread badge + \"What's new\" */\n.g-launcher-badge{position:absolute;top:-4px;right:-4px;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#dc2626;color:#fff;font-size:11px;font-weight:700;line-height:20px;text-align:center;box-shadow:0 0 0 2px var(--g-bg)}\n.g-rc-news{padding:10px 20px 12px;border-bottom:1px solid var(--g-border)}\n.g-rc-news:last-of-type{border-bottom:0}\n.g-rc-news-head{display:flex;align-items:baseline;gap:8px}\n.g-rc-news-title{margin:0;font-size:14px;font-weight:600;line-height:1.35;flex:1}\n.g-rc-news-new{flex:none;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--g-primary-text);background:var(--g-primary);border-radius:999px;padding:2px 7px}\n.g-rc-news-date{display:block;font-size:12px;color:var(--g-muted);margin:2px 0 6px}\n.g-rc-news-body{font-size:13px}\n.g-rc-news-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}\n.g-rc-news-actions .g-btn{min-height:32px;padding:6px 12px;font-size:13px}\n/* accessibility */\n.g-sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\n.g-hotspot:focus-visible,.g-custom:focus-visible,.g-card:focus-visible{outline:2px solid var(--g-primary);outline-offset:2px}\n@media (forced-colors:active){.g-card,.g-panel,.g-banner{border:1px solid CanvasText}.g-btn{border:1px solid ButtonText}}\n`;\n","import type { Appearance, ProjectTheme } from \"@guidelytech/shared\";\nimport { readableTextOn, scopeCustomCss } from \"@guidelytech/shared/runtime\";\nimport { STYLES } from \"./styles\";\n\nexport const HOST_ID = \"guidely-root\";\n\nexport interface HostHandle {\n host: HTMLElement;\n shadow: ShadowRoot;\n /** Polite live region for screen-reader announcements. */\n live: HTMLElement;\n announce(text: string): void;\n destroy(): void;\n}\n\nlet current: HostHandle | null = null;\n\n/** Default project theme used when the config has not loaded yet. */\nexport const DEFAULT_THEME: ProjectTheme = {\n primaryColor: \"#4f46e5\",\n backgroundColor: \"#ffffff\",\n textColor: \"#111827\",\n borderRadius: 12,\n fontFamily: \"Inter, system-ui, -apple-system, sans-serif\",\n};\n\n/** Returns (creating when needed) the single Shadow-DOM host appended to `document.body`. */\nexport function ensureHost(doc: Document = document): HostHandle {\n if (current && current.host.isConnected && current.host.ownerDocument === doc) return current;\n let host = doc.getElementById(HOST_ID) as HTMLElement | null;\n if (!host) {\n host = doc.createElement(\"div\");\n host.id = HOST_ID;\n host.setAttribute(\"data-guidely\", \"\");\n (doc.body || doc.documentElement).appendChild(host);\n }\n const shadow = host.shadowRoot ?? host.attachShadow({ mode: \"open\" });\n if (!shadow.querySelector(\"style[data-g-base]\")) {\n const style = doc.createElement(\"style\");\n style.setAttribute(\"data-g-base\", \"\");\n style.textContent = STYLES;\n shadow.appendChild(style);\n }\n let live = shadow.querySelector<HTMLElement>(\".g-live\");\n if (!live) {\n live = doc.createElement(\"div\");\n live.className = \"g-live\";\n live.setAttribute(\"aria-live\", \"polite\");\n live.setAttribute(\"aria-atomic\", \"true\");\n shadow.appendChild(live);\n }\n const liveEl = live;\n current = {\n host,\n shadow,\n live: liveEl,\n announce(text: string) {\n liveEl.textContent = \"\";\n setTimeout(() => {\n liveEl.textContent = text;\n }, 30);\n },\n destroy() {\n host?.remove();\n if (current?.host === host) current = null;\n },\n };\n return current;\n}\n\n/** Removes the host from the document (all overlays with it). */\nexport function destroyHost(): void {\n current?.destroy();\n const stray = typeof document !== \"undefined\" ? document.getElementById(HOST_ID) : null;\n stray?.remove();\n current = null;\n}\n\nexport type ResolvedThemeMode = \"light\" | \"dark\";\n\nfunction prefersDark(): boolean {\n try {\n return typeof window !== \"undefined\" && typeof window.matchMedia === \"function\" && window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n } catch {\n return false;\n }\n}\n\nexport function prefersReducedMotion(): boolean {\n try {\n return typeof window !== \"undefined\" && typeof window.matchMedia === \"function\" && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n } catch {\n return false;\n }\n}\n\nexport interface ThemeVars {\n primary: string;\n bg: string;\n text: string;\n radius: number;\n font: string;\n z: number;\n overlay: number;\n mode: ResolvedThemeMode;\n animation: Appearance[\"animation\"];\n}\n\n/** Merges project theme + guide appearance into CSS custom property values. */\nexport function resolveTheme(theme: Partial<ProjectTheme> | null | undefined, appearance?: Partial<Appearance> | null): ThemeVars {\n const t = { ...DEFAULT_THEME, ...(theme || {}) };\n const a = appearance || {};\n const requested = a.theme ?? \"auto\";\n const mode: ResolvedThemeMode = requested === \"auto\" ? (prefersDark() ? \"dark\" : \"light\") : requested;\n const dark = mode === \"dark\";\n return {\n primary: a.primaryColor || t.primaryColor,\n bg: a.backgroundColor || (dark ? \"#1f2937\" : t.backgroundColor),\n text: a.textColor || (dark ? \"#f9fafb\" : t.textColor),\n radius: a.borderRadius ?? t.borderRadius,\n font: a.fontFamily || t.fontFamily,\n z: a.zIndex ?? 2147483000,\n overlay: a.overlayOpacity ?? 0.5,\n mode,\n animation: prefersReducedMotion() ? \"none\" : (a.animation ?? \"fade\"),\n };\n}\n\n/** Applies theme variables to a scope element. */\nexport function applyTheme(el: HTMLElement, vars: ThemeVars): void {\n el.style.setProperty(\"--g-primary\", vars.primary);\n // Button labels, banners and badges on the primary colour use whichever of white or dark text reads better (WCAG AA).\n if (/^#[0-9a-f]{3}([0-9a-f]{3})?$/i.test(vars.primary)) el.style.setProperty(\"--g-primary-text\", readableTextOn(vars.primary));\n el.style.setProperty(\"--g-bg\", vars.bg);\n el.style.setProperty(\"--g-text\", vars.text);\n el.style.setProperty(\"--g-radius\", `${vars.radius}px`);\n el.style.setProperty(\"--g-font\", vars.font);\n el.style.setProperty(\"--g-z\", String(vars.z));\n el.style.setProperty(\"--g-overlay\", String(vars.overlay));\n el.setAttribute(\"data-theme\", vars.mode);\n el.setAttribute(\"data-anim\", vars.animation);\n}\n\n/**\n * Creates a themed scope container inside the shadow root. Each guide/widget renders inside its\n * own scope so appearance settings never leak between guides.\n */\nexport function createScope(theme?: Partial<ProjectTheme> | null, appearance?: Partial<Appearance> | null, doc: Document = document): { el: HTMLElement; vars: ThemeVars; destroy(): void } {\n const handle = ensureHost(doc);\n const el = doc.createElement(\"div\");\n el.className = \"g-scope\";\n const vars = resolveTheme(theme, appearance);\n applyTheme(el, vars);\n handle.shadow.appendChild(el);\n // Custom CSS (theme first, then the guide's) is sanitized and prefixed with this scope only. The\n // theme's CSS styles guides (scopes created with an appearance), not the resource center or messenger.\n const css = [appearance ? theme?.customCss : undefined, appearance?.customCss].filter((c): c is string => !!c && !!c.trim());\n let style: HTMLStyleElement | null = null;\n if (css.length) {\n const id = `c${++cssScopeSeq}`;\n el.setAttribute(\"data-g-css\", id);\n style = doc.createElement(\"style\");\n style.setAttribute(\"data-g-custom\", id);\n style.textContent = css.map((c) => scopeCustomCss(c, `.g-scope[data-g-css=\"${id}\"]`)).join(\"\\n\");\n handle.shadow.insertBefore(style, el);\n }\n let mq: MediaQueryList | null = null;\n const onChange = () => applyTheme(el, resolveTheme(theme, appearance));\n if ((appearance?.theme ?? \"auto\") === \"auto\" && typeof window !== \"undefined\" && typeof window.matchMedia === \"function\") {\n try {\n mq = window.matchMedia(\"(prefers-color-scheme: dark)\");\n mq.addEventListener?.(\"change\", onChange);\n } catch {\n mq = null;\n }\n }\n return {\n el,\n vars,\n destroy() {\n mq?.removeEventListener?.(\"change\", onChange);\n style?.remove();\n el.remove();\n },\n };\n}\n\nlet cssScopeSeq = 0;\n"],"mappings":"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","names":[]}
|