@floegence/floe-webapp-core 0.86.75 → 0.86.76

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.
@@ -1,9 +1,10 @@
1
- import { insert as d, memo as V, createComponent as y, mergeProps as H, effect as N, setAttribute as D, className as J, template as S, use as G, setStyleProperty as U, delegateEvents as K } from "solid-js/web";
2
- import { createSignal as m, onCleanup as Z, Show as O, createMemo as Q, createEffect as j, onMount as X, on as Y } from "solid-js";
3
- import { Dialog as p } from "../components/ui/Dialog.js";
4
- import { renderDiagram as ee, sanitizeDiagramSvg as te } from "./render.js";
5
- var ne = /* @__PURE__ */ S("<div class=floe-diagram-viewport data-floe-workbench-text-selection-surface=true><div class=floe-diagram-svg>"), oe = /* @__PURE__ */ S("<div class=floe-diagram-status role=status>"), re = /* @__PURE__ */ S("<div class=floe-diagram-error role=alert><strong></strong><pre></pre><pre><code>"), ie = /* @__PURE__ */ S("<button type=button>"), ae = /* @__PURE__ */ S("<pre class=floe-diagram-source data-floe-workbench-text-selection-surface=true><code>"), le = /* @__PURE__ */ S("<div class=floe-diagram><div class=floe-diagram-toolbar><button type=button>−</button><button type=button></button><button type=button>+"), se = /* @__PURE__ */ S("<section><div class=floe-diagram-toolbar><button type=button></button><button type=button></button><span class=floe-diagram-feedback role=status></span><button type=button>⤢</button></div><div>");
6
- const me = {
1
+ import { insert as c, createComponent as v, memo as V, mergeProps as H, effect as N, setAttribute as D, className as K, template as S, use as J, setStyleProperty as U, delegateEvents as Q } from "solid-js/web";
2
+ import { createSignal as m, onCleanup as Z, Show as O, createMemo as X, createEffect as j, onMount as Y, on as p } from "solid-js";
3
+ import { Dialog as ee } from "../components/ui/Dialog.js";
4
+ import { StableText as B } from "../components/ui/StableText.js";
5
+ import { renderDiagram as te, sanitizeDiagramSvg as ne } from "./render.js";
6
+ var oe = /* @__PURE__ */ S("<div class=floe-diagram-status role=status>"), re = /* @__PURE__ */ S("<div class=floe-diagram-error role=alert><strong></strong><pre></pre><pre><code>"), ie = /* @__PURE__ */ S("<div class=floe-diagram-viewport data-floe-workbench-text-selection-surface=true><div class=floe-diagram-svg>"), ae = /* @__PURE__ */ S("<button type=button>"), le = /* @__PURE__ */ S("<pre class=floe-diagram-source data-floe-workbench-text-selection-surface=true><code>"), se = /* @__PURE__ */ S("<div class=floe-diagram><div class=floe-diagram-toolbar><button type=button>−</button><button type=button></button><button type=button>+"), ce = /* @__PURE__ */ S("<section><div class=floe-diagram-toolbar><button type=button></button><button type=button></button><span class=floe-diagram-feedback role=status></span><button type=button>⤢</button></div><div>");
7
+ const ve = {
7
8
  diagram: "Diagram",
8
9
  loading: "Rendering diagram…",
9
10
  unavailable: "Diagram unavailable",
@@ -18,159 +19,167 @@ const me = {
18
19
  zoomIn: "Zoom in",
19
20
  zoomOut: "Zoom out",
20
21
  fit: "Fit"
21
- }, B = (e) => {
22
+ }, G = (e) => {
22
23
  let s;
23
- const [A, R] = m(!1), [T, I] = m(0), [v, P] = m(0), [x, $] = m("loading"), [W, w] = m(""), L = Q(() => e.source);
24
- j(() => e.onStatus?.(x())), X(() => {
25
- const o = new ResizeObserver((n) => {
26
- const l = Math.round(n[0]?.contentRect.width ?? s.clientWidth);
27
- l > 0 && I(l);
24
+ const [A, R] = m(!1), [T, I] = m(0), [b, P] = m(0), [x, $] = m("loading"), [W, w] = m(""), L = X(() => e.source);
25
+ j(() => e.onStatus?.(x())), Y(() => {
26
+ const l = new ResizeObserver((o) => {
27
+ const a = Math.round(o[0]?.contentRect.width ?? s.clientWidth);
28
+ a > 0 && I(a);
28
29
  });
29
- o.observe(s);
30
- const r = new IntersectionObserver((n) => {
31
- n.some((l) => l.isIntersecting) && (R(!0), r.disconnect());
30
+ l.observe(s);
31
+ const i = new IntersectionObserver((o) => {
32
+ o.some((a) => a.isIntersecting) && (R(!0), i.disconnect());
32
33
  }, {
33
34
  rootMargin: "200px"
34
35
  });
35
- r.observe(s);
36
- const c = s.ownerDocument.fonts, i = () => P((n) => n + 1);
37
- c?.addEventListener("loadingdone", i), Z(() => {
38
- o.disconnect(), r.disconnect(), c?.removeEventListener("loadingdone", i);
36
+ i.observe(s);
37
+ const g = s.ownerDocument.fonts, t = () => P((o) => o + 1);
38
+ g?.addEventListener("loadingdone", t), Z(() => {
39
+ l.disconnect(), i.disconnect(), g?.removeEventListener("loadingdone", t);
39
40
  });
40
- }), j(Y([L, T, A, v, () => e.revision], ([o, r, c]) => {
41
- if (!c || !r) return;
42
- const i = new AbortController(), n = s.ownerDocument, l = getComputedStyle(s);
41
+ }), j(p([L, T, A, b, () => e.revision], ([l, i, g]) => {
42
+ if (!g || !i) return;
43
+ const t = new AbortController(), o = s.ownerDocument, a = getComputedStyle(s);
43
44
  $("loading"), w("");
44
- const g = (u) => {
45
- if (i.signal.aborted || !s.isConnected) return;
46
- const b = n.getSelection();
47
- for (let C = 0; b && C < b.rangeCount; C++)
48
- if (b.getRangeAt(C).intersectsNode(s)) {
49
- const t = () => {
50
- n.removeEventListener("selectionchange", t), g(u);
45
+ const u = (d) => {
46
+ if (t.signal.aborted || !s.isConnected) return;
47
+ const h = o.getSelection();
48
+ for (let C = 0; h && C < h.rangeCount; C++)
49
+ if (h.getRangeAt(C).intersectsNode(s)) {
50
+ const n = () => {
51
+ o.removeEventListener("selectionchange", n), u(d);
51
52
  };
52
- n.addEventListener("selectionchange", t, {
53
+ o.addEventListener("selectionchange", n, {
53
54
  once: !0,
54
- signal: i.signal
55
+ signal: t.signal
55
56
  });
56
57
  return;
57
58
  }
58
- const f = n.createElement("template");
59
- f.innerHTML = te(u.svg, n);
59
+ const f = o.createElement("template");
60
+ f.innerHTML = ne(d.svg, o);
60
61
  const M = f.content.querySelector("svg");
61
62
  M && e.expanded && (M.style.maxWidth = "none"), s.replaceChildren(f.content), $("ready");
62
63
  };
63
- (e.render ?? ee)(o, {
64
- signal: i.signal,
65
- maxWidth: r,
66
- document: n,
67
- fontFamily: l.fontFamily,
68
- fontFamilyMono: l.getPropertyValue("--font-mono").trim() || "monospace",
69
- fontSize: parseFloat(l.fontSize) || 16,
64
+ (e.render ?? te)(l, {
65
+ signal: t.signal,
66
+ maxWidth: i,
67
+ document: o,
68
+ fontFamily: a.fontFamily,
69
+ fontFamilyMono: a.getPropertyValue("--font-mono").trim() || "monospace",
70
+ fontSize: parseFloat(a.fontSize) || 16,
70
71
  links: !!e.onOpenLink
71
- }).then(g).catch((u) => {
72
- i.signal.aborted || (s.replaceChildren(), w(u instanceof Error ? u.message : String(u)), $("error"));
73
- }), Z(() => i.abort());
72
+ }).then(u).catch((d) => {
73
+ t.signal.aborted || (s.replaceChildren(), w(d instanceof Error ? d.message : String(d)), $("error"));
74
+ }), Z(() => t.abort());
74
75
  }));
75
- const z = (o) => {
76
- const r = o.target instanceof Element ? o.target.closest("a") : null;
77
- if (!r) return;
78
- o.preventDefault();
79
- const c = r.getAttribute("href");
80
- !c || !/^(?:https?:\/\/|mailto:)/i.test(c) || !e.onOpenLink || Promise.resolve(e.onOpenLink(c)).catch(() => {
76
+ const z = (l) => {
77
+ const i = l.target instanceof Element ? l.target.closest("a") : null;
78
+ if (!i) return;
79
+ l.preventDefault();
80
+ const g = i.getAttribute("href");
81
+ !g || !/^(?:https?:\/\/|mailto:)/i.test(g) || !e.onOpenLink || Promise.resolve(e.onOpenLink(g)).catch(() => {
81
82
  w(e.labels.unavailable), $("error");
82
83
  });
83
84
  };
84
- return [(() => {
85
- var o = ne(), r = o.firstChild;
86
- r.$$click = z;
87
- var c = s;
88
- return typeof c == "function" ? G(c, r) : s = r, N((i) => {
89
- var n = e.expanded ? "true" : void 0, l = e.expanded ? "auto" : "hidden", g = !!e.expanded, u = x() === "loading", b = e.scale ?? 1;
90
- return n !== i.e && D(o, "data-floe-local-interaction-surface", i.e = n), l !== i.t && U(o, "overflow", i.t = l), g !== i.a && r.classList.toggle("floe-diagram-zoomed", i.a = g), u !== i.o && D(r, "aria-busy", i.o = u), b !== i.i && U(r, "--floe-diagram-scale", i.i = b), i;
85
+ return (() => {
86
+ var l = ie(), i = l.firstChild;
87
+ i.$$click = z;
88
+ var g = s;
89
+ return typeof g == "function" ? J(g, i) : s = i, c(l, v(O, {
90
+ get when() {
91
+ return x() === "loading";
92
+ },
93
+ get children() {
94
+ var t = oe();
95
+ return c(t, () => e.labels.loading), t;
96
+ }
97
+ }), null), c(l, v(O, {
98
+ get when() {
99
+ return x() === "error";
100
+ },
101
+ get children() {
102
+ var t = re(), o = t.firstChild, a = o.nextSibling, u = a.nextSibling, d = u.firstChild;
103
+ return c(o, () => e.labels.unavailable), c(a, W), c(d, () => e.source), t;
104
+ }
105
+ }), null), N((t) => {
106
+ var o = e.expanded ? "true" : void 0, a = e.expanded ? "auto" : "hidden", u = !!e.expanded, d = x() === "loading", h = e.scale ?? 1;
107
+ return o !== t.e && D(l, "data-floe-local-interaction-surface", t.e = o), a !== t.t && U(l, "overflow", t.t = a), u !== t.a && i.classList.toggle("floe-diagram-zoomed", t.a = u), d !== t.o && D(i, "aria-busy", t.o = d), h !== t.i && U(i, "--floe-diagram-scale", t.i = h), t;
91
108
  }, {
92
109
  e: void 0,
93
110
  t: void 0,
94
111
  a: void 0,
95
112
  o: void 0,
96
113
  i: void 0
97
- }), o;
98
- })(), y(O, {
99
- get when() {
100
- return x() === "loading";
101
- },
102
- get children() {
103
- var o = oe();
104
- return d(o, () => e.labels.loading), o;
105
- }
106
- }), y(O, {
107
- get when() {
108
- return x() === "error";
109
- },
110
- get children() {
111
- var o = re(), r = o.firstChild, c = r.nextSibling, i = c.nextSibling, n = i.firstChild;
112
- return d(r, () => e.labels.unavailable), d(c, W), d(n, () => e.source), o;
113
- }
114
- })];
115
- }, fe = (e) => {
116
- const [s, A] = m(!1), [R, T] = m(!1), [I, v] = m(1), [P, x] = m(0), [$, W] = m("loading"), [w, L] = m("idle");
117
- let z, o = !1, r;
114
+ }), l;
115
+ })();
116
+ }, be = (e) => {
117
+ const [s, A] = m(!1), [R, T] = m(!1), [I, b] = m(1), [P, x] = m(0), [$, W] = m("loading"), [w, L] = m("idle");
118
+ let z, l = !1, i;
118
119
  Z(() => {
119
- o = !0, clearTimeout(z);
120
+ l = !0, clearTimeout(z);
120
121
  });
121
- const c = async () => {
122
+ const g = async () => {
122
123
  try {
123
- await (e.onCopy ? e.onCopy(e.source) : navigator.clipboard.writeText(e.source)), o || L("copied");
124
+ await (e.onCopy ? e.onCopy(e.source) : navigator.clipboard.writeText(e.source)), l || L("copied");
124
125
  } catch {
125
- o || L("error");
126
+ l || L("error");
126
127
  }
127
- o || (clearTimeout(z), z = setTimeout(() => L("idle"), 1600));
128
- }, i = (n) => {
129
- const l = typeof document < "u" ? document.activeElement : null, g = l instanceof Element && !!l.closest('[role="dialog"]');
130
- T(n), !n && g && r?.isConnected && r.focus({
128
+ l || (clearTimeout(z), z = setTimeout(() => L("idle"), 1600));
129
+ }, t = (o) => {
130
+ const a = typeof document < "u" ? document.activeElement : null, u = a instanceof Element && !!a.closest('[role="dialog"]');
131
+ T(o), !o && u && i?.isConnected && i.focus({
131
132
  preventScroll: !0
132
133
  });
133
134
  };
134
135
  return (() => {
135
- var n = se(), l = n.firstChild, g = l.firstChild, u = g.nextSibling, b = u.nextSibling, f = b.nextSibling, M = l.nextSibling;
136
- g.$$click = () => A((t) => !t), d(g, (() => {
137
- var t = V(() => !!s());
138
- return () => t() ? e.labels.preview : e.labels.source;
139
- })()), u.$$click = () => {
140
- c();
141
- }, d(u, () => e.labels.copy), d(b, (() => {
142
- var t = V(() => w() === "copied");
143
- return () => t() ? e.labels.copied : V(() => w() === "error")() ? e.labels.copyFailed : "";
144
- })()), d(l, y(O, {
136
+ var o = ce(), a = o.firstChild, u = a.firstChild, d = u.nextSibling, h = d.nextSibling, f = h.nextSibling, M = a.nextSibling;
137
+ u.$$click = () => A((n) => !n), c(u, v(B, {
138
+ get reserve() {
139
+ return [e.labels.source, e.labels.preview];
140
+ },
141
+ get children() {
142
+ return V(() => !!s())() ? e.labels.preview : e.labels.source;
143
+ }
144
+ })), d.$$click = () => {
145
+ g();
146
+ }, c(d, () => e.labels.copy), c(h, v(B, {
147
+ get reserve() {
148
+ return [e.labels.copied, e.labels.copyFailed];
149
+ },
150
+ get children() {
151
+ return V(() => w() === "copied")() ? e.labels.copied : V(() => w() === "error")() ? e.labels.copyFailed : "";
152
+ }
153
+ })), c(a, v(O, {
145
154
  get when() {
146
155
  return $() === "error";
147
156
  },
148
157
  get children() {
149
- var t = ie();
150
- return t.$$click = () => x((h) => h + 1), d(t, () => e.labels.retry), t;
158
+ var n = ae();
159
+ return n.$$click = () => x((y) => y + 1), c(n, () => e.labels.retry), n;
151
160
  }
152
161
  }), f), f.$$click = () => {
153
- v(1), T(!0);
162
+ b(1), T(!0);
154
163
  };
155
- var C = r;
156
- return typeof C == "function" ? G(C, f) : r = f, d(M, y(B, H(e, {
164
+ var C = i;
165
+ return typeof C == "function" ? J(C, f) : i = f, c(M, v(G, H(e, {
157
166
  get revision() {
158
167
  return P();
159
168
  },
160
169
  onStatus: W
161
- }))), d(n, y(O, {
170
+ }))), c(o, v(O, {
162
171
  get when() {
163
172
  return s();
164
173
  },
165
174
  get children() {
166
- var t = ae(), h = t.firstChild;
167
- return d(h, () => e.source), t;
175
+ var n = le(), y = n.firstChild;
176
+ return c(y, () => e.source), n;
168
177
  }
169
- }), null), d(n, y(p, {
178
+ }), null), c(o, v(ee, {
170
179
  get open() {
171
180
  return R();
172
181
  },
173
- onOpenChange: i,
182
+ onOpenChange: t,
174
183
  get title() {
175
184
  return e.labels.diagram;
176
185
  },
@@ -179,15 +188,15 @@ const me = {
179
188
  },
180
189
  class: "floe-diagram-dialog",
181
190
  get children() {
182
- var t = le(), h = t.firstChild, k = h.firstChild, _ = k.nextSibling, F = _.nextSibling;
183
- return t.$$keydown = (a) => {
184
- a.target instanceof Element && a.target.closest("button,input,textarea") || ((a.key === "+" || a.key === "=") && (a.preventDefault(), v((E) => Math.min(4, E + 0.25))), a.key === "-" && (a.preventDefault(), v((E) => Math.max(0.5, E - 0.25))), a.key === "0" && (a.preventDefault(), v(1)));
185
- }, k.$$click = () => v((a) => Math.max(0.5, a - 0.25)), _.$$click = () => v(1), d(_, () => e.labels.fit), F.$$click = () => v((a) => Math.min(4, a + 0.25)), d(t, y(O, {
191
+ var n = se(), y = n.firstChild, k = y.firstChild, _ = k.nextSibling, F = _.nextSibling;
192
+ return n.$$keydown = (r) => {
193
+ r.target instanceof Element && r.target.closest("button,input,textarea") || ((r.key === "+" || r.key === "=") && (r.preventDefault(), b((E) => Math.min(4, E + 0.25))), r.key === "-" && (r.preventDefault(), b((E) => Math.max(0.5, E - 0.25))), r.key === "0" && (r.preventDefault(), b(1)));
194
+ }, k.$$click = () => b((r) => Math.max(0.5, r - 0.25)), _.$$click = () => b(1), c(_, () => e.labels.fit), F.$$click = () => b((r) => Math.min(4, r + 0.25)), c(n, v(O, {
186
195
  get when() {
187
196
  return R();
188
197
  },
189
198
  get children() {
190
- return y(B, H(e, {
199
+ return v(G, H(e, {
191
200
  expanded: !0,
192
201
  get scale() {
193
202
  return I();
@@ -197,28 +206,28 @@ const me = {
197
206
  }
198
207
  }));
199
208
  }
200
- }), null), N((a) => {
209
+ }), null), N((r) => {
201
210
  var E = e.labels.zoomOut, q = e.labels.zoomIn;
202
- return E !== a.e && D(k, "aria-label", a.e = E), q !== a.t && D(F, "aria-label", a.t = q), a;
211
+ return E !== r.e && D(k, "aria-label", r.e = E), q !== r.t && D(F, "aria-label", r.t = q), r;
203
212
  }, {
204
213
  e: void 0,
205
214
  t: void 0
206
- }), t;
215
+ }), n;
207
216
  }
208
- }), null), N((t) => {
209
- var h = "floe-diagram " + (e.class ?? ""), k = s(), _ = $() !== "ready", F = e.labels.expand, a = s();
210
- return h !== t.e && J(n, t.e = h), k !== t.t && D(g, "aria-pressed", t.t = k), _ !== t.a && (f.disabled = t.a = _), F !== t.o && D(f, "aria-label", t.o = F), a !== t.i && (M.hidden = t.i = a), t;
217
+ }), null), N((n) => {
218
+ var y = "floe-diagram " + (e.class ?? ""), k = s(), _ = $() !== "ready", F = e.labels.expand, r = s();
219
+ return y !== n.e && K(o, n.e = y), k !== n.t && D(u, "aria-pressed", n.t = k), _ !== n.a && (f.disabled = n.a = _), F !== n.o && D(f, "aria-label", n.o = F), r !== n.i && (M.hidden = n.i = r), n;
211
220
  }, {
212
221
  e: void 0,
213
222
  t: void 0,
214
223
  a: void 0,
215
224
  o: void 0,
216
225
  i: void 0
217
- }), n;
226
+ }), o;
218
227
  })();
219
228
  };
220
- K(["click", "keydown"]);
229
+ Q(["click", "keydown"]);
221
230
  export {
222
- fe as Diagram,
223
- me as diagramLabelsEnUS
231
+ be as Diagram,
232
+ ve as diagramLabelsEnUS
224
233
  };
package/dist/diagrams.css CHANGED
@@ -14,11 +14,13 @@
14
14
  .floe-diagram-toolbar button:hover,.floe-diagram-toolbar button[aria-pressed=true] { background:var(--accent); }
15
15
  .floe-diagram-toolbar button:focus-visible { outline:2px solid var(--ring); outline-offset:-2px; }
16
16
  .floe-diagram-feedback { flex:1; min-width:0; font-size:.85em; }
17
- .floe-diagram-viewport { padding:.75rem; min-width:0; max-height:65vh; }
17
+ .floe-diagram-viewport { position:relative; box-sizing:border-box; padding:.75rem; min-width:0; height:clamp(12rem,36vw,24rem); max-height:65vh; }
18
18
  .floe-diagram-svg { min-height:2rem; width:100%; }
19
19
  .floe-diagram-svg > svg { display:block; max-width:100%; height:auto; margin:auto; }
20
+ .floe-diagram-source { box-sizing:border-box; height:clamp(12rem,36vw,24rem); max-height:65vh; overflow:auto; }
20
21
  .floe-diagram-source,.floe-diagram-error pre { white-space:pre-wrap; overflow-wrap:anywhere; margin:0; padding:.75rem; font:12px/1.6 var(--pele-font-mono); }
21
- .floe-diagram-status,.floe-diagram-error { padding:.75rem; }
22
+ .floe-diagram-status,.floe-diagram-error { position:absolute; inset:0; box-sizing:border-box; padding:.75rem; overflow:auto; background:var(--background); }
23
+ .floe-diagram-status { display:grid; place-items:center; }
22
24
  .floe-diagram-error { color:var(--error,var(--foreground)); }
23
25
  .floe-diagram-dialog { width:min(94vw,1100px); max-width:94vw; }
24
26
  @media (forced-colors:active) { .floe-diagram { --pele-fg:CanvasText; --pele-line:CanvasText; --pele-bg:Canvas; --pele-surface:Canvas; --pele-surface-alt:Canvas; --pele-border:CanvasText; --pele-accent:Highlight; } }
@@ -26,4 +28,4 @@
26
28
  .floe-diagram-zoomed > svg { width:calc(100% * var(--floe-diagram-scale,1)); max-width:none; }
27
29
  .floe-diagram-toolbar button:disabled { opacity:.5; cursor:default; }
28
30
 
29
- .floe-diagram-svg:not(.floe-diagram-zoomed) > svg { max-height:60vh; }
31
+ .floe-diagram-svg:not(.floe-diagram-zoomed) > svg { max-height:min(60vh,calc(clamp(12rem,36vw,24rem) - 1.5rem)); }
@@ -1 +1 @@
1
- .floe-diagram{--pele-bg: var(--background);--pele-fg: var(--foreground);--pele-muted: var(--muted-foreground);--pele-line: var(--muted-foreground);--pele-surface: var(--card);--pele-surface-alt: var(--muted);--pele-border: var(--border);--pele-accent: var(--primary);--pele-font: var(--font-sans, Inter, system-ui, sans-serif);--pele-font-mono: var(--font-mono, monospace);--pele-fg-on-light: #171717;--pele-fg-on-dark: #fafafa;min-width:0;background:var(--background);color:var(--foreground);font:14px/1.5 var(--pele-font);border:1px solid var(--border);border-radius:.5rem;overflow:hidden}.floe-diagram-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;padding:.375rem;border-bottom:1px solid var(--border)}.floe-diagram-toolbar button{font:inherit;white-space:nowrap;border:0;border-radius:.25rem;padding:.25rem .5rem;background:transparent;color:inherit;cursor:pointer}.floe-diagram-toolbar button:hover,.floe-diagram-toolbar button[aria-pressed=true]{background:var(--accent)}.floe-diagram-toolbar button:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}.floe-diagram-feedback{flex:1;min-width:0;font-size:.85em}.floe-diagram-viewport{padding:.75rem;min-width:0;max-height:65vh}.floe-diagram-svg{min-height:2rem;width:100%}.floe-diagram-svg>svg{display:block;max-width:100%;height:auto;margin:auto}.floe-diagram-source,.floe-diagram-error pre{white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:.75rem;font:12px/1.6 var(--pele-font-mono)}.floe-diagram-status,.floe-diagram-error{padding:.75rem}.floe-diagram-error{color:var(--error,var(--foreground))}.floe-diagram-dialog{width:min(94vw,1100px);max-width:94vw}@media(forced-colors:active){.floe-diagram{--pele-fg:CanvasText;--pele-line:CanvasText;--pele-bg:Canvas;--pele-surface:Canvas;--pele-surface-alt:Canvas;--pele-border:CanvasText;--pele-accent:Highlight}}.floe-diagram-zoomed>svg{width:calc(100% * var(--floe-diagram-scale,1));max-width:none}.floe-diagram-toolbar button:disabled{opacity:.5;cursor:default}.floe-diagram-svg:not(.floe-diagram-zoomed)>svg{max-height:60vh}
1
+ .floe-diagram{--pele-bg: var(--background);--pele-fg: var(--foreground);--pele-muted: var(--muted-foreground);--pele-line: var(--muted-foreground);--pele-surface: var(--card);--pele-surface-alt: var(--muted);--pele-border: var(--border);--pele-accent: var(--primary);--pele-font: var(--font-sans, Inter, system-ui, sans-serif);--pele-font-mono: var(--font-mono, monospace);--pele-fg-on-light: #171717;--pele-fg-on-dark: #fafafa;min-width:0;background:var(--background);color:var(--foreground);font:14px/1.5 var(--pele-font);border:1px solid var(--border);border-radius:.5rem;overflow:hidden}.floe-diagram-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;padding:.375rem;border-bottom:1px solid var(--border)}.floe-diagram-toolbar button{font:inherit;white-space:nowrap;border:0;border-radius:.25rem;padding:.25rem .5rem;background:transparent;color:inherit;cursor:pointer}.floe-diagram-toolbar button:hover,.floe-diagram-toolbar button[aria-pressed=true]{background:var(--accent)}.floe-diagram-toolbar button:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}.floe-diagram-feedback{flex:1;min-width:0;font-size:.85em}.floe-diagram-viewport{position:relative;box-sizing:border-box;padding:.75rem;min-width:0;height:clamp(12rem,36vw,24rem);max-height:65vh}.floe-diagram-svg{min-height:2rem;width:100%}.floe-diagram-svg>svg{display:block;max-width:100%;height:auto;margin:auto}.floe-diagram-source{box-sizing:border-box;height:clamp(12rem,36vw,24rem);max-height:65vh;overflow:auto}.floe-diagram-source,.floe-diagram-error pre{white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:.75rem;font:12px/1.6 var(--pele-font-mono)}.floe-diagram-status,.floe-diagram-error{position:absolute;inset:0;box-sizing:border-box;padding:.75rem;overflow:auto;background:var(--background)}.floe-diagram-status{display:grid;place-items:center}.floe-diagram-error{color:var(--error,var(--foreground))}.floe-diagram-dialog{width:min(94vw,1100px);max-width:94vw}@media(forced-colors:active){.floe-diagram{--pele-fg:CanvasText;--pele-line:CanvasText;--pele-bg:Canvas;--pele-surface:Canvas;--pele-surface-alt:Canvas;--pele-border:CanvasText;--pele-accent:Highlight}}.floe-diagram-zoomed>svg{width:calc(100% * var(--floe-diagram-scale,1));max-width:none}.floe-diagram-toolbar button:disabled{opacity:.5;cursor:default}.floe-diagram-svg:not(.floe-diagram-zoomed)>svg{max-height:min(60vh,calc(clamp(12rem,36vw,24rem) - 1.5rem))}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@floegence/floe-webapp-core",
3
- "version": "0.86.75",
3
+ "version": "0.86.76",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",