@hearthscale/app-ui 0.0.0-stage → 0.2.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/LICENSE +25 -0
- package/README.md +167 -2
- package/dist/CLASSES.md +574 -0
- package/dist/TOKENS.md +413 -0
- package/dist/chunks/chunk-E3RFTBRS.js +332 -0
- package/dist/editor.d.ts +32 -0
- package/dist/editor.js +69 -0
- package/dist/fonts/InterVariable.woff2 +0 -0
- package/dist/fonts/JetBrainsMono-Bold.woff2 +0 -0
- package/dist/fonts/JetBrainsMono-Medium.woff2 +0 -0
- package/dist/fonts/JetBrainsMono-Regular.woff2 +0 -0
- package/dist/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
- package/dist/fonts/OFL.txt +92 -0
- package/dist/index.d.ts +745 -0
- package/dist/index.js +1499 -0
- package/dist/markdown.d.ts +25 -0
- package/dist/markdown.js +365 -0
- package/dist/remixicon/License +201 -0
- package/dist/remixicon/remixicon.css +3229 -0
- package/dist/remixicon/remixicon.woff2 +0 -0
- package/dist/ui.css +12023 -0
- package/package.json +82 -3
package/dist/index.js
ADDED
|
@@ -0,0 +1,1499 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CheckGlyph,
|
|
3
|
+
ChevronDownGlyph,
|
|
4
|
+
ChevronLeftGlyph,
|
|
5
|
+
ChevronRightGlyph,
|
|
6
|
+
CloseGlyph,
|
|
7
|
+
DownloadGlyph,
|
|
8
|
+
ExternalGlyph,
|
|
9
|
+
HelpGlyph,
|
|
10
|
+
PackageGlyph,
|
|
11
|
+
SearchGlyph
|
|
12
|
+
} from "./chunks/chunk-E3RFTBRS.js";
|
|
13
|
+
|
|
14
|
+
// ../ui/dist/Button.js
|
|
15
|
+
import { Fragment as _Fragment, jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
16
|
+
function Button({ children, variant = "secondary", size: size3 = "sm", icon, trailingIcon, fullWidth = false, href, type = "button", className, onClick, ...rest }) {
|
|
17
|
+
const shared = {
|
|
18
|
+
"data-variant": variant,
|
|
19
|
+
"data-size": size3,
|
|
20
|
+
"data-full": fullWidth ? "true" : void 0,
|
|
21
|
+
className: className ? `hs-button ${className}` : "hs-button",
|
|
22
|
+
onClick
|
|
23
|
+
};
|
|
24
|
+
const content = _jsxs(_Fragment, { children: [icon, children, trailingIcon] });
|
|
25
|
+
if (href !== void 0) {
|
|
26
|
+
return _jsx("a", { ...rest, ...shared, href, children: content });
|
|
27
|
+
}
|
|
28
|
+
return _jsx("button", { ...rest, ...shared, type, children: content });
|
|
29
|
+
}
|
|
30
|
+
function IconButton({ children, size: size3 = "md", type = "button", className, ...rest }) {
|
|
31
|
+
return _jsx("button", { ...rest, type, "data-size": size3, className: className ? `hs-icon-button ${className}` : "hs-icon-button", children });
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// ../ui/dist/Card.js
|
|
35
|
+
import { jsx as _jsx2 } from "react/jsx-runtime";
|
|
36
|
+
function Card({ children, variant = "solid", tone, style }) {
|
|
37
|
+
return _jsx2("div", { "data-variant": variant, "data-tone": tone, className: "hs-card", style, children });
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// ../ui/dist/EmptyState.js
|
|
41
|
+
import { jsx as _jsx3, jsxs as _jsxs2 } from "react/jsx-runtime";
|
|
42
|
+
function EmptyState({ icon, title, children }) {
|
|
43
|
+
return _jsxs2("div", { className: "hs-empty-view", children: [icon, _jsx3("span", { className: "hs-empty-view-title", children: title }), children] });
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// ../ui/dist/Notice.js
|
|
47
|
+
import { jsx as _jsx4 } from "react/jsx-runtime";
|
|
48
|
+
function Notice({ children }) {
|
|
49
|
+
return _jsx4("div", { className: "hs-notice", children });
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// ../ui/dist/Chip.js
|
|
53
|
+
import { jsx as _jsx6, Fragment as _Fragment2, jsxs as _jsxs4 } from "react/jsx-runtime";
|
|
54
|
+
|
|
55
|
+
// ../ui/dist/ShellMenu.js
|
|
56
|
+
import { jsx as _jsx5, jsxs as _jsxs3 } from "react/jsx-runtime";
|
|
57
|
+
import { createContext as createContext2, useContext, useEffect as useEffect2, useId, useLayoutEffect, useRef as useRef2, useState } from "react";
|
|
58
|
+
import { createPortal } from "react-dom";
|
|
59
|
+
import { autoUpdate, computePosition, flip, offset, shift, size } from "@floating-ui/dom";
|
|
60
|
+
|
|
61
|
+
// ../ui/dist/safeTriangle.js
|
|
62
|
+
import { createContext, useEffect, useRef } from "react";
|
|
63
|
+
var within = (b, p) => p.x >= b.left && p.x <= b.right && p.y >= b.top && p.y <= b.bottom;
|
|
64
|
+
function inTriangle(p, a, b, c) {
|
|
65
|
+
const side = (u, v) => (p.x - v.x) * (u.y - v.y) - (u.x - v.x) * (p.y - v.y);
|
|
66
|
+
const d1 = side(a, b);
|
|
67
|
+
const d2 = side(b, c);
|
|
68
|
+
const d3 = side(c, a);
|
|
69
|
+
return !((d1 < 0 || d2 < 0 || d3 < 0) && (d1 > 0 || d2 > 0 || d3 > 0));
|
|
70
|
+
}
|
|
71
|
+
var BEHIND = 4;
|
|
72
|
+
function onWay(trigger, popup, from, p) {
|
|
73
|
+
let edge;
|
|
74
|
+
let band;
|
|
75
|
+
let tip;
|
|
76
|
+
if (popup.top >= trigger.bottom || popup.bottom <= trigger.top) {
|
|
77
|
+
const below = popup.top >= trigger.bottom;
|
|
78
|
+
const y = below ? popup.top : popup.bottom;
|
|
79
|
+
edge = [
|
|
80
|
+
{ x: popup.left, y },
|
|
81
|
+
{ x: popup.right, y }
|
|
82
|
+
];
|
|
83
|
+
band = {
|
|
84
|
+
left: Math.max(trigger.left, popup.left),
|
|
85
|
+
right: Math.min(trigger.right, popup.right),
|
|
86
|
+
top: below ? trigger.bottom : popup.bottom,
|
|
87
|
+
bottom: below ? popup.top : trigger.top
|
|
88
|
+
};
|
|
89
|
+
tip = from && { x: from.x, y: from.y + (below ? -BEHIND : BEHIND) };
|
|
90
|
+
} else if (popup.left >= trigger.right || popup.right <= trigger.left) {
|
|
91
|
+
const right = popup.left >= trigger.right;
|
|
92
|
+
const x = right ? popup.left : popup.right;
|
|
93
|
+
edge = [
|
|
94
|
+
{ x, y: popup.top },
|
|
95
|
+
{ x, y: popup.bottom }
|
|
96
|
+
];
|
|
97
|
+
band = {
|
|
98
|
+
left: right ? trigger.right : popup.right,
|
|
99
|
+
right: right ? popup.left : trigger.left,
|
|
100
|
+
top: Math.max(trigger.top, popup.top),
|
|
101
|
+
bottom: Math.min(trigger.bottom, popup.bottom)
|
|
102
|
+
};
|
|
103
|
+
tip = from && { x: from.x + (right ? -BEHIND : BEHIND), y: from.y };
|
|
104
|
+
} else
|
|
105
|
+
return false;
|
|
106
|
+
if (band.left <= band.right && band.top <= band.bottom && within(band, p))
|
|
107
|
+
return true;
|
|
108
|
+
return tip !== null && inTriangle(p, tip, edge[0], edge[1]);
|
|
109
|
+
}
|
|
110
|
+
var PopupNest = createContext(null);
|
|
111
|
+
var holds = /* @__PURE__ */ new WeakMap();
|
|
112
|
+
function holdGuests(root) {
|
|
113
|
+
holds.set(root, (holds.get(root) ?? 0) + 1);
|
|
114
|
+
root.dataset.hoverPopup = "true";
|
|
115
|
+
return () => {
|
|
116
|
+
const left = holds.get(root) - 1;
|
|
117
|
+
holds.set(root, left);
|
|
118
|
+
if (left === 0)
|
|
119
|
+
delete root.dataset.hoverPopup;
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function useSafeTriangle(trigger, popup, root, onLeave, enabled) {
|
|
123
|
+
const live = useRef({ trigger, onLeave });
|
|
124
|
+
live.current = { trigger, onLeave };
|
|
125
|
+
const state = useRef({
|
|
126
|
+
armed: false,
|
|
127
|
+
onTrigger: false,
|
|
128
|
+
onPopup: false,
|
|
129
|
+
from: null,
|
|
130
|
+
nested: /* @__PURE__ */ new Set()
|
|
131
|
+
});
|
|
132
|
+
const covers = useRef((p) => {
|
|
133
|
+
const box = popup.current;
|
|
134
|
+
if (!box)
|
|
135
|
+
return false;
|
|
136
|
+
const t = live.current.trigger.getBoundingClientRect();
|
|
137
|
+
const m = box.getBoundingClientRect();
|
|
138
|
+
return within(t, p) || within(m, p) || onWay(t, m, state.current.from, p) || [...state.current.nested].some((nested) => nested(p));
|
|
139
|
+
});
|
|
140
|
+
const check = (p) => {
|
|
141
|
+
const s = state.current;
|
|
142
|
+
if (s.armed && !s.onTrigger && !s.onPopup && !covers.current(p))
|
|
143
|
+
live.current.onLeave();
|
|
144
|
+
};
|
|
145
|
+
const checkRef = useRef(check);
|
|
146
|
+
checkRef.current = check;
|
|
147
|
+
const nest = useRef((nested) => {
|
|
148
|
+
state.current.nested.add(nested);
|
|
149
|
+
return () => {
|
|
150
|
+
state.current.nested.delete(nested);
|
|
151
|
+
};
|
|
152
|
+
});
|
|
153
|
+
useEffect(() => {
|
|
154
|
+
if (!enabled)
|
|
155
|
+
return;
|
|
156
|
+
const s = state.current;
|
|
157
|
+
s.onTrigger = trigger.matches(":hover");
|
|
158
|
+
s.armed = s.onTrigger;
|
|
159
|
+
s.from = null;
|
|
160
|
+
const enter = () => {
|
|
161
|
+
s.onTrigger = true;
|
|
162
|
+
s.armed = true;
|
|
163
|
+
};
|
|
164
|
+
const exit = (e) => {
|
|
165
|
+
s.onTrigger = false;
|
|
166
|
+
s.from = { x: e.clientX, y: e.clientY };
|
|
167
|
+
checkRef.current(s.from);
|
|
168
|
+
};
|
|
169
|
+
const move = (e) => checkRef.current({ x: e.clientX, y: e.clientY });
|
|
170
|
+
trigger.addEventListener("mouseenter", enter);
|
|
171
|
+
trigger.addEventListener("mouseleave", exit);
|
|
172
|
+
document.addEventListener("pointermove", move, true);
|
|
173
|
+
const release = holdGuests(root);
|
|
174
|
+
return () => {
|
|
175
|
+
trigger.removeEventListener("mouseenter", enter);
|
|
176
|
+
trigger.removeEventListener("mouseleave", exit);
|
|
177
|
+
document.removeEventListener("pointermove", move, true);
|
|
178
|
+
release();
|
|
179
|
+
};
|
|
180
|
+
}, [trigger, root, enabled]);
|
|
181
|
+
return {
|
|
182
|
+
covers: covers.current,
|
|
183
|
+
nest: nest.current,
|
|
184
|
+
handlers: {
|
|
185
|
+
onMouseEnter: () => {
|
|
186
|
+
state.current.onPopup = true;
|
|
187
|
+
state.current.armed = true;
|
|
188
|
+
},
|
|
189
|
+
onMouseLeave: (e) => {
|
|
190
|
+
state.current.onPopup = false;
|
|
191
|
+
state.current.from = null;
|
|
192
|
+
checkRef.current({ x: e.clientX, y: e.clientY });
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// ../ui/dist/ShellMenu.js
|
|
199
|
+
function popupRoot(anchor) {
|
|
200
|
+
return anchor.closest(".hs-modal, .hs-shell");
|
|
201
|
+
}
|
|
202
|
+
function anchorFrom(key, e) {
|
|
203
|
+
return {
|
|
204
|
+
key,
|
|
205
|
+
element: e.currentTarget
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
function MenuSurface({ anchor, align = "auto", dir = "down", minWidth = 180, maxWidth, maxHeight, fit = false, keyboard = false, onDismiss, children }) {
|
|
209
|
+
const menu = useRef2(null);
|
|
210
|
+
const [root] = useState(() => popupRoot(anchor.element));
|
|
211
|
+
const grace = useSafeTriangle(anchor.element, menu, root, onDismiss, !keyboard);
|
|
212
|
+
const parentNest = useContext(PopupNest);
|
|
213
|
+
useEffect2(() => parentNest?.(grace.covers), [parentNest, grace.covers]);
|
|
214
|
+
const submenu = useRef2(null);
|
|
215
|
+
const [pos, setPos] = useState({ visibility: "hidden" });
|
|
216
|
+
const focused = useRef2(false);
|
|
217
|
+
useLayoutEffect(() => {
|
|
218
|
+
if (!keyboard || focused.current || pos.visibility !== "visible")
|
|
219
|
+
return;
|
|
220
|
+
const choices = menu.current?.querySelectorAll('[role^="menuitem"]:not([aria-disabled="true"])');
|
|
221
|
+
const selected = menu.current?.querySelector('[aria-checked="true"]:not([aria-disabled="true"])');
|
|
222
|
+
(selected ?? choices?.[0])?.focus();
|
|
223
|
+
focused.current = true;
|
|
224
|
+
}, [keyboard, pos.visibility]);
|
|
225
|
+
const pressed = useRef2(null);
|
|
226
|
+
useEffect2(() => {
|
|
227
|
+
if (!keyboard)
|
|
228
|
+
return;
|
|
229
|
+
const outside = (event) => {
|
|
230
|
+
if (pressed.current !== event && event.target instanceof Node && !anchor.element.contains(event.target))
|
|
231
|
+
onDismiss();
|
|
232
|
+
};
|
|
233
|
+
document.addEventListener("pointerdown", outside);
|
|
234
|
+
window.addEventListener("blur", onDismiss);
|
|
235
|
+
return () => {
|
|
236
|
+
document.removeEventListener("pointerdown", outside);
|
|
237
|
+
window.removeEventListener("blur", onDismiss);
|
|
238
|
+
};
|
|
239
|
+
}, [keyboard, anchor.element, onDismiss]);
|
|
240
|
+
useEffect2(() => {
|
|
241
|
+
if (keyboard)
|
|
242
|
+
return;
|
|
243
|
+
const escape = (event) => {
|
|
244
|
+
if (event.key !== "Escape")
|
|
245
|
+
return;
|
|
246
|
+
event.stopPropagation();
|
|
247
|
+
event.preventDefault();
|
|
248
|
+
onDismiss();
|
|
249
|
+
};
|
|
250
|
+
window.addEventListener("keydown", escape, true);
|
|
251
|
+
return () => window.removeEventListener("keydown", escape, true);
|
|
252
|
+
}, [keyboard, onDismiss]);
|
|
253
|
+
useLayoutEffect(() => {
|
|
254
|
+
if (pos.visibility !== "visible")
|
|
255
|
+
return;
|
|
256
|
+
const surface = menu.current?.firstElementChild;
|
|
257
|
+
const row = surface?.querySelector('[data-sel="true"]');
|
|
258
|
+
if (!surface || !row)
|
|
259
|
+
return;
|
|
260
|
+
surface.scrollTop = row.offsetTop - (surface.clientHeight - row.offsetHeight) / 2;
|
|
261
|
+
}, [pos.visibility]);
|
|
262
|
+
useLayoutEffect(() => {
|
|
263
|
+
const floating = menu.current;
|
|
264
|
+
let live = true;
|
|
265
|
+
const update = () => {
|
|
266
|
+
const rect = anchor.element.getBoundingClientRect();
|
|
267
|
+
const edge = align === "auto" ? (rect.left + rect.right) / 2 > window.innerWidth / 2 ? "right" : "left" : align;
|
|
268
|
+
void computePosition(anchor.element, floating, {
|
|
269
|
+
placement: dir === "right" ? "right-start" : `${dir === "down" ? "bottom" : "top"}-${edge === "right" ? "end" : "start"}`,
|
|
270
|
+
middleware: [
|
|
271
|
+
offset(6),
|
|
272
|
+
flip({ padding: 8 }),
|
|
273
|
+
shift({ padding: 8 }),
|
|
274
|
+
size({
|
|
275
|
+
padding: 8,
|
|
276
|
+
apply({ availableWidth, availableHeight, elements, rects }) {
|
|
277
|
+
const surface = elements.floating.firstElementChild;
|
|
278
|
+
const wanted = fit ? rects.reference.width : Math.max(minWidth, rects.reference.width);
|
|
279
|
+
surface.style.minWidth = `${Math.max(0, Math.min(wanted, availableWidth))}px`;
|
|
280
|
+
surface.style.maxWidth = `${Math.max(0, Math.min(fit ? wanted : Math.max(wanted, maxWidth ?? Infinity), availableWidth))}px`;
|
|
281
|
+
surface.style.maxHeight = `${Math.max(0, Math.min(maxHeight ?? Infinity, availableHeight))}px`;
|
|
282
|
+
if (fit)
|
|
283
|
+
surface.style.borderRadius = getComputedStyle(anchor.element).borderRadius;
|
|
284
|
+
}
|
|
285
|
+
})
|
|
286
|
+
]
|
|
287
|
+
}).then(({ x, y }) => {
|
|
288
|
+
if (live)
|
|
289
|
+
setPos({ left: x, top: y, visibility: "visible" });
|
|
290
|
+
});
|
|
291
|
+
};
|
|
292
|
+
const cleanup = autoUpdate(anchor.element, floating, update);
|
|
293
|
+
return () => {
|
|
294
|
+
live = false;
|
|
295
|
+
cleanup();
|
|
296
|
+
};
|
|
297
|
+
}, [anchor.element, align, dir, minWidth, maxWidth, maxHeight, fit]);
|
|
298
|
+
useEffect2(() => {
|
|
299
|
+
const floating = menu.current;
|
|
300
|
+
const wheel = (e) => {
|
|
301
|
+
const surface = floating.firstElementChild;
|
|
302
|
+
if (surface.scrollHeight <= surface.clientHeight)
|
|
303
|
+
e.preventDefault();
|
|
304
|
+
};
|
|
305
|
+
floating.addEventListener("wheel", wheel, { passive: false });
|
|
306
|
+
return () => floating.removeEventListener("wheel", wheel);
|
|
307
|
+
}, []);
|
|
308
|
+
return createPortal(_jsx5("div", { ref: menu, className: "hs-menu-position", onPointerDown: (event) => {
|
|
309
|
+
pressed.current = event.nativeEvent;
|
|
310
|
+
}, ...!keyboard && grace.handlers, onClick: (e) => e.stopPropagation(), onKeyDown: (event) => {
|
|
311
|
+
if (!keyboard)
|
|
312
|
+
return;
|
|
313
|
+
if (event.key === "Escape" || event.key === "Tab") {
|
|
314
|
+
if (event.key === "Escape") {
|
|
315
|
+
event.stopPropagation();
|
|
316
|
+
event.preventDefault();
|
|
317
|
+
}
|
|
318
|
+
anchor.element.focus();
|
|
319
|
+
onDismiss();
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
const choices = [
|
|
323
|
+
...event.currentTarget.querySelectorAll('[role^="menuitem"]:not([aria-disabled="true"])')
|
|
324
|
+
];
|
|
325
|
+
const current = choices.indexOf(document.activeElement);
|
|
326
|
+
const next = event.key === "ArrowDown" ? (current + 1) % choices.length : event.key === "ArrowUp" ? (current + choices.length - 1) % choices.length : event.key === "Home" ? 0 : event.key === "End" ? choices.length - 1 : null;
|
|
327
|
+
if (next !== null) {
|
|
328
|
+
event.stopPropagation();
|
|
329
|
+
event.preventDefault();
|
|
330
|
+
choices[next]?.focus();
|
|
331
|
+
}
|
|
332
|
+
}, style: pos, children: _jsx5("div", { className: "hs-menu hs-menu-surface", role: keyboard ? "menu" : void 0, style: { minWidth: `min(${minWidth}px, calc(100vw - var(--space) * 4))`, maxWidth }, children: _jsx5(PopupNest.Provider, { value: grace.nest, children: _jsx5(OpenSubmenu.Provider, { value: submenu, children }) }) }) }), root);
|
|
333
|
+
}
|
|
334
|
+
var OpenSubmenu = createContext2(null);
|
|
335
|
+
function MItem({ icon, label, sub, chip, checked, selected, danger, disabled, onClick, trailing }) {
|
|
336
|
+
return _jsxs3("div", { role: checked === void 0 ? "menuitem" : "menuitemcheckbox", "aria-checked": checked, "aria-disabled": disabled || void 0, tabIndex: -1, className: `hs-mitem hs-menu-item-row ${danger ? "hs-inkbad hs-hovbox" : disabled ? "hs-inkdim" : "hs-inkmut hs-hovbox-ink"}`, "data-sel": selected || checked ? "true" : "false", "data-disabled": disabled ? "true" : "false", onClick: disabled ? void 0 : onClick, onKeyDown: (event) => {
|
|
337
|
+
if (!disabled && onClick && (event.key === "Enter" || event.key === " ")) {
|
|
338
|
+
event.preventDefault();
|
|
339
|
+
onClick();
|
|
340
|
+
}
|
|
341
|
+
}, children: [icon, _jsxs3("span", { className: "hs-menu-label", children: [_jsx5("span", { className: "hs-menu-title", children: label }), sub && _jsx5("span", { className: "hs-menu-sub", children: sub })] }), chip && _jsx5("span", { className: "hs-menu-chip", children: chip }), checked && _jsx5(CheckGlyph, { size: 13 }), trailing] });
|
|
342
|
+
}
|
|
343
|
+
function MSub({ icon, label, minWidth = 220, children }) {
|
|
344
|
+
const id = useId();
|
|
345
|
+
const open = useContext(OpenSubmenu);
|
|
346
|
+
const [anchor, setAnchor] = useState(null);
|
|
347
|
+
return _jsxs3("div", { className: "hs-submenu-wrap", onPointerMove: (e) => {
|
|
348
|
+
if (anchor)
|
|
349
|
+
return;
|
|
350
|
+
if (open) {
|
|
351
|
+
if (open.current !== null && open.current !== id)
|
|
352
|
+
return;
|
|
353
|
+
open.current = id;
|
|
354
|
+
}
|
|
355
|
+
setAnchor(anchorFrom("submenu", e));
|
|
356
|
+
}, children: [_jsx5(MItem, { icon, label, selected: anchor !== null, trailing: _jsx5(ChevronRightGlyph, { size: 12, className: "hs-submenu-chevron" }) }), anchor && _jsx5(MenuSurface, { anchor, dir: "right", minWidth, onDismiss: () => {
|
|
357
|
+
if (open?.current === id)
|
|
358
|
+
open.current = null;
|
|
359
|
+
setAnchor(null);
|
|
360
|
+
}, children })] });
|
|
361
|
+
}
|
|
362
|
+
function MDivider() {
|
|
363
|
+
return _jsx5("div", { className: "hs-menu-divider" });
|
|
364
|
+
}
|
|
365
|
+
function MSection({ children }) {
|
|
366
|
+
return _jsx5("div", { className: "hs-menu-section", children });
|
|
367
|
+
}
|
|
368
|
+
function Tip({ style, title, sub, chip }) {
|
|
369
|
+
const tip = useRef2(null);
|
|
370
|
+
useEffect2(() => {
|
|
371
|
+
const wrap = tip.current?.parentElement;
|
|
372
|
+
if (!wrap)
|
|
373
|
+
return;
|
|
374
|
+
const close = () => {
|
|
375
|
+
wrap.dataset.tipClosed = "true";
|
|
376
|
+
};
|
|
377
|
+
const open = () => {
|
|
378
|
+
delete wrap.dataset.tipClosed;
|
|
379
|
+
};
|
|
380
|
+
const blur = () => {
|
|
381
|
+
if (wrap.matches(":hover"))
|
|
382
|
+
close();
|
|
383
|
+
};
|
|
384
|
+
wrap.addEventListener("pointerdown", close);
|
|
385
|
+
wrap.addEventListener("mouseleave", open);
|
|
386
|
+
window.addEventListener("blur", blur);
|
|
387
|
+
return () => {
|
|
388
|
+
wrap.removeEventListener("pointerdown", close);
|
|
389
|
+
wrap.removeEventListener("mouseleave", open);
|
|
390
|
+
window.removeEventListener("blur", blur);
|
|
391
|
+
};
|
|
392
|
+
}, []);
|
|
393
|
+
return _jsxs3("span", { ref: tip, className: "hs-tip hs-tooltip", "data-sub": Boolean(sub), style, children: [_jsx5("span", { className: "hs-tooltip-title", children: title }), sub && _jsx5("span", { className: "hs-tooltip-sub", children: sub }), chip && _jsx5("span", { className: "hs-tooltip-chip", children: chip })] });
|
|
394
|
+
}
|
|
395
|
+
function FloatingTip({ anchor, text, chip, placement = "bottom-start", onPress }) {
|
|
396
|
+
const floating = useRef2(null);
|
|
397
|
+
const [pos, setPos] = useState({ visibility: "hidden" });
|
|
398
|
+
useEffect2(() => {
|
|
399
|
+
anchor.addEventListener("pointerdown", onPress);
|
|
400
|
+
return () => anchor.removeEventListener("pointerdown", onPress);
|
|
401
|
+
}, [anchor, onPress]);
|
|
402
|
+
useLayoutEffect(() => {
|
|
403
|
+
let live = true;
|
|
404
|
+
const update = () => {
|
|
405
|
+
void computePosition(anchor, floating.current, {
|
|
406
|
+
placement,
|
|
407
|
+
middleware: [offset(6), flip({ padding: 8 }), shift({ padding: 8 })]
|
|
408
|
+
}).then(({ x, y }) => {
|
|
409
|
+
if (live)
|
|
410
|
+
setPos({ left: x, top: y, visibility: "visible" });
|
|
411
|
+
});
|
|
412
|
+
};
|
|
413
|
+
const cleanup = autoUpdate(anchor, floating.current, update);
|
|
414
|
+
return () => {
|
|
415
|
+
live = false;
|
|
416
|
+
cleanup();
|
|
417
|
+
};
|
|
418
|
+
}, [anchor, placement]);
|
|
419
|
+
return createPortal(_jsx5("div", { ref: floating, className: "hs-menu-position hs-floating-tip", style: pos, children: _jsx5(Tip, { title: text, ...chip && { chip } }) }), popupRoot(anchor));
|
|
420
|
+
}
|
|
421
|
+
function useFloatingTips(placement) {
|
|
422
|
+
const [shown, setShown] = useState(null);
|
|
423
|
+
const [hide] = useState(() => () => setShown(null));
|
|
424
|
+
return (key, text, chip) => ({
|
|
425
|
+
hover: {
|
|
426
|
+
onMouseEnter: (e) => setShown({ key, anchor: e.currentTarget }),
|
|
427
|
+
onMouseLeave: () => setShown(null)
|
|
428
|
+
},
|
|
429
|
+
tip: text && shown?.key === key && shown.anchor.isConnected ? _jsx5(FloatingTip, { anchor: shown.anchor, text, chip, ...placement && { placement }, onPress: hide }) : null
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
// ../ui/dist/Chip.js
|
|
434
|
+
function Chip({ children, tone = "neutral", icon, title, selected, onClick }) {
|
|
435
|
+
const tips = useFloatingTips();
|
|
436
|
+
const { hover, tip } = tips("chip", title);
|
|
437
|
+
const content = _jsxs4(_Fragment2, { children: [icon && _jsx6("span", { className: "hs-chip-mark", children: icon }), _jsx6("span", { className: "hs-chip-text", children }), tip] });
|
|
438
|
+
if (selected !== void 0) {
|
|
439
|
+
return _jsx6("button", { type: "button", className: "hs-chip", "data-sel": selected ? "true" : "false", "aria-pressed": selected, onClick, ...hover, children: content });
|
|
440
|
+
}
|
|
441
|
+
return onClick ? _jsx6("button", { type: "button", className: "hs-chip", "data-tone": tone, onClick, ...hover, children: content }) : _jsx6("span", { className: "hs-chip", "data-tone": tone, ...hover, children: content });
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
// ../ui/dist/StatusWord.js
|
|
445
|
+
import { jsx as _jsx7 } from "react/jsx-runtime";
|
|
446
|
+
|
|
447
|
+
// ../ui/dist/shine.js
|
|
448
|
+
import { useEffect as useEffect3, useRef as useRef3 } from "react";
|
|
449
|
+
function useShine(on) {
|
|
450
|
+
const ref = useRef3(null);
|
|
451
|
+
useEffect3(() => {
|
|
452
|
+
const el = ref.current;
|
|
453
|
+
if (!on || !el)
|
|
454
|
+
return;
|
|
455
|
+
const observer = new IntersectionObserver(([seen]) => {
|
|
456
|
+
el.dataset.offscreen = seen?.isIntersecting ? "false" : "true";
|
|
457
|
+
});
|
|
458
|
+
observer.observe(el);
|
|
459
|
+
return () => {
|
|
460
|
+
observer.disconnect();
|
|
461
|
+
delete el.dataset.offscreen;
|
|
462
|
+
};
|
|
463
|
+
}, [on]);
|
|
464
|
+
return ref;
|
|
465
|
+
}
|
|
466
|
+
var shineClass = (base, on) => on ? `${base} hs-shine` : base;
|
|
467
|
+
|
|
468
|
+
// ../ui/dist/StatusWord.js
|
|
469
|
+
function StatusWord({ tone, live = false, children }) {
|
|
470
|
+
const ref = useShine(live);
|
|
471
|
+
return _jsx7("span", { ref, className: shineClass("hs-status", live), "data-tone": tone, children });
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
// ../ui/dist/Typography.js
|
|
475
|
+
import { jsx as _jsx8, Fragment as _Fragment3, jsxs as _jsxs5 } from "react/jsx-runtime";
|
|
476
|
+
function Label({ children }) {
|
|
477
|
+
return _jsx8("span", { className: "hs-label", children });
|
|
478
|
+
}
|
|
479
|
+
function Mono({ children }) {
|
|
480
|
+
return _jsx8("span", { className: "hs-mono", children });
|
|
481
|
+
}
|
|
482
|
+
function PageTitle({ children, lead, hero = false }) {
|
|
483
|
+
return _jsxs5(_Fragment3, { children: [_jsx8("h1", { className: "hs-page-title", "data-hero": hero ? "true" : void 0, children }), lead && _jsx8("p", { className: "hs-page-lead", children: lead })] });
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
// ../ui/dist/TextField.js
|
|
487
|
+
import { jsx as _jsx9, jsxs as _jsxs6 } from "react/jsx-runtime";
|
|
488
|
+
import { useId as useId2 } from "react";
|
|
489
|
+
function TextField({ label, labelNote, hint, id, className, ...rest }) {
|
|
490
|
+
const generated = useId2();
|
|
491
|
+
const inputId = id ?? generated;
|
|
492
|
+
return _jsxs6("div", { className: "hs-text-field", children: [_jsxs6("label", { htmlFor: inputId, className: "hs-field-label", children: [label, " ", labelNote && _jsx9("span", { className: "hs-field-note", children: labelNote })] }), _jsx9("input", { ...rest, id: inputId, className: className ? `hs-field-input ${className}` : "hs-field-input" }), hint && _jsx9("p", { className: "hs-field-hint", children: hint })] });
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
// ../ui/dist/TextInput.js
|
|
496
|
+
import { jsx as _jsx10 } from "react/jsx-runtime";
|
|
497
|
+
function TextInput({ variant = "text", ...rest }) {
|
|
498
|
+
return _jsx10("input", { ...rest, type: variant, className: "hs-input", "data-variant": variant });
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
// ../ui/dist/Toggle.js
|
|
502
|
+
import { jsx as _jsx11 } from "react/jsx-runtime";
|
|
503
|
+
function Toggle({ checked, onChange, disabled = false, ...rest }) {
|
|
504
|
+
return _jsx11("button", { ...rest, type: "button", role: "switch", "aria-checked": checked, disabled, className: "hs-tog", "data-on": checked ? "true" : "false", onClick: () => onChange?.(!checked), children: _jsx11("span", { className: "hs-toggle-thumb" }) });
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
// ../ui/dist/SegmentedControl.js
|
|
508
|
+
import { jsx as _jsx12 } from "react/jsx-runtime";
|
|
509
|
+
import { useRef as useRef4 } from "react";
|
|
510
|
+
function SegmentedControl({ value, options, onChange, label, disabled = false }) {
|
|
511
|
+
const group = useRef4(null);
|
|
512
|
+
const choose = (index) => {
|
|
513
|
+
const at = (index + options.length) % options.length;
|
|
514
|
+
onChange(options[at].value);
|
|
515
|
+
group.current?.querySelectorAll('[role="radio"]')[at]?.focus();
|
|
516
|
+
};
|
|
517
|
+
return _jsx12("div", { ref: group, role: "radiogroup", "aria-label": label, className: "hs-segmented", children: options.map((option, index) => {
|
|
518
|
+
const chosen = option.value === value;
|
|
519
|
+
return _jsx12("button", { type: "button", role: "radio", "aria-checked": chosen, tabIndex: chosen ? 0 : -1, disabled, className: "hs-segmented-option", onClick: () => onChange(option.value), onKeyDown: (event) => {
|
|
520
|
+
const step = event.key === "ArrowRight" || event.key === "ArrowDown" ? 1 : event.key === "ArrowLeft" || event.key === "ArrowUp" ? -1 : 0;
|
|
521
|
+
if (step === 0)
|
|
522
|
+
return;
|
|
523
|
+
event.preventDefault();
|
|
524
|
+
choose(index + step);
|
|
525
|
+
}, children: option.label }, option.value);
|
|
526
|
+
}) });
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
// ../ui/dist/settings.js
|
|
530
|
+
import { jsx as _jsx13, jsxs as _jsxs7, Fragment as _Fragment4 } from "react/jsx-runtime";
|
|
531
|
+
import { createContext as createContext3, useContext as useContext2, useLayoutEffect as useLayoutEffect2, useState as useState2 } from "react";
|
|
532
|
+
function SettingsCard({ children }) {
|
|
533
|
+
return _jsx13("div", { className: "hs-settings-card", children });
|
|
534
|
+
}
|
|
535
|
+
function SettingsSection({ children, first, action }) {
|
|
536
|
+
return _jsxs7("div", { className: "hs-settings-section", "data-first": first ? "true" : "false", children: [_jsx13("span", { children }), action && _jsx13("span", { className: "hs-settings-section-action", children: action })] });
|
|
537
|
+
}
|
|
538
|
+
function HelpTip({ text, onOpen }) {
|
|
539
|
+
const { hover, tip } = useFloatingTips()("help", text);
|
|
540
|
+
const inner = _jsxs7(_Fragment4, { children: [_jsx13(HelpGlyph, { size: 13 }), tip] });
|
|
541
|
+
return onOpen ? _jsx13("button", { type: "button", className: "hs-help-button", onClick: onOpen, ...hover, children: inner }) : _jsx13("span", { className: "hs-help-mark", ...hover, children: inner });
|
|
542
|
+
}
|
|
543
|
+
function SettingsSearch({ value, placeholder, onChange }) {
|
|
544
|
+
return _jsxs7("label", { className: "hs-url hs-settings-search", children: [_jsx13(SearchGlyph, { size: 12 }), _jsx13("input", { className: "hs-in hs-urlin", "aria-label": placeholder, placeholder, value, onChange: (e) => onChange(e.target.value) }), _jsx13("span", { "aria-hidden": "true", className: "hs-urlph hs-ph-icon", children: placeholder })] });
|
|
545
|
+
}
|
|
546
|
+
function SettingsSelect({ value, options, onPick, minWidth = 180, menuHeight, menuWidth, placeholder, disabled, label }) {
|
|
547
|
+
const [anchor, setAnchor] = useState2(null);
|
|
548
|
+
const current = options.find((o) => o.value === value);
|
|
549
|
+
return _jsxs7("span", { className: "hs-select-wrap", children: [_jsxs7("button", { type: "button", className: "hs-glassbtn hs-hovink hs-inktext hs-select", "aria-label": label, "aria-haspopup": "menu", "aria-expanded": anchor !== null, disabled, "data-open": anchor ? "true" : "false", onClick: (e) => {
|
|
550
|
+
const next = anchorFrom("select", e);
|
|
551
|
+
setAnchor((current2) => current2 ? null : next);
|
|
552
|
+
}, children: [current?.label ?? (value || placeholder), _jsx13(ChevronDownGlyph, { size: 11 })] }), anchor && _jsx13(MenuSurface, { keyboard: true, anchor, onDismiss: () => setAnchor(null), minWidth, ...menuHeight !== void 0 && { maxHeight: menuHeight }, ...menuWidth !== void 0 && { maxWidth: menuWidth }, children: options.map((option) => _jsx13(MItem, { label: option.label, ...option.sub && { sub: option.sub }, ...option.trailing && { trailing: option.trailing }, ...option.disabled && { disabled: true }, checked: option.value === value, onClick: () => {
|
|
553
|
+
anchor.element.focus();
|
|
554
|
+
setAnchor(null);
|
|
555
|
+
onPick(option.value);
|
|
556
|
+
} }, option.value)) })] });
|
|
557
|
+
}
|
|
558
|
+
function ToggleRow({ id, title, sub, help, on, onFlip }) {
|
|
559
|
+
const docs = useContext2(SettingsDocs);
|
|
560
|
+
const open = id ? docs(id) : void 0;
|
|
561
|
+
return _jsxs7("div", { className: "hs-setrow hs-toggle-row", "data-row": id, children: [_jsxs7("span", { className: "hs-setting-label", children: [_jsxs7("span", { className: "hs-setting-label-line", children: [_jsx13("span", { className: "hs-setting-title", children: title }), help && _jsx13(HelpTip, { text: help, ...open && { onOpen: open } })] }), sub && _jsx13("span", { className: "hs-setting-sub", children: sub })] }), _jsx13(Toggle, { checked: on, "aria-label": title, disabled: !onFlip, ...onFlip && { onChange: onFlip } })] });
|
|
562
|
+
}
|
|
563
|
+
var SettingsDocs = createContext3(() => void 0);
|
|
564
|
+
function InfoRow({ id, title, sub, help, helpOpen, value }) {
|
|
565
|
+
const docs = useContext2(SettingsDocs);
|
|
566
|
+
const open = helpOpen ?? (id ? docs(id) : void 0);
|
|
567
|
+
return _jsxs7("div", { className: "hs-setrow hs-info-row", "data-row": id, children: [_jsxs7("span", { className: "hs-setting-label", children: [_jsxs7("span", { className: "hs-setting-label-line", children: [_jsx13("span", { className: "hs-setting-title", children: title }), help && _jsx13(HelpTip, { text: help, ...open && { onOpen: open } })] }), sub && _jsx13("span", { className: "hs-setting-sub", children: sub })] }), _jsx13("span", { className: "hs-setting-value", children: value })] });
|
|
568
|
+
}
|
|
569
|
+
function LinkRow({ id, mark, title, sub, value, onOpen }) {
|
|
570
|
+
return _jsxs7("button", { type: "button", className: "hs-setrow hs-link-row", "data-row": id, onClick: onOpen, children: [mark && _jsx13("span", { className: "hs-row-mark", children: mark }), _jsxs7("span", { className: "hs-setting-label", children: [_jsx13("span", { className: "hs-setting-title", children: title }), sub && _jsx13("span", { className: "hs-setting-sub", children: sub })] }), value !== void 0 && _jsx13("span", { className: "hs-setting-value", children: value }), _jsx13(ChevronRightGlyph, { size: 13, className: "hs-link-row-chevron" })] });
|
|
571
|
+
}
|
|
572
|
+
function ListRow({ id, role, mark, title, sub, actions }) {
|
|
573
|
+
return _jsxs7("div", { className: `hs-setrow hs-list-row${role ? ` ${role}` : ""}`, "data-row": id, children: [mark && _jsx13("span", { className: "hs-row-mark", children: mark }), _jsxs7("span", { className: "hs-setting-label", children: [_jsx13("span", { className: "hs-setting-title", children: title }), sub && _jsx13("span", { className: "hs-setting-sub", children: sub })] }), actions && _jsx13("span", { className: "hs-list-row-actions", children: actions })] });
|
|
574
|
+
}
|
|
575
|
+
function FactRow({ label, value }) {
|
|
576
|
+
return _jsxs7("div", { className: "hs-setrow hs-fact-row", children: [_jsx13("span", { className: "hs-fact-label", children: label }), _jsx13("span", { className: "hs-fact-value", children: value })] });
|
|
577
|
+
}
|
|
578
|
+
function SettingsTabs({ label, value, tabs, onPick, panelRef }) {
|
|
579
|
+
useLayoutEffect2(() => {
|
|
580
|
+
if (panelRef?.current)
|
|
581
|
+
panelRef.current.scrollTop = 0;
|
|
582
|
+
}, [value, panelRef]);
|
|
583
|
+
return _jsx13("div", { className: "hs-settings-tabs", role: "tablist", "aria-label": label, children: tabs.map((tab, index) => _jsx13("button", { type: "button", className: value === tab.value ? "hs-glassbtn hs-hovink hs-inktext" : "hs-hovbox-ink hs-inkmut", role: "tab", "aria-selected": value === tab.value, tabIndex: value === tab.value ? 0 : -1, onClick: () => onPick(tab.value), onKeyDown: (event) => {
|
|
584
|
+
const next = event.key === "ArrowRight" ? (index + 1) % tabs.length : event.key === "ArrowLeft" ? (index + tabs.length - 1) % tabs.length : event.key === "Home" ? 0 : event.key === "End" ? tabs.length - 1 : null;
|
|
585
|
+
if (next === null)
|
|
586
|
+
return;
|
|
587
|
+
event.preventDefault();
|
|
588
|
+
onPick(tabs[next].value);
|
|
589
|
+
event.currentTarget.parentElement?.children[next]?.focus();
|
|
590
|
+
}, children: tab.label }, tab.value)) });
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
// ../ui/dist/ShellConfirm.js
|
|
594
|
+
import { jsx as _jsx14, jsxs as _jsxs8 } from "react/jsx-runtime";
|
|
595
|
+
import { useEffect as useEffect5 } from "react";
|
|
596
|
+
|
|
597
|
+
// ../ui/dist/asking.js
|
|
598
|
+
import { useEffect as useEffect4, useSyncExternalStore } from "react";
|
|
599
|
+
var asking = 0;
|
|
600
|
+
var hearers = /* @__PURE__ */ new Set();
|
|
601
|
+
function tell() {
|
|
602
|
+
for (const hear of hearers)
|
|
603
|
+
hear();
|
|
604
|
+
}
|
|
605
|
+
function useAsksPerson(on) {
|
|
606
|
+
useEffect4(() => {
|
|
607
|
+
if (!on)
|
|
608
|
+
return;
|
|
609
|
+
asking += 1;
|
|
610
|
+
tell();
|
|
611
|
+
return () => {
|
|
612
|
+
asking -= 1;
|
|
613
|
+
tell();
|
|
614
|
+
};
|
|
615
|
+
}, [on]);
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
// ../ui/dist/ShellConfirm.js
|
|
619
|
+
function ShellConfirm({ title, body, action, tone = "danger", onConfirm, onCancel }) {
|
|
620
|
+
useAsksPerson(true);
|
|
621
|
+
useEffect5(() => {
|
|
622
|
+
const onKey = (e) => {
|
|
623
|
+
if (e.key !== "Escape")
|
|
624
|
+
return;
|
|
625
|
+
e.preventDefault();
|
|
626
|
+
onCancel();
|
|
627
|
+
};
|
|
628
|
+
window.addEventListener("keydown", onKey, true);
|
|
629
|
+
return () => window.removeEventListener("keydown", onKey, true);
|
|
630
|
+
}, [onCancel]);
|
|
631
|
+
return _jsx14("div", { className: "hs-confirm", onClick: (e) => {
|
|
632
|
+
e.stopPropagation();
|
|
633
|
+
onCancel();
|
|
634
|
+
}, children: _jsxs8("div", { className: "hs-confirm-box", role: "dialog", onClick: (e) => e.stopPropagation(), children: [_jsx14("span", { className: "hs-confirm-title", children: title }), _jsx14("span", { className: "hs-confirm-body", children: body }), _jsxs8("div", { className: "hs-confirm-footer", children: [_jsx14(Button, { className: "hs-confirm-cancel", onClick: onCancel, children: "Cancel" }), _jsx14(Button, { className: "hs-confirm-action", variant: tone, onClick: onConfirm, children: action })] })] }) });
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
// ../ui/dist/OverlayScroll.js
|
|
638
|
+
import { jsx as _jsx15, jsxs as _jsxs9 } from "react/jsx-runtime";
|
|
639
|
+
import { useLayoutEffect as useLayoutEffect3, useRef as useRef5 } from "react";
|
|
640
|
+
function overlayThumb(scroller, thumb) {
|
|
641
|
+
let inset = 0;
|
|
642
|
+
let least = 0;
|
|
643
|
+
let track = 0;
|
|
644
|
+
let length = 0;
|
|
645
|
+
const measure = () => {
|
|
646
|
+
const style = getComputedStyle(thumb);
|
|
647
|
+
inset = parseFloat(style.marginTop);
|
|
648
|
+
least = parseFloat(style.minHeight);
|
|
649
|
+
thumb.style.right = getComputedStyle(scroller).paddingRight;
|
|
650
|
+
};
|
|
651
|
+
const place = () => {
|
|
652
|
+
const { scrollTop, scrollHeight, clientHeight } = scroller;
|
|
653
|
+
const room = scrollHeight - clientHeight;
|
|
654
|
+
thumb.dataset.shown = room > 0 ? "true" : "false";
|
|
655
|
+
if (room <= 0)
|
|
656
|
+
return;
|
|
657
|
+
track = clientHeight - 2 * inset;
|
|
658
|
+
length = Math.max(least, track * clientHeight / scrollHeight);
|
|
659
|
+
thumb.style.height = `${length}px`;
|
|
660
|
+
thumb.style.transform = `translateY(${(track - length) * scrollTop / room}px)`;
|
|
661
|
+
};
|
|
662
|
+
const resized = () => {
|
|
663
|
+
measure();
|
|
664
|
+
place();
|
|
665
|
+
};
|
|
666
|
+
let drag = null;
|
|
667
|
+
const press = (e) => {
|
|
668
|
+
if (e.button !== 0)
|
|
669
|
+
return;
|
|
670
|
+
e.preventDefault();
|
|
671
|
+
thumb.setPointerCapture(e.pointerId);
|
|
672
|
+
drag = { pointer: e.pointerId, y: e.clientY, top: scroller.scrollTop };
|
|
673
|
+
thumb.dataset.drag = "true";
|
|
674
|
+
};
|
|
675
|
+
const move = (e) => {
|
|
676
|
+
if (drag?.pointer !== e.pointerId || track <= length)
|
|
677
|
+
return;
|
|
678
|
+
const room = scroller.scrollHeight - scroller.clientHeight;
|
|
679
|
+
scroller.scrollTop = drag.top + (e.clientY - drag.y) * room / (track - length);
|
|
680
|
+
};
|
|
681
|
+
const release = (e) => {
|
|
682
|
+
if (drag?.pointer !== e.pointerId)
|
|
683
|
+
return;
|
|
684
|
+
drag = null;
|
|
685
|
+
delete thumb.dataset.drag;
|
|
686
|
+
};
|
|
687
|
+
const wheel = (e) => scroller.scrollBy({ top: e.deltaY });
|
|
688
|
+
resized();
|
|
689
|
+
const sizes = new ResizeObserver(resized);
|
|
690
|
+
sizes.observe(scroller);
|
|
691
|
+
const rows = new MutationObserver(place);
|
|
692
|
+
rows.observe(scroller, { childList: true, subtree: true });
|
|
693
|
+
scroller.addEventListener("scroll", place, { passive: true });
|
|
694
|
+
thumb.addEventListener("pointerdown", press);
|
|
695
|
+
thumb.addEventListener("pointermove", move);
|
|
696
|
+
thumb.addEventListener("pointerup", release);
|
|
697
|
+
thumb.addEventListener("pointercancel", release);
|
|
698
|
+
thumb.addEventListener("wheel", wheel, { passive: true });
|
|
699
|
+
return () => {
|
|
700
|
+
sizes.disconnect();
|
|
701
|
+
rows.disconnect();
|
|
702
|
+
scroller.removeEventListener("scroll", place);
|
|
703
|
+
thumb.removeEventListener("pointerdown", press);
|
|
704
|
+
thumb.removeEventListener("pointermove", move);
|
|
705
|
+
thumb.removeEventListener("pointerup", release);
|
|
706
|
+
thumb.removeEventListener("pointercancel", release);
|
|
707
|
+
thumb.removeEventListener("wheel", wheel);
|
|
708
|
+
};
|
|
709
|
+
}
|
|
710
|
+
function OverlayScroll({ className, children }) {
|
|
711
|
+
const scroller = useRef5(null);
|
|
712
|
+
const thumb = useRef5(null);
|
|
713
|
+
useLayoutEffect3(() => overlayThumb(scroller.current, thumb.current), []);
|
|
714
|
+
return _jsxs9("div", { className: "hs-overlay-scroll", children: [_jsx15("div", { ref: scroller, className, children }), _jsx15("div", { ref: thumb, className: "hs-overlay-thumb", "aria-hidden": "true" })] });
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
// ../ui/dist/Kbd.js
|
|
718
|
+
import { jsx as _jsx16 } from "react/jsx-runtime";
|
|
719
|
+
function Kbd({ children }) {
|
|
720
|
+
return _jsx16("kbd", { className: "hs-kbd", children });
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
// ../ui/dist/Meter.js
|
|
724
|
+
import { jsx as _jsx17, jsxs as _jsxs10 } from "react/jsx-runtime";
|
|
725
|
+
var RADIUS = 7.5;
|
|
726
|
+
var CIRCUMFERENCE = 2 * Math.PI * RADIUS;
|
|
727
|
+
function Meter({ value, label, variant = "bar", tone }) {
|
|
728
|
+
const share = Math.max(0, Math.min(1, value));
|
|
729
|
+
return _jsx17("span", { className: "hs-meter", "data-variant": variant, "data-tone": tone, role: "progressbar", "aria-label": label, "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": Math.round(share * 100), children: variant === "ring" ? _jsx17("svg", { width: 20, height: 20, viewBox: "0 0 20 20", "aria-hidden": "true", children: _jsxs10("g", { transform: "rotate(-90 10 10)", children: [_jsx17("circle", { className: "hs-meter-track", cx: 10, cy: 10, r: RADIUS }), _jsx17("circle", { className: "hs-meter-fill", cx: 10, cy: 10, r: RADIUS, strokeDasharray: CIRCUMFERENCE, strokeDashoffset: CIRCUMFERENCE * (1 - share) })] }) }) : _jsx17("span", { className: "hs-meter-fill", style: { width: `${share * 100}%` } }) });
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
// ../ui/dist/Lightbox.js
|
|
733
|
+
import { jsx as _jsx18, jsxs as _jsxs11, Fragment as _Fragment5 } from "react/jsx-runtime";
|
|
734
|
+
import { useEffect as useEffect6, useLayoutEffect as useLayoutEffect4, useRef as useRef6, useState as useState3 } from "react";
|
|
735
|
+
import { createPortal as createPortal2 } from "react-dom";
|
|
736
|
+
var MAX_ZOOM = 8;
|
|
737
|
+
var CLICK_ZOOM = 2;
|
|
738
|
+
var DRAG_SLOP = 4;
|
|
739
|
+
var FIT = { scale: 1, x: 0, y: 0 };
|
|
740
|
+
function Lightbox({ items, start, onClose }) {
|
|
741
|
+
const [index, setIndex] = useState3(start);
|
|
742
|
+
const [view, setView] = useState3(FIT);
|
|
743
|
+
const [broken, setBroken] = useState3(false);
|
|
744
|
+
const [host, setHost] = useState3(null);
|
|
745
|
+
const anchor = useRef6(null);
|
|
746
|
+
const stage = useRef6(null);
|
|
747
|
+
const closer = useRef6(null);
|
|
748
|
+
const drag = useRef6(null);
|
|
749
|
+
const item = items[index];
|
|
750
|
+
const many = items.length > 1;
|
|
751
|
+
useLayoutEffect4(() => {
|
|
752
|
+
setHost(anchor.current?.closest(".hs-shell") ?? document.body);
|
|
753
|
+
}, []);
|
|
754
|
+
useEffect6(() => {
|
|
755
|
+
if (!host)
|
|
756
|
+
return;
|
|
757
|
+
const opener = document.activeElement;
|
|
758
|
+
closer.current?.focus();
|
|
759
|
+
return () => opener?.focus();
|
|
760
|
+
}, [host]);
|
|
761
|
+
useEffect6(() => {
|
|
762
|
+
setView(FIT);
|
|
763
|
+
setBroken(false);
|
|
764
|
+
}, [index]);
|
|
765
|
+
const zoomTo = (to, px, py) => setView((v) => {
|
|
766
|
+
const next = Math.max(1, Math.min(MAX_ZOOM, to(v.scale)));
|
|
767
|
+
if (next === 1)
|
|
768
|
+
return FIT;
|
|
769
|
+
const k = next / v.scale;
|
|
770
|
+
return { scale: next, x: px - (px - v.x) * k, y: py - (py - v.y) * k };
|
|
771
|
+
});
|
|
772
|
+
const fromCentre = (clientX, clientY) => {
|
|
773
|
+
const box = stage.current.getBoundingClientRect();
|
|
774
|
+
return { px: clientX - box.left - box.width / 2, py: clientY - box.top - box.height / 2 };
|
|
775
|
+
};
|
|
776
|
+
const step = (delta) => setIndex((i) => (i + delta + items.length) % items.length);
|
|
777
|
+
useEffect6(() => {
|
|
778
|
+
const onKey = (event) => {
|
|
779
|
+
if (event.key === "Escape")
|
|
780
|
+
onClose();
|
|
781
|
+
else if (event.key === "ArrowLeft" && many)
|
|
782
|
+
step(-1);
|
|
783
|
+
else if (event.key === "ArrowRight" && many)
|
|
784
|
+
step(1);
|
|
785
|
+
else if (event.key === "+" || event.key === "=")
|
|
786
|
+
zoomTo((scale) => scale * 1.25, 0, 0);
|
|
787
|
+
else if (event.key === "-")
|
|
788
|
+
zoomTo((scale) => scale / 1.25, 0, 0);
|
|
789
|
+
else if (event.key === "0")
|
|
790
|
+
setView(FIT);
|
|
791
|
+
else
|
|
792
|
+
return;
|
|
793
|
+
event.stopPropagation();
|
|
794
|
+
event.preventDefault();
|
|
795
|
+
};
|
|
796
|
+
window.addEventListener("keydown", onKey, true);
|
|
797
|
+
return () => window.removeEventListener("keydown", onKey, true);
|
|
798
|
+
});
|
|
799
|
+
useEffect6(() => {
|
|
800
|
+
const box = stage.current;
|
|
801
|
+
if (!box)
|
|
802
|
+
return;
|
|
803
|
+
const onWheel = (event) => {
|
|
804
|
+
event.preventDefault();
|
|
805
|
+
const { px, py } = fromCentre(event.clientX, event.clientY);
|
|
806
|
+
zoomTo((scale) => scale * Math.exp(-event.deltaY * 2e-3), px, py);
|
|
807
|
+
};
|
|
808
|
+
box.addEventListener("wheel", onWheel, { passive: false });
|
|
809
|
+
return () => box.removeEventListener("wheel", onWheel);
|
|
810
|
+
}, [host]);
|
|
811
|
+
const onPointerDown = (event) => {
|
|
812
|
+
drag.current = { x: event.clientX, y: event.clientY, moved: false };
|
|
813
|
+
event.currentTarget.setPointerCapture(event.pointerId);
|
|
814
|
+
};
|
|
815
|
+
const onPointerMove = (event) => {
|
|
816
|
+
const held = drag.current;
|
|
817
|
+
if (!held)
|
|
818
|
+
return;
|
|
819
|
+
const dx = event.clientX - held.x;
|
|
820
|
+
const dy = event.clientY - held.y;
|
|
821
|
+
if (!held.moved && Math.hypot(dx, dy) < DRAG_SLOP)
|
|
822
|
+
return;
|
|
823
|
+
held.moved = true;
|
|
824
|
+
held.x = event.clientX;
|
|
825
|
+
held.y = event.clientY;
|
|
826
|
+
if (view.scale > 1)
|
|
827
|
+
setView((v) => ({ ...v, x: v.x + dx, y: v.y + dy }));
|
|
828
|
+
};
|
|
829
|
+
const onPointerUp = (event) => {
|
|
830
|
+
const held = drag.current;
|
|
831
|
+
drag.current = null;
|
|
832
|
+
if (!held || held.moved || broken)
|
|
833
|
+
return;
|
|
834
|
+
const { px, py } = fromCentre(event.clientX, event.clientY);
|
|
835
|
+
if (view.scale > 1)
|
|
836
|
+
setView(FIT);
|
|
837
|
+
else
|
|
838
|
+
zoomTo(() => CLICK_ZOOM, px, py);
|
|
839
|
+
};
|
|
840
|
+
if (!item)
|
|
841
|
+
return null;
|
|
842
|
+
const dialog = _jsxs11("div", { className: "hs-lightbox", role: "dialog", "aria-modal": "true", "aria-label": item.name, onClick: onClose, children: [_jsxs11("div", { className: "hs-lightbox-bar", onClick: (e) => e.stopPropagation(), children: [item.onSave && _jsx18("button", { type: "button", className: "hs-lightbox-button", "aria-label": "Save", onClick: item.onSave, children: _jsx18(DownloadGlyph, { size: 16 }) }), item.onOpen && _jsx18("button", { type: "button", className: "hs-lightbox-button", "aria-label": "Open", onClick: (e) => item.onOpen?.(e.currentTarget), children: _jsx18(ExternalGlyph, { size: 16 }) }), _jsx18("button", { ref: closer, type: "button", className: "hs-lightbox-button", "aria-label": "Close", onClick: onClose, children: _jsx18(CloseGlyph, { size: 16 }) })] }), many && _jsx18("button", { type: "button", className: "hs-lightbox-step", "data-side": "previous", "aria-label": "Previous picture", onClick: (e) => {
|
|
843
|
+
e.stopPropagation();
|
|
844
|
+
step(-1);
|
|
845
|
+
}, children: _jsx18(ChevronLeftGlyph, { size: 20 }) }), _jsxs11("div", { className: "hs-lightbox-body", onClick: (e) => e.stopPropagation(), children: [_jsx18("div", { ref: stage, className: "hs-lightbox-stage", "data-zoomed": view.scale > 1 ? "true" : "false", onPointerDown, onPointerMove, onPointerUp, children: broken ? _jsx18("span", { className: "hs-lightbox-broken", children: "This picture could not be loaded." }) : _jsx18("img", { src: item.src, alt: item.name, draggable: false, onError: () => setBroken(true), style: { transform: `translate(${view.x}px, ${view.y}px) scale(${view.scale})` } }) }), _jsxs11("span", { className: "hs-lightbox-caption", "aria-live": "polite", children: [item.name, many && ` (${index + 1} of ${items.length})`] }), item.note && _jsx18("div", { className: "hs-lightbox-note", children: item.note })] }), many && _jsx18("button", { type: "button", className: "hs-lightbox-step", "data-side": "next", "aria-label": "Next picture", onClick: (e) => {
|
|
846
|
+
e.stopPropagation();
|
|
847
|
+
step(1);
|
|
848
|
+
}, children: _jsx18(ChevronRightGlyph, { size: 20 }) })] });
|
|
849
|
+
return _jsxs11(_Fragment5, { children: [_jsx18("span", { ref: anchor, hidden: true }), host && createPortal2(dialog, host)] });
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
// ../ui/dist/Slider.js
|
|
853
|
+
import { jsx as _jsx19, jsxs as _jsxs12 } from "react/jsx-runtime";
|
|
854
|
+
function Slider({ value, onChange, min = 0, max = 1, step = 0.01, label, shown, disabled }) {
|
|
855
|
+
return _jsxs12("span", { className: "hs-slider", children: [_jsx19("input", { type: "range", className: "hs-range", "aria-label": label, "aria-valuetext": shown, min, max, step, value, disabled, onChange: (event) => onChange(Number(event.target.value)) }), shown !== void 0 && _jsx19("span", { className: "hs-slider-value", children: shown })] });
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
// ../ui/dist/Popover.js
|
|
859
|
+
import { jsx as _jsx20 } from "react/jsx-runtime";
|
|
860
|
+
import { useEffect as useEffect7, useLayoutEffect as useLayoutEffect5, useRef as useRef7, useState as useState4 } from "react";
|
|
861
|
+
import { createPortal as createPortal3 } from "react-dom";
|
|
862
|
+
import { autoUpdate as autoUpdate2, computePosition as computePosition2, flip as flip2, offset as offset2, shift as shift2, size as size2 } from "@floating-ui/dom";
|
|
863
|
+
var tabbable = (panel) => [...panel.querySelectorAll(FOCUSABLE)].filter((control) => control.tabIndex >= 0);
|
|
864
|
+
var FOCUSABLE = 'button:not(:disabled), [href], input:not(:disabled), select:not(:disabled), textarea:not(:disabled), [tabindex]:not([tabindex="-1"]), [contenteditable="true"]';
|
|
865
|
+
function Popover({ anchor, placement = "bottom-start", label, onDismiss, children }) {
|
|
866
|
+
const panel = useRef7(null);
|
|
867
|
+
const [root] = useState4(() => popupRoot(anchor));
|
|
868
|
+
const [pos, setPos] = useState4({ visibility: "hidden" });
|
|
869
|
+
const dismiss = useRef7(onDismiss);
|
|
870
|
+
dismiss.current = onDismiss;
|
|
871
|
+
useLayoutEffect5(() => {
|
|
872
|
+
const floating = panel.current;
|
|
873
|
+
let live = true;
|
|
874
|
+
const update = () => {
|
|
875
|
+
void computePosition2(anchor, floating, {
|
|
876
|
+
placement,
|
|
877
|
+
middleware: [
|
|
878
|
+
offset2(6),
|
|
879
|
+
flip2({ padding: 8 }),
|
|
880
|
+
shift2({ padding: 8 }),
|
|
881
|
+
size2({
|
|
882
|
+
padding: 8,
|
|
883
|
+
apply({ availableWidth, availableHeight, elements }) {
|
|
884
|
+
elements.floating.style.maxWidth = `${Math.max(0, availableWidth)}px`;
|
|
885
|
+
elements.floating.style.maxHeight = `${Math.max(0, availableHeight)}px`;
|
|
886
|
+
}
|
|
887
|
+
})
|
|
888
|
+
]
|
|
889
|
+
}).then(({ x, y }) => {
|
|
890
|
+
if (live)
|
|
891
|
+
setPos({ left: x, top: y, visibility: "visible" });
|
|
892
|
+
});
|
|
893
|
+
};
|
|
894
|
+
const cleanup = autoUpdate2(anchor, floating, update);
|
|
895
|
+
return () => {
|
|
896
|
+
live = false;
|
|
897
|
+
cleanup();
|
|
898
|
+
};
|
|
899
|
+
}, [anchor, placement]);
|
|
900
|
+
const shown = pos.visibility === "visible";
|
|
901
|
+
useLayoutEffect5(() => {
|
|
902
|
+
if (!shown)
|
|
903
|
+
return;
|
|
904
|
+
const floating = panel.current;
|
|
905
|
+
(floating.querySelector("[data-autofocus]") ?? tabbable(floating)[0] ?? floating).focus();
|
|
906
|
+
return () => {
|
|
907
|
+
if (floating.contains(document.activeElement) && anchor.isConnected)
|
|
908
|
+
anchor.focus();
|
|
909
|
+
};
|
|
910
|
+
}, [shown, anchor]);
|
|
911
|
+
const pressed = useRef7(null);
|
|
912
|
+
useEffect7(() => {
|
|
913
|
+
const outside = (event) => {
|
|
914
|
+
if (pressed.current !== event && !anchor.contains(event.target))
|
|
915
|
+
dismiss.current();
|
|
916
|
+
};
|
|
917
|
+
const blur = () => dismiss.current();
|
|
918
|
+
document.addEventListener("pointerdown", outside);
|
|
919
|
+
window.addEventListener("blur", blur);
|
|
920
|
+
return () => {
|
|
921
|
+
document.removeEventListener("pointerdown", outside);
|
|
922
|
+
window.removeEventListener("blur", blur);
|
|
923
|
+
};
|
|
924
|
+
}, [anchor]);
|
|
925
|
+
return createPortal3(_jsx20("div", { ref: panel, className: "hs-popover", role: "dialog", "aria-label": label, tabIndex: -1, style: pos, onPointerDown: (event) => {
|
|
926
|
+
pressed.current = event.nativeEvent;
|
|
927
|
+
}, onKeyDown: (event) => {
|
|
928
|
+
if (event.key === "Escape") {
|
|
929
|
+
event.preventDefault();
|
|
930
|
+
event.stopPropagation();
|
|
931
|
+
dismiss.current();
|
|
932
|
+
return;
|
|
933
|
+
}
|
|
934
|
+
if (event.key !== "Tab")
|
|
935
|
+
return;
|
|
936
|
+
const controls = tabbable(event.currentTarget);
|
|
937
|
+
if (controls.length === 0) {
|
|
938
|
+
event.preventDefault();
|
|
939
|
+
return;
|
|
940
|
+
}
|
|
941
|
+
const first = controls[0];
|
|
942
|
+
const last = controls[controls.length - 1];
|
|
943
|
+
const at = document.activeElement;
|
|
944
|
+
if (event.shiftKey && (at === first || at === event.currentTarget)) {
|
|
945
|
+
event.preventDefault();
|
|
946
|
+
last.focus();
|
|
947
|
+
} else if (!event.shiftKey && at === last) {
|
|
948
|
+
event.preventDefault();
|
|
949
|
+
first.focus();
|
|
950
|
+
}
|
|
951
|
+
}, children }), root);
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
// ../ui/dist/Toast.js
|
|
955
|
+
import { jsx as _jsx21, jsxs as _jsxs13 } from "react/jsx-runtime";
|
|
956
|
+
import { useEffect as useEffect8, useLayoutEffect as useLayoutEffect6, useRef as useRef8, useState as useState5 } from "react";
|
|
957
|
+
import { createPortal as createPortal4 } from "react-dom";
|
|
958
|
+
function Toast({ children, action, duration = 6e3, above, onClose }) {
|
|
959
|
+
const [root, setRoot] = useState5(null);
|
|
960
|
+
const place = useRef8(null);
|
|
961
|
+
const [held, setHeld] = useState5({ pointer: false, focus: false });
|
|
962
|
+
const [anchor, setAnchor] = useState5(null);
|
|
963
|
+
const close = useRef8(onClose);
|
|
964
|
+
close.current = onClose;
|
|
965
|
+
useLayoutEffect6(() => {
|
|
966
|
+
setRoot(place.current?.closest(".hs-shell") ?? document.body);
|
|
967
|
+
}, []);
|
|
968
|
+
useLayoutEffect6(() => {
|
|
969
|
+
if (!above)
|
|
970
|
+
return;
|
|
971
|
+
let frame = 0;
|
|
972
|
+
const measure = () => {
|
|
973
|
+
const element = above.current;
|
|
974
|
+
if (element) {
|
|
975
|
+
const box = element.getBoundingClientRect();
|
|
976
|
+
const bottom = element.ownerDocument.documentElement.clientHeight - box.top;
|
|
977
|
+
setAnchor((last) => last && last.bottom === bottom && last.left === box.left && last.width === box.width ? last : { bottom, left: box.left, width: box.width });
|
|
978
|
+
}
|
|
979
|
+
frame = requestAnimationFrame(measure);
|
|
980
|
+
};
|
|
981
|
+
measure();
|
|
982
|
+
return () => cancelAnimationFrame(frame);
|
|
983
|
+
}, [above]);
|
|
984
|
+
const waiting = !held.pointer && !held.focus;
|
|
985
|
+
useEffect8(() => {
|
|
986
|
+
if (!waiting)
|
|
987
|
+
return;
|
|
988
|
+
const timer = setTimeout(() => close.current(), duration);
|
|
989
|
+
return () => clearTimeout(timer);
|
|
990
|
+
}, [waiting, duration]);
|
|
991
|
+
return _jsx21("span", { ref: place, hidden: true, children: root && createPortal4(_jsx21("div", { className: "hs-toast-place", ...anchor && {
|
|
992
|
+
"data-above": "true",
|
|
993
|
+
style: {
|
|
994
|
+
bottom: `calc(${anchor.bottom}px + var(--space) * 4)`,
|
|
995
|
+
left: `${anchor.left}px`,
|
|
996
|
+
width: `${anchor.width}px`
|
|
997
|
+
}
|
|
998
|
+
}, children: _jsxs13("div", { className: "hs-toast", role: "status", "aria-live": "polite", onPointerEnter: () => setHeld((h) => ({ ...h, pointer: true })), onPointerLeave: () => setHeld((h) => ({ ...h, pointer: false })), onFocus: () => setHeld((h) => ({ ...h, focus: true })), onBlur: (event) => {
|
|
999
|
+
if (!event.currentTarget.contains(event.relatedTarget))
|
|
1000
|
+
setHeld((h) => ({ ...h, focus: false }));
|
|
1001
|
+
}, children: [_jsx21("span", { className: "hs-toast-text", children }), action && _jsx21(Button, { variant: "ghost", size: "sm", onClick: () => {
|
|
1002
|
+
action.onPress();
|
|
1003
|
+
close.current();
|
|
1004
|
+
}, children: action.label }), _jsx21(IconButton, { size: "sm", "aria-label": "Close", onClick: () => close.current(), children: _jsx21(CloseGlyph, {}) })] }) }), root) });
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
// ../ui/dist/DatePicker.js
|
|
1008
|
+
import { jsx as _jsx22, jsxs as _jsxs14, Fragment as _Fragment6 } from "react/jsx-runtime";
|
|
1009
|
+
import { useEffect as useEffect9, useMemo, useRef as useRef9, useState as useState6 } from "react";
|
|
1010
|
+
var pad = (n, width = 2) => String(n).padStart(width, "0");
|
|
1011
|
+
function instant(date) {
|
|
1012
|
+
const [year, month, day] = date.split("-").map(Number);
|
|
1013
|
+
return new Date(Date.UTC(year, month - 1, day));
|
|
1014
|
+
}
|
|
1015
|
+
function plain(at) {
|
|
1016
|
+
return `${pad(at.getUTCFullYear(), 4)}-${pad(at.getUTCMonth() + 1)}-${pad(at.getUTCDate())}`;
|
|
1017
|
+
}
|
|
1018
|
+
function addDays(date, days) {
|
|
1019
|
+
const at = instant(date);
|
|
1020
|
+
at.setUTCDate(at.getUTCDate() + days);
|
|
1021
|
+
return plain(at);
|
|
1022
|
+
}
|
|
1023
|
+
function addMonths(date, months) {
|
|
1024
|
+
const at = instant(date);
|
|
1025
|
+
const day = at.getUTCDate();
|
|
1026
|
+
at.setUTCDate(1);
|
|
1027
|
+
at.setUTCMonth(at.getUTCMonth() + months);
|
|
1028
|
+
const last = new Date(Date.UTC(at.getUTCFullYear(), at.getUTCMonth() + 1, 0)).getUTCDate();
|
|
1029
|
+
at.setUTCDate(Math.min(day, last));
|
|
1030
|
+
return plain(at);
|
|
1031
|
+
}
|
|
1032
|
+
var monthOf = (date) => `${date.slice(0, 8)}01`;
|
|
1033
|
+
function today() {
|
|
1034
|
+
const now = /* @__PURE__ */ new Date();
|
|
1035
|
+
return `${pad(now.getFullYear(), 4)}-${pad(now.getMonth() + 1)}-${pad(now.getDate())}`;
|
|
1036
|
+
}
|
|
1037
|
+
function firstDayOfWeek(locale) {
|
|
1038
|
+
return new Intl.Locale(locale).getWeekInfo().firstDay;
|
|
1039
|
+
}
|
|
1040
|
+
var STEPS = { ArrowLeft: -1, ArrowRight: 1, ArrowUp: -7, ArrowDown: 7 };
|
|
1041
|
+
function DateGrid({ value, onChange, locale, min, max }) {
|
|
1042
|
+
const now = today();
|
|
1043
|
+
const [focus, setFocus] = useState6(value ?? now);
|
|
1044
|
+
const month = monthOf(focus);
|
|
1045
|
+
const keyed = useRef9(false);
|
|
1046
|
+
const days = useRef9(/* @__PURE__ */ new Map());
|
|
1047
|
+
useEffect9(() => {
|
|
1048
|
+
if (value)
|
|
1049
|
+
setFocus(value);
|
|
1050
|
+
}, [value]);
|
|
1051
|
+
useEffect9(() => {
|
|
1052
|
+
if (!keyed.current)
|
|
1053
|
+
return;
|
|
1054
|
+
keyed.current = false;
|
|
1055
|
+
days.current.get(focus)?.focus();
|
|
1056
|
+
}, [focus]);
|
|
1057
|
+
const words = useMemo(() => ({
|
|
1058
|
+
month: new Intl.DateTimeFormat(locale, { month: "long", year: "numeric", timeZone: "UTC" }),
|
|
1059
|
+
day: new Intl.DateTimeFormat(locale, { day: "numeric", timeZone: "UTC" }),
|
|
1060
|
+
full: new Intl.DateTimeFormat(locale, { dateStyle: "full", timeZone: "UTC" }),
|
|
1061
|
+
narrow: new Intl.DateTimeFormat(locale, { weekday: "narrow", timeZone: "UTC" }),
|
|
1062
|
+
long: new Intl.DateTimeFormat(locale, { weekday: "long", timeZone: "UTC" })
|
|
1063
|
+
}), [locale]);
|
|
1064
|
+
const first = useMemo(() => firstDayOfWeek(locale), [locale]);
|
|
1065
|
+
const place = (date) => ((instant(date).getUTCDay() || 7) - first + 7) % 7;
|
|
1066
|
+
const start = addDays(month, -place(month));
|
|
1067
|
+
const weeks = Array.from({ length: 6 }, (_, week) => Array.from({ length: 7 }, (_2, day) => addDays(start, week * 7 + day)));
|
|
1068
|
+
const allowed = (date) => (!min || date >= min) && (!max || date <= max);
|
|
1069
|
+
const key = (event, date) => {
|
|
1070
|
+
const next = event.key in STEPS ? addDays(date, STEPS[event.key]) : event.key === "Home" ? addDays(date, -place(date)) : event.key === "End" ? addDays(date, 6 - place(date)) : event.key === "PageUp" ? addMonths(date, event.shiftKey ? -12 : -1) : event.key === "PageDown" ? addMonths(date, event.shiftKey ? 12 : 1) : null;
|
|
1071
|
+
if (next === null)
|
|
1072
|
+
return;
|
|
1073
|
+
event.preventDefault();
|
|
1074
|
+
keyed.current = true;
|
|
1075
|
+
setFocus(min && next < min ? min : max && next > max ? max : next);
|
|
1076
|
+
};
|
|
1077
|
+
return _jsxs14("div", { className: "hs-date-grid", children: [_jsxs14("div", { className: "hs-date-grid-head", children: [_jsx22("span", { className: "hs-date-grid-month", "aria-live": "polite", children: words.month.format(instant(month)) }), _jsx22(IconButton, { size: "sm", "aria-label": "Previous month", onClick: () => setFocus(addMonths(focus, -1)), children: _jsx22(ChevronLeftGlyph, {}) }), _jsx22(IconButton, { size: "sm", "aria-label": "Next month", onClick: () => setFocus(addMonths(focus, 1)), children: _jsx22(ChevronRightGlyph, {}) })] }), _jsxs14("div", { className: "hs-date-grid-days", role: "grid", "aria-label": words.month.format(instant(month)), children: [_jsx22("div", { role: "row", className: "hs-date-grid-row", children: weeks[0].map((day) => _jsx22("span", { className: "hs-date-grid-weekday", role: "columnheader", "aria-label": words.long.format(instant(day)), children: words.narrow.format(instant(day)) }, day)) }), weeks.map((week) => _jsx22("div", { role: "row", className: "hs-date-grid-row", children: week.map((day) => _jsx22("button", { ref: (button) => {
|
|
1078
|
+
if (button)
|
|
1079
|
+
days.current.set(day, button);
|
|
1080
|
+
else
|
|
1081
|
+
days.current.delete(day);
|
|
1082
|
+
}, type: "button", role: "gridcell", className: "hs-date-grid-day", "aria-label": words.full.format(instant(day)), "aria-selected": day === value, "aria-current": day === now ? "date" : void 0, "data-today": day === now, "data-outside": monthOf(day) !== month, "data-autofocus": day === focus || void 0, tabIndex: day === focus ? 0 : -1, disabled: !allowed(day), onClick: () => {
|
|
1083
|
+
setFocus(day);
|
|
1084
|
+
onChange(day);
|
|
1085
|
+
}, onKeyDown: (event) => key(event, day), children: words.day.format(instant(day)) }, day)) }, week[0]))] })] });
|
|
1086
|
+
}
|
|
1087
|
+
function DatePicker({ value, onChange, locale, min, max, label, placeholder, disabled }) {
|
|
1088
|
+
const [anchor, setAnchor] = useState6(null);
|
|
1089
|
+
const shown = useMemo(() => new Intl.DateTimeFormat(locale, { dateStyle: "medium", timeZone: "UTC" }), [locale]);
|
|
1090
|
+
return _jsxs14(_Fragment6, { children: [_jsx22("button", { type: "button", className: "hs-input hs-picker-field", "aria-label": label, "aria-haspopup": "dialog", "aria-expanded": anchor !== null, "data-empty": value === null, disabled, onClick: (event) => setAnchor(anchor ? null : event.currentTarget), children: value ? shown.format(instant(value)) : placeholder }), anchor && _jsx22(Popover, { anchor, label, onDismiss: () => setAnchor(null), children: _jsx22(DateGrid, { value, locale, ...min && { min }, ...max && { max }, onChange: (date) => {
|
|
1091
|
+
onChange(date);
|
|
1092
|
+
setAnchor(null);
|
|
1093
|
+
} }) })] });
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
// ../ui/dist/TimePicker.js
|
|
1097
|
+
import { jsx as _jsx23, Fragment as _Fragment7, jsxs as _jsxs15 } from "react/jsx-runtime";
|
|
1098
|
+
import { useMemo as useMemo2, useState as useState7 } from "react";
|
|
1099
|
+
var pad2 = (n) => String(n).padStart(2, "0");
|
|
1100
|
+
function TimePicker({ value, onChange, locale, label, step = 15, placeholder, disabled }) {
|
|
1101
|
+
const [anchor, setAnchor] = useState7(null);
|
|
1102
|
+
const shown = useMemo2(() => new Intl.DateTimeFormat(locale, { hour: "numeric", minute: "2-digit", timeZone: "UTC" }), [locale]);
|
|
1103
|
+
const words = (time) => {
|
|
1104
|
+
const [hours, minutes] = time.split(":").map(Number);
|
|
1105
|
+
return shown.format(new Date(Date.UTC(1970, 0, 1, hours, minutes)));
|
|
1106
|
+
};
|
|
1107
|
+
const times = useMemo2(() => {
|
|
1108
|
+
const steps = Array.from({ length: Math.ceil(1440 / step) }, (_, i) => {
|
|
1109
|
+
const minutes = i * step;
|
|
1110
|
+
return `${pad2(Math.floor(minutes / 60))}:${pad2(minutes % 60)}`;
|
|
1111
|
+
});
|
|
1112
|
+
return value && !steps.includes(value) ? [...steps, value].sort() : steps;
|
|
1113
|
+
}, [step, value]);
|
|
1114
|
+
return _jsxs15(_Fragment7, { children: [_jsx23("button", { type: "button", className: "hs-input hs-picker-field", "aria-label": label, "aria-haspopup": "menu", "aria-expanded": anchor !== null, "data-empty": value === null, disabled, onClick: (event) => setAnchor(anchor ? null : { key: "time", element: event.currentTarget }), children: value ? words(value) : placeholder }), anchor && _jsx23(MenuSurface, { anchor, fit: true, keyboard: true, maxHeight: 280, onDismiss: () => setAnchor(null), children: times.map((time) => _jsx23(MItem, { label: words(time), checked: time === value, onClick: () => {
|
|
1115
|
+
onChange(time);
|
|
1116
|
+
setAnchor(null);
|
|
1117
|
+
anchor.element.focus();
|
|
1118
|
+
} }, time)) })] });
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
// ../ui/dist/SwatchPicker.js
|
|
1122
|
+
import { jsx as _jsx24 } from "react/jsx-runtime";
|
|
1123
|
+
import { useRef as useRef10 } from "react";
|
|
1124
|
+
var SWATCHES = [
|
|
1125
|
+
"rose",
|
|
1126
|
+
"ember",
|
|
1127
|
+
"amber",
|
|
1128
|
+
"sun",
|
|
1129
|
+
"lime",
|
|
1130
|
+
"moss",
|
|
1131
|
+
"jade",
|
|
1132
|
+
"sky",
|
|
1133
|
+
"ocean",
|
|
1134
|
+
"indigo",
|
|
1135
|
+
"violet",
|
|
1136
|
+
"plum",
|
|
1137
|
+
"slate"
|
|
1138
|
+
];
|
|
1139
|
+
var NAMES = {
|
|
1140
|
+
rose: "Rose",
|
|
1141
|
+
ember: "Ember",
|
|
1142
|
+
amber: "Amber",
|
|
1143
|
+
sun: "Sun",
|
|
1144
|
+
lime: "Lime",
|
|
1145
|
+
moss: "Moss",
|
|
1146
|
+
jade: "Jade",
|
|
1147
|
+
sky: "Sky",
|
|
1148
|
+
ocean: "Ocean",
|
|
1149
|
+
indigo: "Indigo",
|
|
1150
|
+
violet: "Violet",
|
|
1151
|
+
plum: "Plum",
|
|
1152
|
+
slate: "Slate"
|
|
1153
|
+
};
|
|
1154
|
+
var STEPS2 = { ArrowRight: 1, ArrowDown: 1, ArrowLeft: -1, ArrowUp: -1 };
|
|
1155
|
+
function SwatchPicker({ value, onChange, label }) {
|
|
1156
|
+
const dots = useRef10([]);
|
|
1157
|
+
const tips = useFloatingTips();
|
|
1158
|
+
const step = (event, index) => {
|
|
1159
|
+
const by = STEPS2[event.key];
|
|
1160
|
+
if (by === void 0)
|
|
1161
|
+
return;
|
|
1162
|
+
event.preventDefault();
|
|
1163
|
+
const next = (index + by + SWATCHES.length) % SWATCHES.length;
|
|
1164
|
+
onChange(SWATCHES[next]);
|
|
1165
|
+
dots.current[next]?.focus();
|
|
1166
|
+
};
|
|
1167
|
+
return _jsx24("div", { className: "hs-swatch-picker", role: "radiogroup", "aria-label": label, children: SWATCHES.map((swatch, index) => {
|
|
1168
|
+
const tip = tips(swatch, NAMES[swatch]);
|
|
1169
|
+
return _jsx24("button", { ref: (dot) => {
|
|
1170
|
+
dots.current[index] = dot;
|
|
1171
|
+
}, type: "button", role: "radio", "aria-checked": swatch === value, "aria-label": NAMES[swatch], tabIndex: swatch === value ? 0 : -1, className: "hs-swatch-choice", "data-swatch": swatch, onClick: () => onChange(swatch), onKeyDown: (event) => step(event, index), ...tip.hover, children: tip.tip }, swatch);
|
|
1172
|
+
}) });
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
// ../ui/dist/PersonMark.js
|
|
1176
|
+
import { jsx as _jsx25 } from "react/jsx-runtime";
|
|
1177
|
+
import { useEffect as useEffect10, useState as useState8 } from "react";
|
|
1178
|
+
function initials(name) {
|
|
1179
|
+
const trimmed = name.trim();
|
|
1180
|
+
const words = (/\s/.test(trimmed) ? trimmed : trimmed.split("@")[0]).split(/[\s._-]+/).filter(Boolean);
|
|
1181
|
+
const ends = words.length > 1 ? [words[0], words[words.length - 1]] : words;
|
|
1182
|
+
const segmenter = new Intl.Segmenter();
|
|
1183
|
+
return ends.map((word) => segmenter.segment(word)[Symbol.iterator]().next().value?.segment ?? "").join("").toLocaleUpperCase();
|
|
1184
|
+
}
|
|
1185
|
+
function hueOf(name) {
|
|
1186
|
+
let hash = 2166136261;
|
|
1187
|
+
for (const char of name.toLocaleLowerCase()) {
|
|
1188
|
+
hash = Math.imul(hash ^ char.codePointAt(0), 16777619);
|
|
1189
|
+
}
|
|
1190
|
+
return SWATCHES[(hash >>> 0) % 12];
|
|
1191
|
+
}
|
|
1192
|
+
function PersonMark({ name, picture, size: size3 = "md", swatch }) {
|
|
1193
|
+
const [broken, setBroken] = useState8(false);
|
|
1194
|
+
useEffect10(() => setBroken(false), [picture]);
|
|
1195
|
+
return _jsx25("span", { className: "hs-person-mark", "data-size": size3, "data-swatch": swatch ?? hueOf(name), role: "img", "aria-label": name, children: picture && !broken ? _jsx25("img", { src: picture, alt: "", onError: () => setBroken(true) }) : initials(name) });
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1198
|
+
// ../ui/dist/ModelAvatar.js
|
|
1199
|
+
import { jsx as _jsx27, jsxs as _jsxs16 } from "react/jsx-runtime";
|
|
1200
|
+
import { createContext as createContext4, useContext as useContext3, useState as useState9 } from "react";
|
|
1201
|
+
|
|
1202
|
+
// ../ui/dist/brand-marks.js
|
|
1203
|
+
import { jsx as _jsx26 } from "react/jsx-runtime";
|
|
1204
|
+
|
|
1205
|
+
// ../ui/dist/brand-svg.js
|
|
1206
|
+
var BRAND_SVG = {
|
|
1207
|
+
qwen: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M12.604 1.34c.393.69.784 1.382 1.174 2.075a.18.18 0 00.157.091h5.552c.174 0 .322.11.446.327l1.454 2.57c.19.337.24.478.024.837-.26.43-.513.864-.76 1.3l-.367.658c-.106.196-.223.28-.04.512l2.652 4.637c.172.301.111.494-.043.77-.437.785-.882 1.564-1.335 2.34-.159.272-.352.375-.68.37-.777-.016-1.552-.01-2.327.016a.099.099 0 00-.081.05 575.097 575.097 0 01-2.705 4.74c-.169.293-.38.363-.725.364-.997.003-2.002.004-3.017.002a.537.537 0 01-.465-.271l-1.335-2.323a.09.09 0 00-.083-.049H4.982c-.285.03-.553-.001-.805-.092l-1.603-2.77a.543.543 0 01-.002-.54l1.207-2.12a.198.198 0 000-.197 550.951 550.951 0 01-1.875-3.272l-.79-1.395c-.16-.31-.173-.496.095-.965.465-.813.927-1.625 1.387-2.436.132-.234.304-.334.584-.335a338.3 338.3 0 012.589-.001.124.124 0 00.107-.063l2.806-4.895a.488.488 0 01.422-.246c.524-.001 1.053 0 1.583-.006L11.704 1c.341-.003.724.032.9.34zm-3.432.403a.06.06 0 00-.052.03L6.254 6.788a.157.157 0 01-.135.078H3.253c-.056 0-.07.025-.041.074l5.81 10.156c.025.042.013.062-.034.063l-2.795.015a.218.218 0 00-.2.116l-1.32 2.31c-.044.078-.021.118.068.118l5.716.008c.046 0 .08.02.104.061l1.403 2.454c.046.081.092.082.139 0l5.006-8.76.783-1.382a.055.055 0 01.096 0l1.424 2.53a.122.122 0 00.107.062l2.763-.02a.04.04 0 00.035-.02.041.041 0 000-.04l-2.9-5.086a.108.108 0 010-.113l.293-.507 1.12-1.977c.024-.041.012-.062-.035-.062H9.2c-.059 0-.073-.026-.043-.077l1.434-2.505a.107.107 0 000-.114L9.225 1.774a.06.06 0 00-.053-.031zm6.29 8.02c.046 0 .058.02.034.06l-.832 1.465-2.613 4.585a.056.056 0 01-.05.029.058.058 0 01-.05-.029L8.498 9.841c-.02-.034-.01-.052.028-.054l.216-.012 6.722-.012z" fill="url(#lobe-icons-qwen-_R_0_)" fill-rule="nonzero"></path><defs><linearGradient id="lobe-icons-qwen-_R_0_" x1="0%" x2="100%" y1="0%" y2="0%"><stop offset="0%" stop-color="#6336E7" stop-opacity=".84"></stop><stop offset="100%" stop-color="#6F69F7" stop-opacity=".84"></stop></linearGradient></defs></svg>',
|
|
1208
|
+
meta: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M6.897 4h-.024l-.031 2.615h.022c1.715 0 3.046 1.357 5.94 6.246l.175.297.012.02 1.62-2.438-.012-.019a48.763 48.763 0 00-1.098-1.716 28.01 28.01 0 00-1.175-1.629C10.413 4.932 8.812 4 6.896 4z" fill="url(#lobe-icons-meta-0-_R_0_)"></path><path d="M6.873 4C4.95 4.01 3.247 5.258 2.02 7.17a4.352 4.352 0 00-.01.017l2.254 1.231.011-.017c.718-1.083 1.61-1.774 2.568-1.785h.021L6.896 4h-.023z" fill="url(#lobe-icons-meta-1-_R_0_)"></path><path d="M2.019 7.17l-.011.017C1.2 8.447.598 9.995.274 11.664l-.005.022 2.534.6.004-.022c.27-1.467.786-2.828 1.456-3.845l.011-.017L2.02 7.17z" fill="url(#lobe-icons-meta-2-_R_0_)"></path><path d="M2.807 12.264l-2.533-.6-.005.022c-.177.918-.267 1.851-.269 2.786v.023l2.598.233v-.023a12.591 12.591 0 01.21-2.44z" fill="url(#lobe-icons-meta-3-_R_0_)"></path><path d="M2.677 15.537a5.462 5.462 0 01-.079-.813v-.022L0 14.468v.024a8.89 8.89 0 00.146 1.652l2.535-.585a4.106 4.106 0 01-.004-.022z" fill="url(#lobe-icons-meta-4-_R_0_)"></path><path d="M3.27 16.89c-.284-.31-.484-.756-.589-1.328l-.004-.021-2.535.585.004.021c.192 1.01.568 1.85 1.106 2.487l.014.017 2.018-1.745a2.106 2.106 0 01-.015-.016z" fill="url(#lobe-icons-meta-5-_R_0_)"></path><path d="M10.78 9.654c-1.528 2.35-2.454 3.825-2.454 3.825-2.035 3.2-2.739 3.917-3.871 3.917a1.545 1.545 0 01-1.186-.508l-2.017 1.744.014.017C2.01 19.518 3.058 20 4.356 20c1.963 0 3.374-.928 5.884-5.33l1.766-3.13a41.283 41.283 0 00-1.227-1.886z" fill="#0082FB"></path><path d="M13.502 5.946l-.016.016c-.4.43-.786.908-1.16 1.416.378.483.768 1.024 1.175 1.63.48-.743.928-1.345 1.367-1.807l.016-.016-1.382-1.24z" fill="url(#lobe-icons-meta-6-_R_0_)"></path><path d="M20.918 5.713C19.853 4.633 18.583 4 17.225 4c-1.432 0-2.637.787-3.723 1.944l-.016.016 1.382 1.24.016-.017c.715-.747 1.408-1.12 2.176-1.12.826 0 1.6.39 2.27 1.075l.015.016 1.589-1.425-.016-.016z" fill="#0082FB"></path><path d="M23.998 14.125c-.06-3.467-1.27-6.566-3.064-8.396l-.016-.016-1.588 1.424.015.016c1.35 1.392 2.277 3.98 2.361 6.971v.023h2.292v-.022z" fill="url(#lobe-icons-meta-7-_R_0_)"></path><path d="M23.998 14.15v-.023h-2.292v.022c.004.14.006.282.006.424 0 .815-.121 1.474-.368 1.95l-.011.022 1.708 1.782.013-.02c.62-.96.946-2.293.946-3.91 0-.083 0-.165-.002-.247z" fill="url(#lobe-icons-meta-8-_R_0_)"></path><path d="M21.344 16.52l-.011.02c-.214.402-.519.67-.917.787l.778 2.462a3.493 3.493 0 00.438-.182 3.558 3.558 0 001.366-1.218l.044-.065.012-.02-1.71-1.784z" fill="url(#lobe-icons-meta-9-_R_0_)"></path><path d="M19.92 17.393c-.262 0-.492-.039-.718-.14l-.798 2.522c.449.153.927.222 1.46.222.492 0 .943-.073 1.352-.215l-.78-2.462c-.167.05-.341.075-.517.073z" fill="url(#lobe-icons-meta-10-_R_0_)"></path><path d="M18.323 16.534l-.014-.017-1.836 1.914.016.017c.637.682 1.246 1.105 1.937 1.337l.797-2.52c-.291-.125-.573-.353-.9-.731z" fill="url(#lobe-icons-meta-11-_R_0_)"></path><path d="M18.309 16.515c-.55-.642-1.232-1.712-2.303-3.44l-1.396-2.336-.011-.02-1.62 2.438.012.02.989 1.668c.959 1.61 1.74 2.774 2.493 3.585l.016.016 1.834-1.914a2.353 2.353 0 01-.014-.017z" fill="url(#lobe-icons-meta-12-_R_0_)"></path><defs><linearGradient id="lobe-icons-meta-0-_R_0_" x1="75.897%" x2="26.312%" y1="89.199%" y2="12.194%"><stop offset=".06%" stop-color="#0867DF"></stop><stop offset="45.39%" stop-color="#0668E1"></stop><stop offset="85.91%" stop-color="#0064E0"></stop></linearGradient><linearGradient id="lobe-icons-meta-1-_R_0_" x1="21.67%" x2="97.068%" y1="75.874%" y2="23.985%"><stop offset="13.23%" stop-color="#0064DF"></stop><stop offset="99.88%" stop-color="#0064E0"></stop></linearGradient><linearGradient id="lobe-icons-meta-2-_R_0_" x1="38.263%" x2="60.895%" y1="89.127%" y2="16.131%"><stop offset="1.47%" stop-color="#0072EC"></stop><stop offset="68.81%" stop-color="#0064DF"></stop></linearGradient><linearGradient id="lobe-icons-meta-3-_R_0_" x1="47.032%" x2="52.15%" y1="90.19%" y2="15.745%"><stop offset="7.31%" stop-color="#007CF6"></stop><stop offset="99.43%" stop-color="#0072EC"></stop></linearGradient><linearGradient id="lobe-icons-meta-4-_R_0_" x1="52.155%" x2="47.591%" y1="58.301%" y2="37.004%"><stop offset="7.31%" stop-color="#007FF9"></stop><stop offset="100%" stop-color="#007CF6"></stop></linearGradient><linearGradient id="lobe-icons-meta-5-_R_0_" x1="37.689%" x2="61.961%" y1="12.502%" y2="63.624%"><stop offset="7.31%" stop-color="#007FF9"></stop><stop offset="100%" stop-color="#0082FB"></stop></linearGradient><linearGradient id="lobe-icons-meta-6-_R_0_" x1="34.808%" x2="62.313%" y1="68.859%" y2="23.174%"><stop offset="27.99%" stop-color="#007FF8"></stop><stop offset="91.41%" stop-color="#0082FB"></stop></linearGradient><linearGradient id="lobe-icons-meta-7-_R_0_" x1="43.762%" x2="57.602%" y1="6.235%" y2="98.514%"><stop offset="0%" stop-color="#0082FB"></stop><stop offset="99.95%" stop-color="#0081FA"></stop></linearGradient><linearGradient id="lobe-icons-meta-8-_R_0_" x1="60.055%" x2="39.88%" y1="4.661%" y2="69.077%"><stop offset="6.19%" stop-color="#0081FA"></stop><stop offset="100%" stop-color="#0080F9"></stop></linearGradient><linearGradient id="lobe-icons-meta-9-_R_0_" x1="30.282%" x2="61.081%" y1="59.32%" y2="33.244%"><stop offset="0%" stop-color="#027AF3"></stop><stop offset="100%" stop-color="#0080F9"></stop></linearGradient><linearGradient id="lobe-icons-meta-10-_R_0_" x1="20.433%" x2="82.112%" y1="50.001%" y2="50.001%"><stop offset="0%" stop-color="#0377EF"></stop><stop offset="99.94%" stop-color="#0279F1"></stop></linearGradient><linearGradient id="lobe-icons-meta-11-_R_0_" x1="40.303%" x2="72.394%" y1="35.298%" y2="57.811%"><stop offset=".19%" stop-color="#0471E9"></stop><stop offset="100%" stop-color="#0377EF"></stop></linearGradient><linearGradient id="lobe-icons-meta-12-_R_0_" x1="32.254%" x2="68.003%" y1="19.719%" y2="84.908%"><stop offset="27.65%" stop-color="#0867DF"></stop><stop offset="100%" stop-color="#0471E9"></stop></linearGradient></defs></svg>',
|
|
1209
|
+
google: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M23 12.245c0-.905-.075-1.565-.236-2.25h-10.54v4.083h6.186c-.124 1.014-.797 2.542-2.294 3.569l-.021.136 3.332 2.53.23.022C21.779 18.417 23 15.593 23 12.245z" fill="#4285F4"></path><path d="M12.225 23c3.03 0 5.574-.978 7.433-2.665l-3.542-2.688c-.948.648-2.22 1.1-3.891 1.1a6.745 6.745 0 01-6.386-4.572l-.132.011-3.465 2.628-.045.124C4.043 20.531 7.835 23 12.225 23z" fill="#34A853"></path><path d="M5.84 14.175A6.65 6.65 0 015.463 12c0-.758.138-1.491.361-2.175l-.006-.147-3.508-2.67-.115.054A10.831 10.831 0 001 12c0 1.772.436 3.447 1.197 4.938l3.642-2.763z" fill="#FBBC05"></path><path d="M12.225 5.253c2.108 0 3.529.892 4.34 1.638l3.167-3.031C17.787 2.088 15.255 1 12.225 1 7.834 1 4.043 3.469 2.197 7.062l3.63 2.763a6.77 6.77 0 016.398-4.572z" fill="#EB4335"></path></svg>',
|
|
1210
|
+
gemini: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z" fill="#3186FF"></path><path d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z" fill="url(#lobe-icons-gemini-0-_R_0_)"></path><path d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z" fill="url(#lobe-icons-gemini-1-_R_0_)"></path><path d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z" fill="url(#lobe-icons-gemini-2-_R_0_)"></path><defs><linearGradient gradientUnits="userSpaceOnUse" id="lobe-icons-gemini-0-_R_0_" x1="7" x2="11" y1="15.5" y2="12"><stop stop-color="#08B962"></stop><stop offset="1" stop-color="#08B962" stop-opacity="0"></stop></linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="lobe-icons-gemini-1-_R_0_" x1="8" x2="11.5" y1="5.5" y2="11"><stop stop-color="#F94543"></stop><stop offset="1" stop-color="#F94543" stop-opacity="0"></stop></linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="lobe-icons-gemini-2-_R_0_" x1="3.5" x2="17.5" y1="13.5" y2="12"><stop stop-color="#FABC12"></stop><stop offset=".46" stop-color="#FABC12" stop-opacity="0"></stop></linearGradient></defs></svg>',
|
|
1211
|
+
mistral: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M3.428 3.4h3.429v3.428H3.428V3.4zm13.714 0h3.43v3.428h-3.43V3.4z" fill="gold"></path><path d="M3.428 6.828h6.857v3.429H3.429V6.828zm10.286 0h6.857v3.429h-6.857V6.828z" fill="#FFAF00"></path><path d="M3.428 10.258h17.144v3.428H3.428v-3.428z" fill="#FF8205"></path><path d="M3.428 13.686h3.429v3.428H3.428v-3.428zm6.858 0h3.429v3.428h-3.429v-3.428zm6.856 0h3.43v3.428h-3.43v-3.428z" fill="#FA500F"></path><path d="M0 17.114h10.286v3.429H0v-3.429zm13.714 0H24v3.429H13.714v-3.429z" fill="#E10500"></path></svg>',
|
|
1212
|
+
nvidia: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M10.212 8.976V7.62c.127-.01.256-.017.388-.021 3.596-.117 5.957 3.184 5.957 3.184s-2.548 3.647-5.282 3.647a3.227 3.227 0 01-1.063-.175v-4.109c1.4.174 1.681.812 2.523 2.258l1.873-1.627a4.905 4.905 0 00-3.67-1.846 6.594 6.594 0 00-.729.044m0-4.476v2.025c.13-.01.259-.019.388-.024 5.002-.174 8.261 4.226 8.261 4.226s-3.743 4.69-7.643 4.69c-.338 0-.675-.031-1.007-.092v1.25c.278.038.558.057.838.057 3.629 0 6.253-1.91 8.794-4.169.421.347 2.146 1.193 2.501 1.564-2.416 2.083-8.048 3.763-11.24 3.763-.308 0-.603-.02-.894-.048V19.5H24v-15H10.21zm0 9.756v1.068c-3.356-.616-4.287-4.21-4.287-4.21a7.173 7.173 0 014.287-2.138v1.172h-.005a3.182 3.182 0 00-2.502 1.178s.615 2.276 2.507 2.931m-5.961-3.3c1.436-1.935 3.604-3.148 5.961-3.336V6.523C5.81 6.887 2 10.723 2 10.723s2.158 6.427 8.21 7.015v-1.166C5.77 16 4.25 10.958 4.25 10.958h-.002z" fill="#74B71B" fill-rule="nonzero"></path></svg>',
|
|
1213
|
+
microsoft: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M11.49 2H2v9.492h9.492V2h-.002z" fill="#F25022"></path><path d="M22 2h-9.492v9.492H22V2z" fill="#7FBA00"></path><path d="M11.49 12.508H2V22h9.492v-9.492h-.002z" fill="#00A4EF"></path><path d="M22 12.508h-9.492V22H22v-9.492z" fill="#FFB900"></path></svg>',
|
|
1214
|
+
deepseek: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M23.748 4.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434 1.202-.422 1.84.027 1.436.633 2.58 1.838 3.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526 5.526 0 01-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365 11.365 0 00-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055 3.055 0 01-.465.137 9.597 9.597 0 00-2.883-.102c-1.885.21-3.39 1.102-4.497 2.623C.082 8.606-.231 10.684.152 12.85c.403 2.284 1.569 4.175 3.36 5.653 1.858 1.533 3.997 2.284 6.438 2.14 1.482-.085 3.133-.284 4.994-1.86.47.234.962.327 1.78.397.63.059 1.236-.03 1.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926 1.096-1.296 2.746-2.642 3.392-7.003.05-.347.007-.565 0-.845-.004-.17.035-.237.23-.256a4.173 4.173 0 001.545-.475c1.396-.763 1.96-2.015 2.093-3.517.02-.23-.004-.467-.247-.588zM11.581 18c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696 4.696 0 011.529-.039c2.132.312 3.946 1.265 5.468 2.774.868.86 1.525 1.887 2.202 2.891.72 1.066 1.494 2.082 2.48 2.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306 0 01.415-.287.302.302 0 01.2.288.306.306 0 01-.31.307.303.303 0 01-.304-.308zm3.11 1.596c-.2.081-.399.151-.59.16a1.245 1.245 0 01-.798-.254c-.274-.23-.47-.358-.552-.758a1.73 1.73 0 01.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559 0 01-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136 1.146.016.352.144.618.408 1.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z" fill="#4D6BFE"></path></svg>',
|
|
1215
|
+
openai: '<svg viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd" style="display:block;width:100%;height:100%"><path d="M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z"></path></svg>',
|
|
1216
|
+
codex: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M19.503 0H4.496A4.496 4.496 0 000 4.496v15.007A4.496 4.496 0 004.496 24h15.007A4.496 4.496 0 0024 19.503V4.496A4.496 4.496 0 0019.503 0z" fill="#fff"></path><path d="M9.064 3.344a4.578 4.578 0 012.285-.312c1 .115 1.891.54 2.673 1.275.01.01.024.017.037.021a.09.09 0 00.043 0 4.55 4.55 0 013.046.275l.047.022.116.057a4.581 4.581 0 012.188 2.399c.209.51.313 1.041.315 1.595a4.24 4.24 0 01-.134 1.223.123.123 0 00.03.115c.594.607.988 1.33 1.183 2.17.289 1.425-.007 2.71-.887 3.854l-.136.166a4.548 4.548 0 01-2.201 1.388.123.123 0 00-.081.076c-.191.551-.383 1.023-.74 1.494-.9 1.187-2.222 1.846-3.711 1.838-1.187-.006-2.239-.44-3.157-1.302a.107.107 0 00-.105-.024c-.388.125-.78.143-1.204.138a4.441 4.441 0 01-1.945-.466 4.544 4.544 0 01-1.61-1.335c-.152-.202-.303-.392-.414-.617a5.81 5.81 0 01-.37-.961 4.582 4.582 0 01-.014-2.298.124.124 0 00.006-.056.085.085 0 00-.027-.048 4.467 4.467 0 01-1.034-1.651 3.896 3.896 0 01-.251-1.192 5.189 5.189 0 01.141-1.6c.337-1.112.982-1.985 1.933-2.618.212-.141.413-.251.601-.33.215-.089.43-.164.646-.227a.098.098 0 00.065-.066 4.51 4.51 0 01.829-1.615 4.535 4.535 0 011.837-1.388zm3.482 10.565a.637.637 0 000 1.272h3.636a.637.637 0 100-1.272h-3.636zM8.462 9.23a.637.637 0 00-1.106.631l1.272 2.224-1.266 2.136a.636.636 0 101.095.649l1.454-2.455a.636.636 0 00.005-.64L8.462 9.23z" fill="url(#lobe-icons-codex-_R_0_)"></path><defs><linearGradient gradientUnits="userSpaceOnUse" id="lobe-icons-codex-_R_0_" x1="12" x2="12" y1="3" y2="21"><stop stop-color="#B1A7FF"></stop><stop offset=".5" stop-color="#7A9DFF"></stop><stop offset="1" stop-color="#3941FF"></stop></linearGradient></defs></svg>',
|
|
1217
|
+
anthropic: '<svg viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd" style="display:block;width:100%;height:100%"><path d="M13.827 3.52h3.603L24 20h-3.603l-6.57-16.48zm-7.258 0h3.767L16.906 20h-3.674l-1.343-3.461H5.017l-1.344 3.46H0L6.57 3.522zm4.132 9.959L8.453 7.687 6.205 13.48H10.7z"></path></svg>',
|
|
1218
|
+
claude: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z" fill="#D97757" fill-rule="nonzero"></path></svg>',
|
|
1219
|
+
cursor: '<svg viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd" style="display:block;width:100%;height:100%"><path d="M22.106 5.68L12.5.135a.998.998 0 00-.998 0L1.893 5.68a.84.84 0 00-.419.726v11.186c0 .3.16.577.42.727l9.607 5.547a.999.999 0 00.998 0l9.608-5.547a.84.84 0 00.42-.727V6.407a.84.84 0 00-.42-.726zm-.603 1.176L12.228 22.92c-.063.108-.228.064-.228-.061V12.34a.59.59 0 00-.295-.51l-9.11-5.26c-.107-.062-.063-.228.062-.228h18.55c.264 0 .428.286.296.514z"></path></svg>',
|
|
1220
|
+
huggingface: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M2.25 11.535c0-3.407 1.847-6.554 4.844-8.258a9.822 9.822 0 019.687 0c2.997 1.704 4.844 4.851 4.844 8.258 0 5.266-4.337 9.535-9.687 9.535S2.25 16.8 2.25 11.535z" fill="#FF9D0B"></path><path d="M11.938 20.086c4.797 0 8.687-3.829 8.687-8.551 0-4.722-3.89-8.55-8.687-8.55-4.798 0-8.688 3.828-8.688 8.55 0 4.722 3.89 8.55 8.688 8.55z" fill="#FFD21E"></path><path d="M11.875 15.113c2.457 0 3.25-2.156 3.25-3.263 0-.576-.393-.394-1.023-.089-.582.283-1.365.675-2.224.675-1.798 0-3.25-1.693-3.25-.586 0 1.107.79 3.263 3.25 3.263h-.003z" fill="#FF323D"></path><path d="M14.76 9.21c.32.108.445.753.767.585.447-.233.707-.708.659-1.204a1.235 1.235 0 00-.879-1.059 1.262 1.262 0 00-1.33.394c-.322.384-.377.92-.14 1.36.153.283.638-.177.925-.079l-.002.003zm-5.887 0c-.32.108-.448.753-.768.585a1.226 1.226 0 01-.658-1.204c.048-.495.395-.913.878-1.059a1.262 1.262 0 011.33.394c.322.384.377.92.14 1.36-.152.283-.64-.177-.925-.079l.003.003zm1.12 5.34a2.166 2.166 0 011.325-1.106c.07-.02.144.06.219.171l.192.306c.069.1.139.175.209.175.074 0 .15-.074.223-.172l.205-.302c.08-.11.157-.188.234-.165.537.168.986.536 1.25 1.026.932-.724 1.275-1.905 1.275-2.633 0-.508-.306-.426-.81-.19l-.616.296c-.52.24-1.148.48-1.824.48-.676 0-1.302-.24-1.823-.48l-.589-.283c-.52-.248-.838-.342-.838.177 0 .703.32 1.831 1.187 2.56l.18.14z" fill="#3A3B45"></path><path d="M17.812 10.366a.806.806 0 00.813-.8c0-.441-.364-.8-.813-.8a.806.806 0 00-.812.8c0 .442.364.8.812.8zm-11.624 0a.806.806 0 00.812-.8c0-.441-.364-.8-.812-.8a.806.806 0 00-.813.8c0 .442.364.8.813.8zM4.515 13.073c-.405 0-.765.162-1.017.46a1.455 1.455 0 00-.333.925 1.801 1.801 0 00-.485-.074c-.387 0-.737.146-.985.409a1.41 1.41 0 00-.2 1.722 1.302 1.302 0 00-.447.694c-.06.222-.12.69.2 1.166a1.267 1.267 0 00-.093 1.236c.238.533.81.958 1.89 1.405l.24.096c.768.3 1.473.492 1.478.494.89.243 1.808.375 2.732.394 1.465 0 2.513-.443 3.115-1.314.93-1.342.842-2.575-.274-3.763l-.151-.154c-.692-.684-1.155-1.69-1.25-1.912-.195-.655-.71-1.383-1.562-1.383-.46.007-.889.233-1.15.605-.25-.31-.495-.553-.715-.694a1.87 1.87 0 00-.993-.312zm14.97 0c.405 0 .767.162 1.017.46.216.262.333.588.333.925.158-.047.322-.071.487-.074.388 0 .738.146.985.409a1.41 1.41 0 01.2 1.722c.22.178.377.422.445.694.06.222.12.69-.2 1.166.244.37.279.836.093 1.236-.238.533-.81.958-1.889 1.405l-.239.096c-.77.3-1.475.492-1.48.494-.89.243-1.808.375-2.732.394-1.465 0-2.513-.443-3.115-1.314-.93-1.342-.842-2.575.274-3.763l.151-.154c.695-.684 1.157-1.69 1.252-1.912.195-.655.708-1.383 1.56-1.383.46.007.889.233 1.15.605.25-.31.495-.553.718-.694.244-.162.523-.265.814-.3l.176-.012z" fill="#FF9D0B"></path><path d="M9.785 20.132c.688-.994.638-1.74-.305-2.667-.945-.928-1.495-2.288-1.495-2.288s-.205-.788-.672-.714c-.468.074-.81 1.25.17 1.971.977.721-.195 1.21-.573.534-.375-.677-1.405-2.416-1.94-2.751-.532-.332-.907-.148-.782.541.125.687 2.357 2.35 2.14 2.707-.218.362-.983-.42-.983-.42S2.953 14.9 2.43 15.46c-.52.558.398 1.026 1.7 1.803 1.308.778 1.41.985 1.225 1.28-.187.295-3.07-2.1-3.34-1.083-.27 1.011 2.943 1.304 2.745 2.006-.2.7-2.265-1.324-2.685-.537-.425.79 2.913 1.718 2.94 1.725 1.075.276 3.813.859 4.77-.522zm4.432 0c-.687-.994-.64-1.74.305-2.667.943-.928 1.493-2.288 1.493-2.288s.205-.788.675-.714c.465.074.807 1.25-.17 1.971-.98.721.195 1.21.57.534.377-.677 1.407-2.416 1.94-2.751.532-.332.91-.148.782.541-.125.687-2.355 2.35-2.137 2.707.215.362.98-.42.98-.42S21.05 14.9 21.57 15.46c.52.558-.395 1.026-1.7 1.803-1.308.778-1.408.985-1.225 1.28.187.295 3.07-2.1 3.34-1.083.27 1.011-2.94 1.304-2.743 2.006.2.7 2.263-1.324 2.685-.537.423.79-2.912 1.718-2.94 1.725-1.077.276-3.815.859-4.77-.522z" fill="#FFD21E"></path></svg>',
|
|
1221
|
+
ollama: '<svg viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd" style="display:block;width:100%;height:100%"><path d="M7.905 1.09c.216.085.411.225.588.41.295.306.544.744.734 1.263.191.522.315 1.1.362 1.68a5.054 5.054 0 012.049-.636l.051-.004c.87-.07 1.73.087 2.48.474.101.053.2.11.297.17.05-.569.172-1.134.36-1.644.19-.52.439-.957.733-1.264a1.67 1.67 0 01.589-.41c.257-.1.53-.118.796-.042.401.114.745.368 1.016.737.248.337.434.769.561 1.287.23.934.27 2.163.115 3.645l.053.04.026.019c.757.576 1.284 1.397 1.563 2.35.435 1.487.216 3.155-.534 4.088l-.018.021.002.003c.417.762.67 1.567.724 2.4l.002.03c.064 1.065-.2 2.137-.814 3.19l-.007.01.01.024c.472 1.157.62 2.322.438 3.486l-.006.039a.651.651 0 01-.747.536.648.648 0 01-.54-.742c.167-1.033.01-2.069-.48-3.123a.643.643 0 01.04-.617l.004-.006c.604-.924.854-1.83.8-2.72-.046-.779-.325-1.544-.8-2.273a.644.644 0 01.18-.886l.009-.006c.243-.159.467-.565.58-1.12a4.229 4.229 0 00-.095-1.974c-.205-.7-.58-1.284-1.105-1.683-.595-.454-1.383-.673-2.38-.61a.653.653 0 01-.632-.371c-.314-.665-.772-1.141-1.343-1.436a3.288 3.288 0 00-1.772-.332c-1.245.099-2.343.801-2.67 1.686a.652.652 0 01-.61.425c-1.067.002-1.893.252-2.497.703-.522.39-.878.935-1.066 1.588a4.07 4.07 0 00-.068 1.886c.112.558.331 1.02.582 1.269l.008.007c.212.207.257.53.109.785-.36.622-.629 1.549-.673 2.44-.05 1.018.186 1.902.719 2.536l.016.019a.643.643 0 01.095.69c-.576 1.236-.753 2.252-.562 3.052a.652.652 0 01-1.269.298c-.243-1.018-.078-2.184.473-3.498l.014-.035-.008-.012a4.339 4.339 0 01-.598-1.309l-.005-.019a5.764 5.764 0 01-.177-1.785c.044-.91.278-1.842.622-2.59l.012-.026-.002-.002c-.293-.418-.51-.953-.63-1.545l-.005-.024a5.352 5.352 0 01.093-2.49c.262-.915.777-1.701 1.536-2.269.06-.045.123-.09.186-.132-.159-1.493-.119-2.73.112-3.67.127-.518.314-.95.562-1.287.27-.368.614-.622 1.015-.737.266-.076.54-.059.797.042zm4.116 9.09c.936 0 1.8.313 2.446.855.63.527 1.005 1.235 1.005 1.94 0 .888-.406 1.58-1.133 2.022-.62.375-1.451.557-2.403.557-1.009 0-1.871-.259-2.493-.734-.617-.47-.963-1.13-.963-1.845 0-.707.398-1.417 1.056-1.946.668-.537 1.55-.849 2.485-.849zm0 .896a3.07 3.07 0 00-1.916.65c-.461.37-.722.835-.722 1.25 0 .428.21.829.61 1.134.455.347 1.124.548 1.943.548.799 0 1.473-.147 1.932-.426.463-.28.7-.686.7-1.257 0-.423-.246-.89-.683-1.256-.484-.405-1.14-.643-1.864-.643zm.662 1.21l.004.004c.12.151.095.37-.056.49l-.292.23v.446a.375.375 0 01-.376.373.375.375 0 01-.376-.373v-.46l-.271-.218a.347.347 0 01-.052-.49.353.353 0 01.494-.051l.215.172.22-.174a.353.353 0 01.49.051zm-5.04-1.919c.478 0 .867.39.867.871a.87.87 0 01-.868.871.87.87 0 01-.867-.87.87.87 0 01.867-.872zm8.706 0c.48 0 .868.39.868.871a.87.87 0 01-.868.871.87.87 0 01-.867-.87.87.87 0 01.867-.872zM7.44 2.3l-.003.002a.659.659 0 00-.285.238l-.005.006c-.138.189-.258.467-.348.832-.17.692-.216 1.631-.124 2.782.43-.128.899-.208 1.404-.237l.01-.001.019-.034c.046-.082.095-.161.148-.239.123-.771.022-1.692-.253-2.444-.134-.364-.297-.65-.453-.813a.628.628 0 00-.107-.09L7.44 2.3zm9.174.04l-.002.001a.628.628 0 00-.107.09c-.156.163-.32.45-.453.814-.29.794-.387 1.776-.23 2.572l.058.097.008.014h.03a5.184 5.184 0 011.466.212c.086-1.124.038-2.043-.128-2.722-.09-.365-.21-.643-.349-.832l-.004-.006a.659.659 0 00-.285-.239h-.004z"></path></svg>',
|
|
1222
|
+
lmstudio: '<svg viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd" style="display:block;width:100%;height:100%"><path d="M2.84 2a1.273 1.273 0 100 2.547h14.107a1.273 1.273 0 100-2.547H2.84zM7.935 5.33a1.273 1.273 0 000 2.548H22.04a1.274 1.274 0 000-2.547H7.935zM3.624 9.935c0-.704.57-1.274 1.274-1.274h14.106a1.274 1.274 0 010 2.547H4.898c-.703 0-1.274-.57-1.274-1.273zM1.273 12.188a1.273 1.273 0 100 2.547H15.38a1.274 1.274 0 000-2.547H1.273zM3.624 16.792c0-.704.57-1.274 1.274-1.274h14.106a1.273 1.273 0 110 2.547H4.898c-.703 0-1.274-.57-1.274-1.273zM13.029 18.849a1.273 1.273 0 100 2.547h9.698a1.273 1.273 0 100-2.547h-9.698z" fill-opacity=".3"></path><path d="M2.84 2a1.273 1.273 0 100 2.547h10.287a1.274 1.274 0 000-2.547H2.84zM7.935 5.33a1.273 1.273 0 000 2.548H18.22a1.274 1.274 0 000-2.547H7.935zM3.624 9.935c0-.704.57-1.274 1.274-1.274h10.286a1.273 1.273 0 010 2.547H4.898c-.703 0-1.274-.57-1.274-1.273zM1.273 12.188a1.273 1.273 0 100 2.547H11.56a1.274 1.274 0 000-2.547H1.273zM3.624 16.792c0-.704.57-1.274 1.274-1.274h10.286a1.273 1.273 0 110 2.547H4.898c-.703 0-1.274-.57-1.274-1.273zM13.029 18.849a1.273 1.273 0 100 2.547h5.78a1.273 1.273 0 100-2.547h-5.78z"></path></svg>',
|
|
1223
|
+
zhipu: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M11.991 23.503a.24.24 0 00-.244.248.24.24 0 00.244.249.24.24 0 00.245-.249.24.24 0 00-.22-.247l-.025-.001zM9.671 5.365a1.697 1.697 0 011.099 2.132l-.071.172-.016.04-.018.054c-.07.16-.104.32-.104.498-.035.71.47 1.279 1.186 1.314h.366c1.309.053 2.338 1.173 2.286 2.523-.052 1.332-1.152 2.38-2.478 2.327h-.174c-.715.018-1.274.64-1.239 1.368 0 .124.018.23.053.337.209.373.54.658.96.8.75.23 1.517-.125 1.9-.782l.018-.035c.402-.64 1.17-.96 1.92-.711.854.284 1.378 1.226 1.099 2.167a1.661 1.661 0 01-2.077 1.102 1.711 1.711 0 01-.907-.711l-.017-.035c-.2-.323-.463-.58-.851-.711l-.056-.018a1.646 1.646 0 00-1.954.746 1.66 1.66 0 01-1.065.764 1.677 1.677 0 01-1.989-1.279c-.209-.906.332-1.83 1.257-2.043a1.51 1.51 0 01.296-.035h.018c.68-.071 1.151-.622 1.116-1.333a1.307 1.307 0 00-.227-.693 2.515 2.515 0 01-.366-1.403 2.39 2.39 0 01.366-1.208c.14-.195.21-.444.227-.693.018-.71-.506-1.261-1.186-1.332l-.07-.018a1.43 1.43 0 01-.299-.07l-.05-.019a1.7 1.7 0 01-1.047-2.114 1.68 1.68 0 012.094-1.101zm-5.575 10.11c.26-.264.639-.367.994-.27.355.096.633.379.728.74.095.362-.007.748-.267 1.013-.402.41-1.053.41-1.455 0a1.062 1.062 0 010-1.482zm14.845-.294c.359-.09.738.024.992.297.254.274.344.665.237 1.025-.107.36-.396.634-.756.718-.551.128-1.1-.22-1.23-.781a1.05 1.05 0 01.757-1.26zm-.064-4.39c.314.32.49.753.49 1.206 0 .452-.176.886-.49 1.206-.315.32-.74.5-1.185.5-.444 0-.87-.18-1.184-.5a1.727 1.727 0 010-2.412 1.654 1.654 0 012.369 0zm-11.243.163c.364.484.447 1.128.218 1.691a1.665 1.665 0 01-2.188.923c-.855-.36-1.26-1.358-.907-2.228a1.68 1.68 0 011.33-1.038c.593-.08 1.183.169 1.547.652zm11.545-4.221c.368 0 .708.2.892.524.184.324.184.724 0 1.048a1.026 1.026 0 01-.892.524c-.568 0-1.03-.47-1.03-1.048 0-.579.462-1.048 1.03-1.048zm-14.358 0c.368 0 .707.2.891.524.184.324.184.724 0 1.048a1.026 1.026 0 01-.891.524c-.569 0-1.03-.47-1.03-1.048 0-.579.461-1.048 1.03-1.048zm10.031-1.475c.925 0 1.675.764 1.675 1.706s-.75 1.705-1.675 1.705-1.674-.763-1.674-1.705c0-.942.75-1.706 1.674-1.706zm-2.626-.684c.362-.082.653-.356.761-.718a1.062 1.062 0 00-.238-1.028 1.017 1.017 0 00-.996-.294c-.547.14-.881.7-.752 1.257.13.558.675.907 1.225.783zm0 16.876c.359-.087.644-.36.75-.72a1.062 1.062 0 00-.237-1.019 1.018 1.018 0 00-.985-.301 1.037 1.037 0 00-.762.717c-.108.361-.017.754.239 1.028.245.263.606.377.953.305l.043-.01zM17.19 3.5a.631.631 0 00.628-.64c0-.355-.279-.64-.628-.64a.631.631 0 00-.628.64c0 .355.28.64.628.64zm-10.38 0a.631.631 0 00.628-.64c0-.355-.28-.64-.628-.64a.631.631 0 00-.628.64c0 .355.279.64.628.64zm-5.182 7.852a.631.631 0 00-.628.64c0 .354.28.639.628.639a.63.63 0 00.627-.606l.001-.034a.62.62 0 00-.628-.64zm5.182 9.13a.631.631 0 00-.628.64c0 .355.279.64.628.64a.631.631 0 00.628-.64c0-.355-.28-.64-.628-.64zm10.38.018a.631.631 0 00-.628.64c0 .355.28.64.628.64a.631.631 0 00.628-.64c0-.355-.279-.64-.628-.64zm5.182-9.148a.631.631 0 00-.628.64c0 .354.279.639.628.639a.631.631 0 00.628-.64c0-.355-.28-.64-.628-.64zm-.384-4.992a.24.24 0 00.244-.249.24.24 0 00-.244-.249.24.24 0 00-.244.249c0 .142.122.249.244.249zM11.991.497a.24.24 0 00.245-.248A.24.24 0 0011.99 0a.24.24 0 00-.244.249c0 .133.108.236.223.247l.021.001zM2.011 6.36a.24.24 0 00.245-.249.24.24 0 00-.244-.249.24.24 0 00-.244.249.24.24 0 00.244.249zm0 11.263a.24.24 0 00-.243.248.24.24 0 00.244.249.24.24 0 00.244-.249.252.252 0 00-.244-.248zm19.995-.018a.24.24 0 00-.245.248.24.24 0 00.245.25.24.24 0 00.244-.25.252.252 0 00-.244-.248z" fill="#3859FF" fill-rule="nonzero"></path></svg>',
|
|
1224
|
+
moonshot: '<svg viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd" style="display:block;width:100%;height:100%"><path d="M1.052 16.916l9.539 2.552a21.007 21.007 0 00.06 2.033l5.956 1.593a11.997 11.997 0 01-5.586.865l-.18-.016-.044-.004-.084-.009-.094-.01a11.605 11.605 0 01-.157-.02l-.107-.014-.11-.016a11.962 11.962 0 01-.32-.051l-.042-.008-.075-.013-.107-.02-.07-.015-.093-.019-.075-.016-.095-.02-.097-.023-.094-.022-.068-.017-.088-.022-.09-.024-.095-.025-.082-.023-.109-.03-.062-.02-.084-.025-.093-.028-.105-.034-.058-.019-.08-.026-.09-.031-.066-.024a6.293 6.293 0 01-.044-.015l-.068-.025-.101-.037-.057-.022-.08-.03-.087-.035-.088-.035-.079-.032-.095-.04-.063-.028-.063-.027a5.655 5.655 0 01-.041-.018l-.066-.03-.103-.047-.052-.024-.096-.046-.062-.03-.084-.04-.086-.044-.093-.047-.052-.027-.103-.055-.057-.03-.058-.032a6.49 6.49 0 01-.046-.026l-.094-.053-.06-.034-.051-.03-.072-.041-.082-.05-.093-.056-.052-.032-.084-.053-.061-.039-.079-.05-.07-.047-.053-.035a7.785 7.785 0 01-.054-.036l-.044-.03-.044-.03a6.066 6.066 0 01-.04-.028l-.057-.04-.076-.054-.069-.05-.074-.054-.056-.042-.076-.057-.076-.059-.086-.067-.045-.035-.064-.052-.074-.06-.089-.073-.046-.039-.046-.039a7.516 7.516 0 01-.043-.037l-.045-.04-.061-.053-.07-.062-.068-.06-.062-.058-.067-.062-.053-.05-.088-.084a13.28 13.28 0 01-.099-.097l-.029-.028-.041-.042-.069-.07-.05-.051-.05-.053a6.457 6.457 0 01-.168-.179l-.08-.088-.062-.07-.071-.08-.042-.049-.053-.062-.058-.068-.046-.056a7.175 7.175 0 01-.027-.033l-.045-.055-.066-.082-.041-.052-.05-.064-.02-.025a11.99 11.99 0 01-1.44-2.402zm-1.02-5.794l11.353 3.037a20.468 20.468 0 00-.469 2.011l10.817 2.894a12.076 12.076 0 01-1.845 2.005L.657 15.923l-.016-.046-.035-.104a11.965 11.965 0 01-.05-.153l-.007-.023a11.896 11.896 0 01-.207-.741l-.03-.126-.018-.08-.021-.097-.018-.081-.018-.09-.017-.084-.018-.094c-.026-.141-.05-.283-.071-.426l-.017-.118-.011-.083-.013-.102a12.01 12.01 0 01-.019-.161l-.005-.047a12.12 12.12 0 01-.034-2.145zm1.593-5.15l11.948 3.196c-.368.605-.705 1.231-1.01 1.875l11.295 3.022c-.142.82-.368 1.612-.668 2.365l-11.55-3.09L.124 10.26l.015-.1.008-.049.01-.067.015-.087.018-.098c.026-.148.056-.295.088-.442l.028-.124.02-.085.024-.097c.022-.09.045-.18.07-.268l.028-.102.023-.083.03-.1.025-.082.03-.096.026-.082.031-.095a11.896 11.896 0 011.01-2.232zm4.442-4.4L17.352 4.59a20.77 20.77 0 00-1.688 1.721l7.823 2.093c.267.852.442 1.744.513 2.665L2.106 5.213l.045-.065.027-.04.04-.055.046-.065.055-.076.054-.072.064-.086.05-.065.057-.073.055-.07.06-.074.055-.069.065-.077.054-.066.066-.077.053-.06.072-.082.053-.06.067-.074.054-.058.073-.078.058-.06.063-.067.168-.17.1-.098.059-.056.076-.071a12.084 12.084 0 012.272-1.677zM12.017 0h.097l.082.001.069.001.054.002.068.002.046.001.076.003.047.002.06.003.054.002.087.005.105.007.144.011.088.007.044.004.077.008.082.008.047.005.102.012.05.006.108.014.081.01.042.006.065.01.207.032.07.012.065.011.14.026.092.018.11.022.046.01.075.016.041.01L14.7.3l.042.01.065.015.049.012.071.017.096.024.112.03.113.03.113.032.05.015.07.02.078.024.073.023.05.016.05.016.076.025.099.033.102.036.048.017.064.023.093.034.11.041.116.045.1.04.047.02.06.024.041.018.063.026.04.018.057.025.11.048.1.046.074.035.075.036.06.028.092.046.091.045.102.052.053.028.049.026.046.024.06.033.041.022.052.029.088.05.106.06.087.051.057.034.053.032.096.059.088.055.098.062.036.024.064.041.084.056.04.027.062.042.062.043.023.017c.054.037.108.075.161.114l.083.06.065.048.056.043.086.065.082.064.04.03.05.041.086.069.079.065.085.071c.712.6 1.353 1.283 1.909 2.031L7.222.994l.062-.027.065-.028.081-.034.086-.035c.113-.045.227-.09.341-.131l.096-.035.093-.033.084-.03.096-.031c.087-.03.176-.058.264-.085l.091-.027.086-.025.102-.03.085-.023.1-.026L9.04.37l.09-.023.091-.022.095-.022.09-.02.098-.021.091-.02.095-.018.092-.018.1-.018.091-.016.098-.017.092-.014.097-.015.092-.013.102-.013.091-.012.105-.012.09-.01.105-.01c.093-.01.186-.018.28-.024l.106-.008.09-.005.11-.006.093-.004.1-.004.097-.002.099-.002.197-.002z"></path></svg>',
|
|
1225
|
+
ibm: '<svg viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd" style="display:block;width:100%;height:100%"><path clip-rule="evenodd" d="M24 16.333V17h-3.158v-.667H24zm-7.579 0V17h-3.158v-.667h3.158zm2.464 0L18.63 17l-.25-.667h.504zm-7.075 0a2.528 2.528 0 01-1.717.667h-5.04v-.667h6.757zm-7.389 0V17H0v-.667h4.421zm12-1.333v.667h-3.158V15h3.158zm2.958 0l-.246.667h-1L17.885 15h1.494zm-6.937 0c-.057.237-.148.46-.265.667H5.053V15h7.39zm-8.02 0v.667H0V15h4.421zM24 15v.667h-3.158V15H24zm-1.263-1.333v.666h-1.895v-.666h1.895zm-6.316 0v.666h-1.895v-.666h1.895zm3.453 0l-.248.666h-1.989l-.25-.666h2.487zm-7.52 0c.056.212.088.435.088.666h-2.337v-.666h2.249zm-4.143 0v.666H6.316v-.666H8.21zm-5.053 0v.666H1.263v-.666h1.895zm19.579-1.334V13h-1.895v-.667h1.895zm-6.316 0V13h-1.895v-.667h1.895zm3.948 0l-.247.667h-2.987l-.245-.667h3.48zm-8.792 0c.218.188.405.414.55.667H6.315v-.667h5.26zm-8.42 0V13H1.264v-.667h1.895zM18.456 11l.177.539.176-.539h3.929v.667h-1.895v-.613l-.215.613H16.63l-.209-.613v.613h-1.895V11h3.929zM3.158 11v.667H1.263V11h1.895zm8.968 0a2.555 2.555 0 01-.55.667h-5.26V11h5.81zm10.61-1.333v.666h-3.709l.224-.666h3.486zm-4.722 0l.224.666h-3.712v-.666h3.488zm-5.572 0c0 .23-.032.454-.088.666h-2.249v-.666h2.337zm-4.231 0v.666H6.316v-.666H8.21zm-5.053 0v.666H1.263v-.666h1.895zm14.419-1.334l.22.667h-4.534v-.667h4.314zm6.423 0V9h-4.536l.229-.667H24zm-11.823 0c.117.206.208.43.265.667h-7.39v-.667h7.125zm-7.756 0V9H0v-.667h4.421zM17.133 7l.224.667h-4.094V7h3.87zM24 7v.667h-4.089L20.13 7H24zM10.093 7c.662 0 1.264.253 1.717.667H5.053V7h5.04zM4.42 7v.667H0V7h4.421z"></path></svg>',
|
|
1226
|
+
xai: '<svg viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd" style="display:block;width:100%;height:100%"><path d="M6.469 8.776L16.512 23h-4.464L2.005 8.776H6.47zm-.004 7.9l2.233 3.164L6.467 23H2l4.465-6.324zM22 2.582V23h-3.659V7.764L22 2.582zM22 1l-9.952 14.095-2.233-3.163L17.533 1H22z"></path></svg>',
|
|
1227
|
+
cohere: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path clip-rule="evenodd" d="M8.128 14.099c.592 0 1.77-.033 3.398-.703 1.897-.781 5.672-2.2 8.395-3.656 1.905-1.018 2.74-2.366 2.74-4.18A4.56 4.56 0 0018.1 1H7.549A6.55 6.55 0 001 7.55c0 3.617 2.745 6.549 7.128 6.549z" fill="#39594D" fill-rule="evenodd"></path><path clip-rule="evenodd" d="M9.912 18.61a4.387 4.387 0 012.705-4.052l3.323-1.38c3.361-1.394 7.06 1.076 7.06 4.715a5.104 5.104 0 01-5.105 5.104l-3.597-.001a4.386 4.386 0 01-4.386-4.387z" fill="#D18EE2" fill-rule="evenodd"></path><path d="M4.776 14.962A3.775 3.775 0 001 18.738v.489a3.776 3.776 0 007.551 0v-.49a3.775 3.775 0 00-3.775-3.775z" fill="#FF7759"></path></svg>',
|
|
1228
|
+
stability: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M7.223 21c4.252 0 7.018-2.22 7.018-5.56 0-2.59-1.682-4.236-4.69-4.918l-1.93-.571c-1.694-.375-2.683-.825-2.45-1.975.194-.957.773-1.497 2.122-1.497 4.285 0 5.873 1.497 5.873 1.497v-3.6S11.62 3 7.293 3C3.213 3 1 5.07 1 8.273c0 2.59 1.534 4.097 4.645 4.812l.334.083c.473.144 1.112.335 1.916.572 1.59.375 1.999.773 1.999 1.966 0 1.09-1.15 1.71-2.67 1.71C2.841 17.416 1 15.231 1 15.231v3.989S2.152 21 7.223 21z" fill="url(#lobe-icons-stability-_R_0_)"></path><path d="M20.374 20.73c1.505 0 2.626-1.073 2.626-2.526 0-1.484-1.089-2.526-2.626-2.526-1.505 0-2.594 1.042-2.594 2.526 0 1.484 1.089 2.526 2.594 2.526z" fill="#E80000"></path><defs><linearGradient id="lobe-icons-stability-_R_0_" x1="50%" x2="50%" y1="0%" y2="100%"><stop offset="0%" stop-color="#9D39FF"></stop><stop offset="100%" stop-color="#A380FF"></stop></linearGradient></defs></svg>',
|
|
1229
|
+
liquid: '<svg viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd" style="display:block;width:100%;height:100%"><path d="M12.028 8.546l-.008.005 3.03 5.25a3.94 3.94 0 01.643 2.162c0 .754-.212 1.46-.58 2.062l6.173-1.991L11.63 0 9.304 3.872l2.724 4.674zM6.837 24l4.85-4.053h-.013c-2.219 0-4.017-1.784-4.017-3.984 0-.794.235-1.534.64-2.156l2.865-4.976-2.381-4.087L2 16.034 6.83 24h.007zM13.737 19.382h-.001L8.222 24h8.182l4.148-6.769-6.815 2.151z"></path></svg>',
|
|
1230
|
+
yi: '<svg viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd" style="display:block;width:100%;height:100%"><path d="M18.62 13.927c.611 0 1.107.505 1.107 1.128v5.817c0 .623-.496 1.128-1.108 1.128a1.118 1.118 0 01-1.108-1.128v-5.817c0-.623.496-1.128 1.108-1.128zM16.59 3.052a1.094 1.094 0 011.562-.129c.466.404.522 1.116.126 1.59l-5.938 7.111v9.147c0 .624-.496 1.129-1.108 1.129a1.118 1.118 0 01-1.108-1.129v-9.477l.003-.088.01-.087c.015-.232.102-.462.261-.654l6.192-7.413zM2.906 2.256a1.094 1.094 0 011.559.157l4.387 5.45a1.142 1.142 0 01-.155 1.587 1.094 1.094 0 01-1.559-.157l-4.387-5.45a1.144 1.144 0 01.06-1.498l.095-.09z"></path><ellipse cx="20.146" cy="10.692" fill="#00FF25" rx="1.354" ry="1.379"></ellipse></svg>',
|
|
1231
|
+
internlm: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M5.54 19.662s2.24-.25 2.365-.29c.125-.042 2.45.082 2.45.082l1.493.374 1.37.498.373.125 2.033-.748 2.45-.373 1.659.041 1.286.166.54.166-.042 2.242-1.12-.291-2.159-.166-1.494.124-1.286.291-1.161.374-.83.332-1.744-.664-2.116-.416H7.158l-1.618.291v-2.158z" fill="#858599" fill-opacity=".5"></path><path d="M13.46 23c-3.773-2.078-7.78-.832-7.82-.819l-.453.144v-2.86l.24-.078c.174-.056 4.324-1.354 8.366.871l-.333.607c-3.244-1.786-6.66-1.115-7.58-.885V21.4c1.203-.286 4.595-.834 7.913.993L13.46 23V23z" fill="#858599"></path><path d="M13.413 23l-.334-.607c3.319-1.827 6.71-1.279 7.914-.993v-1.419c-.92-.231-4.337-.9-7.58.885l-.334-.607c4.042-2.225 8.192-.927 8.366-.87l.24.077v2.862l-.452-.147c-.04-.013-4.046-1.258-7.82.819z" fill="#858599"></path><path d="M17.756 16.476a.904.904 0 00-.264-.651.822.822 0 00-.632-.255.997.997 0 00-.644.293c-.175.212-.26.433-.259.685a.874.874 0 00.256.632c.175.187.39.272.644.255.246 0 .459-.1.633-.293a.97.97 0 00.268-.667l-.002.001zM10.769 17.143a.928.928 0 00.264-.658.993.993 0 00-.262-.679.908.908 0 00-.633-.227 1.089 1.089 0 00-.644.274 1.005 1.005 0 00-.265.685c0 .25.089.465.264.643.17.187.383.271.636.255.26-.008.471-.1.639-.293z" fill="#858599" fill-opacity=".5"></path><path d="M13.4 19.65c-.693 0-1.374-.058-1.895-.192-1.403-.36-2.52-1.01-3.413-1.986-.929-1.017-.988-1.996-1.05-3.033-.008-.133-.016-.267-.026-.405-.083-1.147-.626-2.941-.631-2.958l-.043-.141.086-.119A6.966 6.966 0 019.44 8.441c1.128-.47 2.47-.716 4.105-.752 2.721-.159 5.688.973 7.056 2.692l.086.109-.62 2.89c-.006.155-.052.968-.276 2.63-.263 1.947-2.668 3.061-3.903 3.377-.628.162-1.57.262-2.488.262zm-6.41-8.603c.134.46.538 1.912.613 2.944.01.139.018.277.026.412.06 1.01.109 1.809.896 2.672.815.89 1.837 1.484 3.125 1.814 1.092.28 3.061.194 4.091-.071.887-.228 3.24-1.19 3.468-2.889.24-1.786.272-2.593.273-2.6v-.026l.572-2.664c-.9-1.728-1.433-2.082-2.578-2.514-1.206-.455-2.677.075-3.903.148h-.01c-3.126.068-5.418-.935-6.574 2.773h.001z" fill="#858599"></path><path d="M19.545 10.862c.223.573.317.86.526 1.386 0 0 .552-.887.727-1.522.175-.641.068-1.458-.07-2.221-.344-1.282-.612-1.381-1.647-2.14a8.668 8.668 0 00-1.565-.84 12.303 12.303 0 00-3.83-.8 12.175 12.175 0 00-3.842.57 8.258 8.258 0 00-1.602.745c-1.075.695-1.823 1.674-2.24 2.932-.112.473-.29.927-.245 1.365.2 2.01 1.512 2.893 1.422 2.409-.117-.625-.042-.994.119-1.592.304-1.13 1.025-1.965 2.163-2.497h.004c.221-.062 1.344-.7 2.834.062.396.17 1.088.629 1.434.618.347-.01.846-.345 1.21-.572.683-.428 1.33-.574 2.184-.303 1.243.39 2.005 1.274 2.418 2.401z" fill="#858599"></path><path d="M1.217 9.86l.934.274 1.071-.055.77-.522.825-.742.604-.825.77-.797.741-.467 1.016-.22-.687 1.209-.577.576-1.209 1.676-.549.825-.632.44-.907.604s-.797.165-.879.192c-.081.028-.741.138-.741.138l-.577-.028-.44-.137.412-.825.056-.604v-.714l-.001.002z" fill="#858599" fill-opacity=".5"></path><path d="M3.607 5.108l-.083.63-.22.441-.274.412-.688.412.825.412.907.357.934.193.412.028.99-.688 1.043-.934-.357-.11-1.29-.137-.963-.358-.687-.356-.55-.302z" fill="#858599" fill-opacity=".5"></path><path d="M1.521 12.399c-.29 0-.596-.018-.917-.051L0 12.278l.298-.19.159-.173c.022-.033.085-.144.19-.377v-.002c.17-.365.228-.975.177-1.813l-.036-.564.435.36c.454.376 1.024.466 1.74.272.64-.182 1.337-.78 2.068-1.774.673-.968 1.64-1.624 2.88-1.952l.116-.031.783.61-.704-.05a2.182 2.182 0 00-.191.206l-.014.017-.018.016c-.404.718-.982 1.426-1.56 2.201l-.008.014c-.089.156-.18.317-.279.477v.009l-.032.051c-.592.962-1.243 1.683-1.935 2.145-.635.445-1.49.67-2.548.67v-.001zm-.5-.505c1.194.077 2.124-.112 2.77-.567l.005-.003c.626-.417 1.223-1.078 1.773-1.964a.244.244 0 01.041-.074c.098-.159.19-.321.28-.48v-.001c.392-.75.842-1.417 1.343-1.988-.748.33-1.341.82-1.8 1.481l-.004.006c-.808 1.101-1.572 1.742-2.333 1.958-.673.182-1.263.15-1.764-.095.01.69-.068 1.207-.237 1.573-.026.058-.05.108-.072.153h-.002z" fill="#858599"></path><path d="M1.577 12.399c-.29 0-.596-.018-.917-.051l.05-.486c1.371.145 2.425-.035 3.136-.535l.006-.003c.626-.417 1.222-1.078 1.772-1.963a.277.277 0 01.079-.116l.32.37a.22.22 0 00.072-.141l-.005.058-.03.052c-.592.962-1.243 1.683-1.935 2.145-.636.445-1.49.67-2.548.67zM5.751 7.717a9.381 9.381 0 01-.311.016c-.823.029-1.7-.2-2.615-.682.792-.512 1.013-1.096.982-1.621.189.15.386.281.591.393 1.345.758 2.766.878 5.195.198l-.165-.46c-2.308.637-3.558.532-4.793-.165a3.803 3.803 0 01-.967-.759l-.033-.036-.5-.542.094.697c.014.058.3 1.417-1.01 2.08l-.398.201.383.228c1.073.638 2.114.96 3.094.96l.453-.507v-.001zM11.93 15.21a.405.405 0 01-.366-.253c-.326-.745-.582-1.055-.969-1.525-.39-.474-1.223-1.277-1.36-1.393-.184-.156-.236-.368-.126-.515.055-.072.219-.219.556.005.683.452 2.198 1.812 2.608 2.904.15.397 0 .667-.201.749a.367.367 0 01-.143.028h.001zM14.877 15.23a.37.37 0 01-.146-.03c-.201-.085-.346-.357-.192-.752.424-1.086 1.957-2.427 2.645-2.87.34-.22.502-.072.556.002.109.147.054.358-.131.512-.139.115-.982.905-1.379 1.376-.392.465-.651.772-.988 1.513a.404.404 0 01-.364.25v-.002z" fill="#858599"></path><path d="M16.382 3.316c.01-.566-.265-1.054-.827-1.462-.57-.4-1.252-.602-2.045-.608-.792-.006-1.471.189-2.031.587-.563.401-.85.884-.857 1.445.002.176.017.336.04.486 2.1-.676 3.981-.62 5.64.167.045-.21.072-.414.08-.616v.001z" fill="#858599" fill-opacity=".5"></path><path d="M7.6 14.716l-.01-.024a1.824 1.824 0 01-.072-.192l-.059-.189-.388.013-.03.326c.002.013.009.044.016.1v.011c.003.02.004.036.008.052a.555.555 0 01-.164.431c-.112.12-.258.172-.45.164-.24-.01-.32-.105-.358-.176-.105-.19-.112-.291-.107-.336.015-.123.04-.254.077-.385.055-.206.013-.444-.126-.708l-.143-.272a1.787 1.787 0 01-.14-.384.974.974 0 01.022-.458.641.641 0 01.264-.374.695.695 0 01.496-.1l.015.002h.015c.192 0 .349.02.469.051a2.208 2.208 0 01-.027-.58 1.5 1.5 0 00-.38-.107H6.52l-.095-.008a1.369 1.369 0 00-.826.189c-.272.16-.456.394-.544.7a1.691 1.691 0 00-.03.815c.008.041.017.09.033.136.043.135.113.285.21.446.148.243.193.323.205.35l.005.009c.018.033.022.084.01.15l-.005.023a7.4 7.4 0 01-.034.172c-.115.298-.127.574-.036.815a.964.964 0 00.486.558c.134.066.288.108.46.125.094.01.192.01.294.005a.957.957 0 00.784-.454 1.13 1.13 0 00.17-.87l-.004-.026H7.6zM21.925 12.059a1.165 1.165 0 00-.556-.697h-.001a1.325 1.325 0 00-.797-.175l-.031.003-.093.011h-.008a1.553 1.553 0 00-.528.197 1.959 1.959 0 01-.016.563l.1-.04c.128-.053.302-.095.532-.13l.013-.002a.567.567 0 01.474.103c.155.113.26.254.32.428.05.164.057.305.022.43a2.77 2.77 0 01-.144.41 9.169 9.169 0 01-.191.383.908.908 0 00-.102.57c.024.176.05.322.078.446a.608.608 0 01-.036.329l-.003.006c-.037.117-.235.18-.35.208-.263.063-.381-.033-.451-.12a.78.78 0 01-.173-.51l.004-.053a.806.806 0 01.014-.093l-.008-.337-.431.01-.046.185a1.285 1.285 0 01-.064.188l-.011.027-.005.029c-.05.307.013.598.187.868l.004.006c.19.274.463.426.787.437.087.005.17.002.25-.004.192-.018.363-.069.509-.15a.992.992 0 00.459-.567c.085-.252.068-.527-.05-.816l-.03-.171-.002-.013a.306.306 0 01.015-.18c.045-.108.106-.233.181-.375.098-.173.162-.32.196-.444a.665.665 0 00.033-.152 1.75 1.75 0 00-.053-.806l.002-.002zM16.59 3.853c.033-.185.053-.359.06-.533.012-.648-.301-1.209-.93-1.667-.609-.427-1.344-.646-2.184-.653-.843-.008-1.575.207-2.176.633-.628.45-.951 1.002-.96 1.643v.006c.002.128.01.256.026.39a.38.38 0 00-.095.23v.01c0 .216.032.433.097.643l.001.006c.09.265.245.518.46.75l.063.068.567.063c.485.282 1.132.433 1.928.447h.103c.587 0 1.1-.072 1.527-.213l.011-.004c.16-.063.316-.138.465-.224.452.043.791-.18.965-.633l.043-.046-.002-.065c.067-.205.184-.608.03-.851h.001zM11.643 2.03c.514-.365 1.149-.547 1.888-.542.74.006 1.38.196 1.903.562.497.361.735.774.727 1.255-.004.089-.01.18-.023.274a6.882 6.882 0 00-2.685-.527c-.816 0-1.67.13-2.558.39a4.038 4.038 0 01-.006-.165c.006-.482.253-.89.754-1.247zm4.513 2.293l-.165.357s-.215.311-.45.272l-.092-.015-.078.049a2.724 2.724 0 01-.454.226c-.397.13-.89.192-1.462.184-.708-.014-1.276-.14-1.688-.38l-.037-.021-.048-.03-.491-.054c-.094-.11-.226-.34-.226-.34l-.135-.392-.008-.204c1.988-.626 3.79-.574 5.355.155.002.029-.02.193-.02.193zm.147.364v-.004l.003.004h-.003z" fill="#858599"></path></svg>',
|
|
1232
|
+
minimax: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><defs><linearGradient id="lobe-icons-minimax-_R_0_" x1="0%" x2="100.182%" y1="50.057%" y2="50.057%"><stop offset="0%" stop-color="#E2167E"></stop><stop offset="100%" stop-color="#FE603C"></stop></linearGradient></defs><path d="M16.278 2c1.156 0 2.093.927 2.093 2.07v12.501a.74.74 0 00.744.709.74.74 0 00.743-.709V9.099a2.06 2.06 0 012.071-2.049A2.06 2.06 0 0124 9.1v6.561a.649.649 0 01-.652.645.649.649 0 01-.653-.645V9.1a.762.762 0 00-.766-.758.762.762 0 00-.766.758v7.472a2.037 2.037 0 01-2.048 2.026 2.037 2.037 0 01-2.048-2.026v-12.5a.785.785 0 00-.788-.753.785.785 0 00-.789.752l-.001 15.904A2.037 2.037 0 0113.441 22a2.037 2.037 0 01-2.048-2.026V18.04c0-.356.292-.645.652-.645.36 0 .652.289.652.645v1.934c0 .263.142.506.372.638.23.131.514.131.744 0a.734.734 0 00.372-.638V4.07c0-1.143.937-2.07 2.093-2.07zm-5.674 0c1.156 0 2.093.927 2.093 2.07v11.523a.648.648 0 01-.652.645.648.648 0 01-.652-.645V4.07a.785.785 0 00-.789-.78.785.785 0 00-.789.78v14.013a2.06 2.06 0 01-2.07 2.048 2.06 2.06 0 01-2.071-2.048V9.1a.762.762 0 00-.766-.758.762.762 0 00-.766.758v3.8a2.06 2.06 0 01-2.071 2.049A2.06 2.06 0 010 12.9v-1.378c0-.357.292-.646.652-.646.36 0 .653.29.653.646V12.9c0 .418.343.757.766.757s.766-.339.766-.757V9.099a2.06 2.06 0 012.07-2.048 2.06 2.06 0 012.071 2.048v8.984c0 .419.343.758.767.758.423 0 .766-.339.766-.758V4.07c0-1.143.937-2.07 2.093-2.07z" fill="url(#lobe-icons-minimax-_R_0_)" fill-rule="nonzero"></path></svg>',
|
|
1233
|
+
hunyuan: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><circle cx="12" cy="12" fill="#0055E9" r="12"></circle><path d="M12 0c.518 0 1.028.033 1.528.096A6.188 6.188 0 0112.12 12.28l-.12.001c-2.99 0-5.242 2.179-5.554 5.11-.223 2.086.353 4.412 2.242 6.146C3.672 22.1 0 17.479 0 12 0 5.373 5.373 0 12 0z" fill="#A8DFF5"></path><path d="M5.286 5a2.438 2.438 0 01.682 3.38c-3.962 5.966-3.215 10.743 2.648 15.136C3.636 22.056 0 17.452 0 12c0-1.787.39-3.482 1.09-5.006.253-.435.525-.872.817-1.311A2.438 2.438 0 015.286 5z" fill="#0055E9"></path><path d="M12.98.04c.272.021.543.053.81.093.583.106 1.117.254 1.538.44 6.638 2.927 8.07 10.052 1.748 15.642a4.125 4.125 0 01-5.822-.358c-1.51-1.706-1.3-4.184.357-5.822.858-.848 3.108-1.223 4.045-2.441 1.257-1.634 2.122-6.009-2.523-7.506L12.98.039z" fill="#00BCFF"></path><path d="M13.528.096A6.187 6.187 0 0112 12.281a5.75 5.75 0 00-1.71.255c.147-.905.595-1.784 1.321-2.501.858-.848 3.108-1.223 4.045-2.441 1.27-1.651 2.14-6.104-2.676-7.554.184.014.367.033.548.056z" fill="#ECECEE"></path></svg>',
|
|
1234
|
+
stepfun: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M22.012 0h1.032v.927H24v.968h-.956V3.78h-1.032V1.896h-1.878v-.97h1.878V0zM2.6 12.371V1.87h.969v10.502h-.97zm10.423.66h10.95v.918h-6.208v9.579h-4.742V13.03zM5.629 3.333v12.356H0v4.51h10.386V8L20.859 8l-.003-4.668-15.227.001z" fill="url(#lobe-icons-stepfun-_R_0_)" fill-rule="evenodd"></path><defs><linearGradient gradientUnits="userSpaceOnUse" id="lobe-icons-stepfun-_R_0_" x1="1.646" x2="18.342" y1="1.916" y2="22.091"><stop stop-color="#01A9FF"></stop><stop offset="1" stop-color="#0160FF"></stop></linearGradient></defs></svg>',
|
|
1235
|
+
arcee: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M13.236 2.377L2.751 20.493H0L11.863 0l1.373 2.377zm3.554 6.156l-9.606 11.96H4.13L15.511 6.32l1.279 2.212zm6.908 11.96H14.05l8.406-2.151 1.242 2.15zm-3.42-5.922l-7.843 5.92H8.482l10.597-7.997 1.2 2.077z" fill="#008C8C"></path></svg>',
|
|
1236
|
+
nousresearch: '<svg viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd" style="display:block;width:100%;height:100%"><path d="M5.938 12.835c.127-.039.285.02.373.143.028.038.036.092.046.14.003.014-.02.033-.04.05-.124-.098-.24-.194-.354-.291-.011-.01-.016-.027-.025-.042zM8.396 9.412c.195-.032.39-.06.588-.05a.54.54 0 01.148.026c.202.071.402.147.601.224.028.01.05.036.075.055l-.013.027a9.203 9.203 0 01-.26-.089c-.115-.038-.213-.077-.315-.098-.25-.05-.25-.046-.292-.014l.574.144c.275.139.55.276.823.417.042.022.09.057.107.098.026.06.063.076.117.072.066-.006.132-.017.213-.027l-.04.086c.051.08.142.02.216.064-.074.13-.247.09-.334.199l.061.074-.12.087c0 .106-.038.168-.306.243l.026.085-.196.042.07.124h-.25l-.007.137c-.081-.01-.161-.018-.244-.027l-.053.123c-.027-.008-.052-.011-.073-.023-.067-.038-.128-.056-.195.006-.019.017-.063.014-.093.008-.026-.006-.05-.029-.07-.042-.11.095-.11.095-.208.003-.057.046-.12.074-.186.011-.063.027-.123-.02-.178-.014-.07.007-.097-.035-.133-.07l-.13.033c-.013-.236-.194-.19-.34-.203.005-.072.05-.092.095-.094a.474.474 0 01.159.022c.164.05.32.12.496.138.203.021.405.029.601-.015.265-.059.52-.149.707-.365.049-.056.083-.127.117-.195.019-.038.02-.084-.02-.116a1.397 1.397 0 00-.382-.217c.024.12-.031.182-.115.221 0 .014-.004.025 0 .03.08.115.084.16-.007.267a1.39 1.39 0 01-.218.211.477.477 0 01-.641-.05 1.36 1.36 0 01-.133-.152c-.078-.107-.076-.108-.033-.236-.165-.08-.128-.226-.104-.364.008-.05.028-.096.049-.163-.04.014-.067.017-.087.032a.897.897 0 00-.316.357c-.007.016-.01.034-.02.047-.012.015-.034.038-.045.035-.02-.006-.037-.027-.05-.045-.008-.012-.007-.032-.012-.057h-.126l.053-.172a14.82 14.82 0 00-.039-.049l.11-.284c-.06.026-.091.044-.124.051-.03.007-.064 0-.095 0 0-.031-.01-.07.004-.092.149-.22.305-.428.593-.476z"></path><path d="M8.06 10.788c-.003-.038-.004-.075.037-.062.016.006.034.048.028.067-.01.04-.038.032-.064-.005z"></path><path clip-rule="evenodd" d="M11.981.009c.226-.012.453-.011.679 0 .247.01.495.024.74.062.401.064.798.157 1.19.273.463.138.92.299 1.356.511a7.31 7.31 0 012.948 2.642c.292.469.536.963.739 1.479.219.556.446 1.11.623 1.683.204.654.329 1.326.458 1.997.097.504.182 1.01.29 1.511.156.722.329 1.44.494 2.16.186.812.4 1.615.63 2.415.102.355.193.713.282 1.072.11.436.202.876.254 1.323.031.278.066.557.073.837a7.56 7.56 0 01-.017.88c-.037.413-.1.818-.226 1.212a5.017 5.017 0 01-.915 1.649l-.13.156.018.023c.043-.023.088-.041.127-.068.2-.138.373-.307.531-.49.4-.46.721-.973.975-1.529a3.59 3.59 0 00.325-1.72c-.024-.424-.097-.834-.3-1.213-.013-.027-.015-.06-.03-.121.05.035.082.048.101.072.107.13.22.258.315.398.33.494.46 1.052.486 1.64a3.75 3.75 0 01-.47 1.97c-.36.655-.887 1.14-1.526 1.506-.193.111-.394.21-.595.308-.157.078-.248.211-.318.365a.522.522 0 00-.033.406.359.359 0 01.013.139c-.005.077-.077.155-.14.162-.054.006-.125-.043-.15-.116a1.206 1.206 0 01-.06-.233c-.04-.314-.155-.6-.308-.87a3.906 3.906 0 00-.73-.91 2.129 2.129 0 00-.897-.524 4.093 4.093 0 00-.692-.131c-.075-.008-.15-.04-.22.01.18.06.363.11.538.18.434.173.82.43 1.18.728.308.255.58.543.794.884.098.155.186.315.227.496.027.123.042.25.067.375.013.062-.002.109-.053.144-.047.033-.122.034-.163-.01a.455.455 0 01-.08-.14c-.03-.073-.038-.159-.078-.225a7.314 7.314 0 00-1.423-1.664c-.16-.137-.329-.26-.537-.323-.376-.114-.753-.203-1.15-.154-.213.025-.427.032-.64.053a1.6 1.6 0 00-.736.278 5.14 5.14 0 00-.834.72c-.329.342-.642.699-.955 1.055-.136.155-.264.319-.314.531a5.227 5.227 0 00-.012.051.096.096 0 01-.09.076h-.31c-.046 0-.082-.048-.072-.094.023-.108.045-.216.07-.324.075-.325.19-.635.368-.917.024-.039.04-.088.104-.08l.01.049.027.077c.28-.435.571-.834.996-1.135.283-.204.584-.378.89-.55a.196.196 0 00-.098-.002c-.162.043-.325.084-.485.134-.402.124-.764.33-1.11.566-.147.1-.298.193-.414.333a7.314 7.314 0 00-1.07 1.767.845.845 0 00-.04.12.075.075 0 01-.072.056h-.494c-.04 0-.062-.051-.036-.082.123-.14.246-.282.377-.415.275-.281.58-.532.777-.884.027-.048.063-.09.095-.135.238-.333.54-.607.818-.902.082-.086.175-.16.26-.24.029-.027.053-.057.079-.085l-.018-.025-.135.041c-.034.017-.07.031-.102.05-.248.144-.494.292-.743.433-.408.23-.825.439-1.209.711-.281.2-.591.358-.889.533-.02.012-.044.015-.08.028-.015-.135.143-.201.108-.336-.033.014-.064.02-.085.038-.111.096-.227.19-.328.296-.148.157-.284.325-.425.488-.125.143-.25.286-.373.431A.153.153 0 019.89 24H8.762a.316.316 0 00.016-.042c.028-.09.085-.172.083-.28-.091-.018-.162.001-.212.077a4.45 4.45 0 00-.136.215c-.01.016-.024.03-.042.03h-.093c-.019 0-.029-.022-.017-.037.071-.088.14-.178.209-.268.001-.002-.006-.012-.012-.024-.014.004-.03.006-.045.013-.176.09-.352.181-.527.274a.363.363 0 01-.168.042H5.202c-.026 0-.039-.036-.019-.053.21-.178.402-.374.558-.605.335-.496.538-1.047.667-1.629.004-.02-.003-.043-.006-.091-.037.048-.059.072-.076.1a1.943 1.943 0 01-.334.415c-.28.258-.59.448-.983.464-.297.012-.588 0-.865-.127-.46-.21-.722-.57-.794-1.072-.025-.17-.017-.171-.182-.219A3.513 3.513 0 011.97 20.6a2.286 2.286 0 01-.808-1.13 3.569 3.569 0 01-.16-1.245c.002-.034.016-.067.024-.1.032.023.046.043.05.066.033.153.059.308.096.46.086.355.257.664.516.92.258.256.571.419.91.532.358.118.717.138 1.07-.016a1.89 1.89 0 00.621-.452c.328-.348.533-.76.648-1.223.009-.034.005-.071.007-.11-.015.006-.026.006-.03.011-.031.05-.064.1-.093.152-.284.502-.679.887-1.196 1.135-.351.17-.718.255-1.11.159a1.607 1.607 0 01-.971-.64 2.006 2.006 0 01-.368-.924 2.903 2.903 0 01.02-.886c.05-.439.466-1.17.742-1.271-.02.063-.035.112-.053.16-.043.116-.097.227-.13.345a1.901 1.901 0 00-.05.82c.033.212.09.416.204.6.147.236.346.407.62.465.11.023.225.014.338.018a.576.576 0 00.386-.131c.164-.128.282-.292.366-.481.168-.375.24-.777.309-1.179.05-.296.093-.594.133-.893.039-.281.071-.563.104-.845.026-.232.048-.464.074-.696.024-.228.052-.455.076-.683.024-.227.047-.455.069-.683.013-.14.022-.28.034-.42l.037-.417c.022-.25.041-.5.065-.748.008-.082-.02-.132-.09-.177a2.46 2.46 0 01-.492-.418c-.1-.109-.188-.228-.282-.342-.035-.042-.056-.097-.116-.118a2.084 2.084 0 00.275.597c.06.092.131.176.196.265.063.086.182.115.234.226-.028.003-.046.01-.06.006a4.74 4.74 0 01-.22-.057 2.71 2.71 0 01-1.287-.819c-.435-.487-.656-1.076-.71-1.723a5.206 5.206 0 01.014-1.06c.072-.602.22-1.186.45-1.745.155-.376.338-.741.526-1.102.205-.393.466-.75.765-1.076.512-.559 1.104-1.024 1.726-1.448.717-.49 1.478-.898 2.277-1.233C8.244.828 8.767.632 9.31.494c.655-.166 1.31-.33 1.982-.415.229-.03.458-.058.688-.07zm-1.847 22.82c-.07.06-.147.111-.207.18-.238.27-.464.549-.668.869l-.044.108a.177.177 0 00.093-.057c.174-.19.351-.378.519-.574.104-.122.195-.255.288-.386.024-.034.03-.08.046-.12l-.027-.02zm1.65-3.695a5.51 5.51 0 00-.653.593l-.37.386a.963.963 0 01-.377.25 1.372 1.372 0 01-.467.09c-.044 0-.087.006-.151.012.028.058.043.097.064.131.15.242.301.482.45.724.136.22.276.438.399.666.068.125.105.267.156.404.077.027.14-.018.202-.048.29-.135.579-.274.867-.412.213-.101.437-.186.636-.31.347-.215.68-.455 1.018-.685.015-.01.026-.028.042-.046-.023-.019-.038-.037-.056-.044-.287-.111-.527-.3-.77-.482a5.319 5.319 0 01-.506-.42 1.757 1.757 0 01-.41-.653c-.019-.049-.045-.095-.075-.156zm-5.847.264c-.06.096-.097.194-.132.293a3.38 3.38 0 01-.555 1.01c-.2.25-.455.412-.762.493-.23.06-.464.076-.7.07-.048-.002-.097.002-.158.005.016.04.021.066.035.085.1.145.23.246.4.295.157.046.316.034.498.023.181-.037.343-.115.485-.234.238-.199.402-.454.536-.732.175-.363.264-.751.342-1.144.01-.053.008-.11.011-.164zm14.945-4.586c.008.029.016.057.027.107.024.155.051.31.072.464.03.219.067.437.078.657.017.344.027.689-.014 1.033-.037.315-.063.633-.116.946a6.153 6.153 0 01-.46 1.518c-.008.018-.01.039-.02.082.047-.03.077-.042.098-.064.085-.083.17-.167.248-.255.271-.305.458-.66.596-1.043.18-.498.228-1.011.145-1.531-.103-.65-.33-1.263-.597-1.881a9.055 9.055 0 00-.024-.055l-.033.022zM5.797 8.29a.26.26 0 00.018.153c.124.251.25.501.379.75.025.049.066.09.03.163-.284.06-.578.119-.88.255.059.038.097.06.132.087.042.032.112.058.09.12-.01.033-.075.048-.117.072.017.01.043.021.067.036.166.102.33.207.447.368.138.192.229.404.188.644-.079.469-.306.85-.69 1.132-.054.04-.106.083-.161.122a.243.243 0 00-.103.245.77.77 0 00.055.195c.083.196.22.35.375.492.083.076.159.164.222.257a.37.37 0 01.025.377c-.023.05-.05.099-.076.148-.03.06-.028.111.022.162.041.042.08.089.112.138.038.058.078.079.147.05a.486.486 0 01.333-.006c.16.046.302.126.444.21.13.077.264.149.4.219.067.035.14.05.219.026.071-.022.124.01.145.076.02.064-.003.108-.074.139-.07.03-.137.063-.209.088-.1.035-.201.073-.314.077-.013-.107.11-.088.127-.159-.206-.126-.643-.145-.801-.034.063.112.035.21-.096.313-.13-.1-.025-.202.002-.3a.209.209 0 00-.249.17c-.015.101.067.216.178.224.108.007.218-.005.326-.012.06-.005.12-.027.199 0-.103.123-.248.127-.357.19.002.05.07.086.019.131-.053.048-.095-.001-.132-.03-.08-.063-.16-.126-.231-.197a.474.474 0 01-.157-.311.52.52 0 00-.043-.172c-.032-.074-.032-.137.033-.19-.018-.03-.028-.053-.045-.072a1.222 1.222 0 01-.196-.369c-.053-.137-.046-.264.048-.381.024-.03.05-.06.064-.095a.664.664 0 00.047-.168c.017-.165-.064-.287-.182-.387-.186-.156-.36-.322-.46-.551-.005-.011-.024-.017-.037-.026-.011.017-.024.027-.025.038-.019.185-.045.37-.052.557-.014.377.058.743.162 1.104.118.41.289.798.488 1.173.267.502.537 1.002.812 1.5.055.098.13.189.208.27.198.202.452.272.724.273.202 0 .404-.006.605-.026.295-.03.59-.073.884-.113.183-.025.365-.057.548-.08.21-.026.38.073.522.21.16.156.305.327.447.5.22.265.397.56.554.867.05.098.07.1.147.03.13-.121.26-.242.394-.36.067-.059.088-.12.067-.213a3.535 3.535 0 01-.085-.796c.002-.157.006-.314.018-.471.015-.224.03-.45.06-.672a59.114 59.114 0 01.362-2.298c.087-.493.182-.984.268-1.477.06-.347.118-.694.162-1.043.034-.273.055-.55.063-.825.011-.332.003-.665.002-.998 0-.077.004-.155-.01-.23-.028-.142-.01-.155-.162-.19a5.826 5.826 0 00-.607-.107c-.146-.018-.207-.053-.221-.19-.006-.049-.025-.098-.041-.146-.009-.025-.024-.048-.046-.09l-.025.264c-.009.096-.029.116-.127.115-.055 0-.11-.008-.164-.008-.476 0-.952-.008-1.426.032-.095.008-.173-.015-.226-.103-.04-.066-.088-.126-.134-.186-.063-.084-.086-.093-.182-.06-.195.068-.388.138-.582.21a2.71 2.71 0 00-.675.394.986.986 0 01-.323.168c-.033.01-.07.008-.127.013.02-.066.024-.114.047-.15.064-.105.135-.205.205-.306.023-.033.049-.063.073-.095l-.015-.023-.201.037c-.146.04-.296.07-.437.122-.148.053-.266.023-.386-.072a3.623 3.623 0 01-.733-.786l-.093-.132zm8.592 8.963l-.147.09c-.22.134-.44.266-.659.402-.093.058-.184.12-.27.188-.085.07-.124.161-.072.272.047.1.093.2.147.294.047.08.124.138.213.147.11.01.228.012.336-.012.217-.05.372-.205.528-.357a.291.291 0 00.087-.308c-.046-.18-.079-.365-.118-.547-.011-.052-.027-.103-.045-.169zm-.257-2.409c-.12.291-.205.597-.325.91-.151.433-.294.87-.435 1.323.036-.01.054-.01.067-.018.261-.16.522-.324.785-.484.054-.033.071-.078.065-.138-.012-.13-.024-.262-.034-.393l-.068-.886c-.008-.103-.02-.206-.029-.31-.009 0-.017-.002-.026-.004zm3.081-8.13l.099.285c.08.231.159.463.24.714l.58 1.952c.187.63.372 1.262.558 1.893.114.382.235.762.343 1.146.072.257.126.519.186.799.044.206.087.413.127.64.034.106.023.226.077.325l.025-.006-.068-.362c-.038-.206-.077-.412-.113-.638-.015-.07-.029-.141-.046-.211-.095-.396-.177-.796-.29-1.187-.196-.685-.413-1.364-.618-2.046-.165-.549-.322-1.1-.488-1.648-.069-.227-.15-.45-.226-.695l-.117-.336c-.037-.107-.075-.216-.115-.322-.04-.106-.084-.21-.127-.314a7.558 7.558 0 01-.027.01zM6.225 14.304c-.063-.001-.115.014-.134.083a.35.35 0 00.41.012 4.533 4.533 0 00-.276-.095zM5.23 11.98c-.026-.027-.057-.048-.075.002-.012.032-.007.07-.01.113.082-.037.082-.037.085-.115zm.062-1.189a.135.135 0 00-.088.056.197.197 0 00-.025.11c.005.152.01.306.026.457a.751.751 0 00.066.218c.061.136.157.167.288.101.055-.027.06-.054.025-.11a4.52 4.52 0 01-.129-.211c-.015-.068-.066-.131-.033-.207.04-.09-.076-.116-.074-.19V10.874c-.003-.038-.006-.087-.056-.083zm-.017-.968a.867.867 0 00-.467.127c-.076.045-.084.07-.05.158.034.087.07.173.115.254.064.117.09.125.21.077a.657.657 0 01.336-.053c.202.022.357.136.504.264l.092.077c.007-.006.014-.013.022-.018-.019-.105-.035-.226-.149-.264-.157-.053-.324-.075-.508-.117l-.24-.005c.24-.169.452-.044.687.009-.063-.115-.153-.147-.23-.193-.082-.05-.17-.092-.25-.144-.06-.037-.12-.08-.072-.172zm10.233.325c-.23-.01-.427.08-.608.211-.034.026-.06.065-.105.117.087.026.15.046.232.065.044-.015.088-.03.13-.046.306-.114.61-.115.904.031.126.063.237.04.366-.005-.02-.031-.03-.054-.045-.071a.986.986 0 00-.448-.273c-.14-.044-.284-.024-.426-.03zM7.99 6.483a.308.308 0 00.002.133c.08.321.156.643.242.962.104.387.27.75.456 1.103.02.037.061.08.098.087a.404.404 0 00.253-.051l-.472-.84c-.23-.448-.405-.92-.579-1.394zM10.397.497c-.2-.008-.405.004-.603.034-.236.035-.47.087-.7.152-.287.08-.569.18-.852.273-.04.013-.074.038-.11.058.028.014.05.018.07.014.287-.068.58-.085.873-.09.134-.002.269.009.402.025.19.024.382.048.57.09.456.104.874.3 1.265.556.464.306.888.66 1.257 1.078.205.232.395.475.56.739.17.274.315.561.449.856.273.601.456 1.232.6 1.876.04.173.07.348.1.524.017.104.065.167.17.19.122.028.2.105.22.251-.003.102-.06.174-.129.24a1.065 1.065 0 00-.268.358.164.164 0 00.083-.039c.08-.086.162-.172.235-.265a.56.56 0 00.13-.333c.009-.05.022-.1.024-.15.007-.124-.017-.15-.143-.168-.025-.004-.049-.014-.073-.015-.082-.007-.125-.063-.137-.131-.033-.198-.004-.355.247-.408.086-.018.174-.03.26-.042.158-.023.315-.053.473-.067.14-.012.19.033.226.167.008.029.018.057.021.087.019.179-.008.225-.141.288-.027.013-.055.024-.078.042a.148.148 0 00-.051.067c-.039.144.073.382.206.445l.673.32c.023.011.05.015.075.023l.018-.026c-.015-.008-.032-.013-.044-.024a2.27 2.27 0 00-.544-.32 4.898 4.898 0 00-.173-.075.203.203 0 01-.126-.191c-.003-.085.045-.154.128-.187l.059-.025c.099-.044.118-.076.112-.187a.384.384 0 00-.008-.063c-.067-.294-.123-.59-.205-.88a9.478 9.478 0 00-.826-2.036 7.465 7.465 0 00-1.39-1.805 4.536 4.536 0 00-1.177-.824 3.656 3.656 0 00-1.016-.328 6.155 6.155 0 00-.712-.074zm6.719 5.955c.01.014.018.028.038.034l-.022-.044-.016.01zM4.103 3.917a.062.062 0 01-.03.012.455.455 0 01-.04.039c-.01.01-.02.02-.045.04l-.363.354c-.088.085-.17.178-.266.253-.284.22-.425.53-.544.855a.132.132 0 00-.007.071c.013.055.033.108.052.168l.074.026c-.017.056-.03.105-.047.152-.058.164-.118.327-.175.491-.005.015.008.036.019.077.08-.175.158-.33.225-.489.228-.544.484-1.074.819-1.561.09-.133.182-.266.283-.401.004-.006.007-.013.022-.03.001-.016.003-.032.015-.04l.008-.017zm12.976 2.408a.023.023 0 01.009.019.073.073 0 00-.006.01.188.188 0 00.007.02l.018.022c.002-.007.007-.016.005-.021-.003-.01-.012-.018-.02-.038a1.331 1.331 0 01-.013-.012zM4.199 4.48c-.003.004-.008.008-.027.014-.005.013-.011.025-.031.047a2.085 2.085 0 01-.124.167c-.048.07-.116.055-.181.041-.134-.028-.228.016-.287.143-.089.187-.187.37-.273.56-.049.108-.11.216-.118.36.081.003.154.007.228.008h.228a2.563 2.563 0 01-.079.264c-.01.052-.022.103-.033.155l.02.004c.018-.046.037-.092.067-.153.066-.142.13-.285.2-.426.02-.04.034-.1.116-.092 0 .043.004.084 0 .124-.005.045-.017.09-.028.143.141.043.086.174.115.269.102-.022.104-.195.248-.144v.205l.017.002.439-1.059c-.13 0-.246-.02-.358.033-.024.011-.058-.001-.108-.004.075-.15.139-.278.211-.417a.128.128 0 01.025-.036c0-.015-.001-.03.008-.038l.006-.02c-.005.006-.01.011-.028.017-.004.012-.009.024-.026.045a.085.085 0 01-.032.033c-.123.157-.09.164-.258.106-.079-.027-.078-.028-.047-.144.028-.046.056-.093.098-.15 0-.016-.001-.032.007-.042L4.2 4.48zm2.073-.67c-.003.006-.007.011-.027.016-.094.125-.194.246-.28.377-.155.238-.301.481-.451.723-.14.224-.345.368-.575.481-.017.008-.04.006-.079.011.012-.059.016-.109.033-.153a6.076 6.076 0 01.229-.518l-.007-.02a.138.138 0 01-.035.025c-.028.05-.055.1-.093.164-.26.424-.443.817-.442.95.024.004.048.011.073.013.177.013.188.007.26-.165.03-.07.077-.12.147-.15l.175-.07c.044-.018.085-.057.146-.032.003.05-.01.11.014.145.042.062.044.125.047.193.002.049.017.098.026.147.029-.034.039-.065.05-.097.142-.39.277-.782.428-1.17.1-.256.22-.504.33-.756.013-.03.013-.067.03-.092V3.81zm3.987-.34c0 .045.01.084.021.123.042.16.094.318.124.48.024.133.023.27.028.406 0 .033-.019.067-.032.11-.094-.058-.047-.158-.106-.215h-.125c-.015.072-.01.152-.046.2-.066.085-.155.154-.236.227-.043.038-.078.018-.103-.025l-.046-.087c-.065.035-.117.069-.172.093-.116.051-.235.095-.35.147-.085.038-.09.053-.07.147.014.075.034.148.047.223.013.072.05.109.123.124.233.05.462.115.657.265.058-.102.058-.102.168-.151.03-.014.06-.03.092-.042.08-.03.115-.017.15.06.023.048.041.098.066.158.06-.14-.042-.267.017-.416.157.18.24.39.375.567a.235.235 0 00.022-.098c.002-.124 0-.247.002-.371 0-.034.013-.067.02-.1l.032-.003c.11.155.13.354.226.52a3.036 3.036 0 00-.01-.392c-.004-.045 0-.074.05-.088.08.036.116.14.215.158-.03-.275-.423-1.137-.798-1.635-.114-.127-.2-.28-.34-.386zm-2.667.696c-.019.034-.03.05-.037.067-.061.185-.125.37-.18.556-.031.105-.087.169-.195.19-.09.019-.178.052-.268.073-.038.009-.089.015-.118-.003-.024-.016-.025-.069-.036-.106-.064.076-.082.087-.17.047-.133-.062-.262-.135-.393-.201-.048-.025-.093-.063-.17-.03-.043.12-.091.25-.137.382-.099.28-.087.242.095.453.046.048.102.03.154.023.054-.009.106-.03.16-.036.13-.013.26-.08.367-.015.204-.064.387-.122.571-.178.05-.015.089.005.114.054.022.042.034.093.082.121.038-.056-.013-.128.063-.178l.14.241-.042-1.46zm.278.358c-.096-.01-.107.01-.11.108-.002.038-.003.078.002.115.03.2.099.386.174.57.002.006.012.01.022.015l.078-.05c.052.036.081.088.153.088.205-.002.41.014.616.012.099-.001.158.042.205.12.018.03.024.077.088.066l-.08-.394c-.05-.195-.085-.395-.172-.589-.057.057-.114.068-.18.046a.72.72 0 00-.135-.028c-.22-.028-.44-.059-.66-.08zm10.254-1.727c.089.163.155.316.139.491-.016.168.026.342-.044.516-.047-.033-.088-.082-.112-.075-.117.035-.164-.057-.227-.115a4.772 4.772 0 01-.286-.29l-.104-.113a4.856 4.856 0 01-.023.019c.035.046.07.093.11.156.04.064.084.127.122.193.034.058.065.118.031.205-.082-.01-.164-.019-.246-.032-.06-.01-.101 0-.124.07-.031.098-.037.096-.15.09.02.042.036.08.057.116.041.074.03.138-.03.196-.06.06-.118.122-.178.181a.175.175 0 01-.185.046c-.222-.061-.447-.113-.67-.174-.032-.009-.063-.04-.086-.068-.03-.04-.052-.087-.08-.13-.044-.07-.09-.138-.136-.207a.18.18 0 00-.014.105c.012.127.03.253.035.38.005.1-.024.12-.121.104-.104-.017-.206-.04-.31-.058-.064-.012-.131-.028-.202.03l.081.208c.09 0 .166-.01.237.002a.819.819 0 01.458.251c.078.083.154.168.241.26l.018-.005c-.004-.006-.008-.013-.01-.04.014-.056-.062-.118.018-.178.031.03.064.057.088.09.058.078.111.159.169.257l.089.141.024-.013a2093.819 2093.819 0 01-.427-.934c.055.007.083.007.108.016.193.07.385.142.577.216.074.028.147.06.219.094.062.028.112.018.157-.033.05-.056.102-.112.154-.167.05-.051.095-.046.132.014.016.025.026.053.04.08.071.138.143.277.217.433l.159.308.025-.011c-.044-.106-.07-.218-.138-.334-.057-.182-.168-.346-.206-.545.136.034.362.326.567.732l.057.074.018-.011a1.563 1.563 0 01-.052-.127c-.046-.145-.097-.29-.136-.436-.022-.083-.036-.173.022-.26l.109.058-.026-.207.027-.016c.022.02.05.036.065.06.073.108.143.22.215.33.01.016.029.029.043.043-.036-.217-.2-.38-.229-.626l.155.112c.014-.166.012-.319.042-.465.032-.158-.023-.297-.063-.445.024.004.036.006.055.025.092.124.183.249.277.371.02.027.05.047.069.087l.04.063.019-.015a.293.293 0 01-.053-.082 27.922 27.922 0 01-.332-.49c-.221-.311-.363-.467-.485-.521zm-6.57.327c-.003.161.092.275.069.415l-.368.087c.09.139.032.237-.052.331-.05.057-.092.122-.143.178-.037.04-.046.078-.018.126l.16.275c.029.048.072.066.128.064.076-.003.152 0 .228-.001.116-.003.216.022.275.137.006.014.02.024.044.052.004-.059-.003-.098.01-.13.016-.04.04-.099.072-.108.084-.023.173-.024.26-.03.013-.001.027.018.04.029l.071.065c.019-.11-.082-.198-.024-.31l.126.04c-.026-.123-.07-.245-.071-.366 0-.123.051-.243.115-.36.107.062.16.156.234.253.183.265.36.533.494.834.165-.078.27.068.407.088-.003-.106-.133-.441-.197-.492a.142.142 0 00-.102-.028c-.06.011-.119.039-.191.063-.025-.039-.056-.078-.077-.122a3.936 3.936 0 00-.473-.783c-.076-.094-.16-.182-.228-.26l-.391.285c-.049.035-.094.03-.132-.017l-.169-.207c-.025-.03-.053-.059-.097-.108z"></path></svg>',
|
|
1237
|
+
perplexity: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M19.785 0v7.272H22.5V17.62h-2.935V24l-7.037-6.194v6.145h-1.091v-6.152L4.392 24v-6.465H1.5V7.188h2.884V0l7.053 6.494V.19h1.09v6.49L19.786 0zm-7.257 9.044v7.319l5.946 5.234V14.44l-5.946-5.397zm-1.099-.08l-5.946 5.398v7.235l5.946-5.234V8.965zm8.136 7.58h1.844V8.349H13.46l6.105 5.54v2.655zm-8.982-8.28H2.59v8.195h1.8v-2.576l6.192-5.62zM5.475 2.476v4.71h5.115l-5.115-4.71zm13.219 0l-5.115 4.71h5.115v-4.71z" fill="#22B8CD" fill-rule="nonzero"></path></svg>',
|
|
1238
|
+
openrouter: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M18.654 3.87a5.087 5.087 0 110 10.174L23.7 19.09c.64.641.187 1.737-.72 1.737H8.48a8.479 8.479 0 010-16.958h10.175zM8.479 7.26a5.087 5.087 0 100 10.176 5.087 5.087 0 000-10.175z" fill="#C8FF00"></path></svg>',
|
|
1239
|
+
groq: '<svg viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd" style="display:block;width:100%;height:100%"><path d="M12.036 2c-3.853-.035-7 3-7.036 6.781-.035 3.782 3.055 6.872 6.908 6.907h2.42v-2.566h-2.292c-2.407.028-4.38-1.866-4.408-4.23-.029-2.362 1.901-4.298 4.308-4.326h.1c2.407 0 4.358 1.915 4.365 4.278v6.305c0 2.342-1.944 4.25-4.323 4.279a4.375 4.375 0 01-3.033-1.252l-1.851 1.818A7 7 0 0012.029 22h.092c3.803-.056 6.858-3.083 6.879-6.816v-6.5C18.907 4.963 15.817 2 12.036 2z"></path></svg>',
|
|
1240
|
+
github: '<svg viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd" style="display:block;width:100%;height:100%"><path d="M12 0c6.63 0 12 5.276 12 11.79-.001 5.067-3.29 9.567-8.175 11.187-.6.118-.825-.25-.825-.56 0-.398.015-1.665.015-3.242 0-1.105-.375-1.813-.81-2.181 2.67-.295 5.475-1.297 5.475-5.822 0-1.297-.465-2.344-1.23-3.169.12-.295.54-1.503-.12-3.125 0 0-1.005-.324-3.3 1.209a11.32 11.32 0 00-3-.398c-1.02 0-2.04.133-3 .398-2.295-1.518-3.3-1.209-3.3-1.209-.66 1.622-.24 2.83-.12 3.125-.765.825-1.23 1.887-1.23 3.169 0 4.51 2.79 5.527 5.46 5.822-.345.294-.66.81-.765 1.577-.69.31-2.415.81-3.495-.973-.225-.354-.9-1.223-1.845-1.209-1.005.015-.405.56.015.781.51.28 1.095 1.327 1.23 1.666.24.663 1.02 1.93 4.035 1.385 0 .988.015 1.916.015 2.196 0 .31-.225.664-.825.56C3.303 21.374-.003 16.867 0 11.791 0 5.276 5.37 0 12 0z"></path></svg>',
|
|
1241
|
+
notion: '<svg viewBox="0 0 24 24" fill="currentColor" fill-rule="evenodd" style="display:block;width:100%;height:100%"><path clip-rule="evenodd" d="M15.257.055l-13.31.98C.874 1.128.5 1.83.5 2.667v14.559c0 .654.233 1.213.794 1.96l3.129 4.06c.513.653.98.794 1.962.745l15.457-.932c1.307-.093 1.681-.7 1.681-1.727V4.954c0-.53-.21-.684-.829-1.135l-.106-.078L18.34.755c-1.027-.746-1.45-.84-3.083-.7zm-8.521 4.63c-1.263.086-1.549.105-2.266-.477L2.647 2.76c-.186-.187-.092-.42.375-.466l12.796-.933c1.074-.094 1.634.28 2.054.606l2.195 1.587c.093.047.326.326.047.326l-13.216.794-.162.01zM5.263 21.193V7.287c0-.606.187-.886.748-.933l15.176-.886c.515-.047.748.28.748.886v13.81c0 .609-.093 1.122-.934 1.168l-14.523.84c-.842.047-1.215-.232-1.215-.98zm14.338-13.16c.093.422 0 .842-.422.89l-.699.139v10.264c-.608.327-1.168.513-1.635.513-.747 0-.934-.232-1.495-.932l-4.576-7.185v6.952l1.448.327s0 .84-1.169.84l-3.221.186c-.094-.187 0-.654.327-.747l.84-.232V9.853L7.832 9.76c-.093-.42.14-1.026.794-1.073l3.456-.232 4.763 7.279v-6.44l-1.214-.14c-.094-.513.28-.887.747-.933l3.223-.187z"></path></svg>',
|
|
1242
|
+
obsidian: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M9.643 14.012c.615-.183 1.605-.465 2.745-.534-.684-1.725-.849-3.235-.716-4.579.153-1.552.7-2.847 1.234-3.95.114-.235.223-.454.328-.664.149-.297.289-.577.42-.86.217-.47.378-.885.46-1.27.08-.38.08-.719-.014-1.044-.095-.325-.297-.675-.681-1.06a1.6 1.6 0 00-1.475.36l-4.95 4.453a1.602 1.602 0 00-.512.952l-.427 2.83c.67.592 2.327 2.317 3.335 4.71.09.213.174.432.253.656zM5.855 9.937c-.024.1-.057.197-.099.29L3.14 16.058a1.602 1.602 0 00.313 1.772l4.117 4.24c2.102-3.102 1.795-6.02.835-8.3-.728-1.73-1.832-3.083-2.55-3.833z" fill="#A88BFA"></path><path d="M8.52 22.57c.073.01.146.018.22.02.781.023 2.095.091 3.16.288.87.16 2.593.642 4.011 1.056 1.082.316 2.197-.548 2.354-1.664.115-.814.33-1.735.725-2.58l-.009.004c-.67-1.87-1.523-3.077-2.417-3.847a5.294 5.294 0 00-2.777-1.258c-1.541-.216-2.952.189-3.841.45.532 2.218.368 4.828-1.425 7.53z" fill="#A88BFA"></path><path d="M19.676 18.538a69.072 69.072 0 001.858-2.952.811.811 0 00-.061-.901c-.516-.684-1.504-2.075-2.042-3.362-.554-1.323-.636-3.378-.64-4.378a1.708 1.708 0 00-.359-1.051L15.235 1.83a3.757 3.757 0 01-.076.545c-.107.503-.307 1.004-.536 1.498-.135.29-.29.601-.446.915-.105.21-.21.42-.31.626-.517 1.068-.998 2.227-1.132 3.59-.125 1.262.046 2.73.814 4.484.128.01.257.025.386.043a6.364 6.364 0 013.327 1.506c.916.79 1.743 1.921 2.414 3.5z" fill="#A88BFA"></path></svg>',
|
|
1243
|
+
zapier: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path d="M18.5 16h-13v3h13v-3z" fill="#FF4F00"></path></svg>',
|
|
1244
|
+
n8n: '<svg viewBox="0 0 24 24" style="display:block;width:100%;height:100%"><path clip-rule="evenodd" d="M24 8.4c0 1.325-1.102 2.4-2.462 2.4-1.146 0-2.11-.765-2.384-1.8h-3.436c-.602 0-1.115.424-1.214 1.003l-.101.592a2.38 2.38 0 01-.8 1.405c.412.354.704.844.8 1.405l.1.592A1.222 1.222 0 0015.719 15h.975c.273-1.035 1.237-1.8 2.384-1.8 1.36 0 2.461 1.075 2.461 2.4S20.436 18 19.078 18c-1.147 0-2.11-.765-2.384-1.8h-.975c-1.204 0-2.23-.848-2.428-2.005l-.101-.592a1.222 1.222 0 00-1.214-1.003H10.97c-.308.984-1.246 1.7-2.356 1.7-1.11 0-2.048-.716-2.355-1.7H4.817c-.308.984-1.246 1.7-2.355 1.7C1.102 14.3 0 13.225 0 11.9s1.102-2.4 2.462-2.4c1.183 0 2.172.815 2.408 1.9h1.337c.236-1.085 1.225-1.9 2.408-1.9 1.184 0 2.172.815 2.408 1.9h.952c.601 0 1.115-.424 1.213-1.003l.102-.592c.198-1.157 1.225-2.005 2.428-2.005h3.436c.274-1.035 1.238-1.8 2.384-1.8C22.898 6 24 7.075 24 8.4zm-1.23 0c0 .663-.552 1.2-1.232 1.2-.68 0-1.23-.537-1.23-1.2 0-.663.55-1.2 1.23-1.2.68 0 1.231.537 1.231 1.2zM2.461 13.1c.68 0 1.23-.537 1.23-1.2 0-.663-.55-1.2-1.23-1.2-.68 0-1.231.537-1.231 1.2 0 .663.55 1.2 1.23 1.2zm6.153 0c.68 0 1.231-.537 1.231-1.2 0-.663-.55-1.2-1.23-1.2-.68 0-1.231.537-1.231 1.2 0 .663.55 1.2 1.23 1.2zm10.462 3.7c.68 0 1.23-.537 1.23-1.2 0-.663-.55-1.2-1.23-1.2-.68 0-1.23.537-1.23 1.2 0 .663.55 1.2 1.23 1.2z" fill="#EA4B71" fill-rule="evenodd"></path></svg>',
|
|
1245
|
+
gitlab: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="m23.6004 9.5927-.0337-.0862L20.3.9814a.851.851 0 0 0-.3362-.405.8748.8748 0 0 0-.9997.0539.8748.8748 0 0 0-.29.4399l-2.2055 6.748H7.5375l-2.2057-6.748a.8573.8573 0 0 0-.29-.4412.8748.8748 0 0 0-.9997-.0537.8585.8585 0 0 0-.3362.4049L.4332 9.5015l-.0325.0862a6.0657 6.0657 0 0 0 2.0119 7.0105l.0113.0087.03.0213 4.976 3.7264 2.462 1.8633 1.4995 1.1321a1.0085 1.0085 0 0 0 1.2197 0l1.4995-1.1321 2.4619-1.8633 5.006-3.7489.0125-.01a6.0682 6.0682 0 0 0 2.0094-7.003z"/></svg>',
|
|
1246
|
+
linear: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M2.886 4.18A11.982 11.982 0 0 1 11.99 0C18.624 0 24 5.376 24 12.009c0 3.64-1.62 6.903-4.18 9.105L2.887 4.18ZM1.817 5.626l16.556 16.556c-.524.33-1.075.62-1.65.866L.951 7.277c.247-.575.537-1.126.866-1.65ZM.322 9.163l14.515 14.515c-.71.172-1.443.282-2.195.322L0 11.358a12 12 0 0 1 .322-2.195Zm-.17 4.862 9.823 9.824a12.02 12.02 0 0 1-9.824-9.824Z"/></svg>',
|
|
1247
|
+
discord: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"/></svg>',
|
|
1248
|
+
figma: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M15.852 8.981h-4.588V0h4.588c2.476 0 4.49 2.014 4.49 4.49s-2.014 4.491-4.49 4.491zM12.735 7.51h3.117c1.665 0 3.019-1.355 3.019-3.019s-1.355-3.019-3.019-3.019h-3.117V7.51zm0 1.471H8.148c-2.476 0-4.49-2.014-4.49-4.49S5.672 0 8.148 0h4.588v8.981zm-4.587-7.51c-1.665 0-3.019 1.355-3.019 3.019s1.354 3.02 3.019 3.02h3.117V1.471H8.148zm4.587 15.019H8.148c-2.476 0-4.49-2.014-4.49-4.49s2.014-4.49 4.49-4.49h4.588v8.98zM8.148 8.981c-1.665 0-3.019 1.355-3.019 3.019s1.355 3.019 3.019 3.019h3.117V8.981H8.148zM8.172 24c-2.489 0-4.515-2.014-4.515-4.49s2.014-4.49 4.49-4.49h4.588v4.441c0 2.503-2.047 4.539-4.563 4.539zm-.024-7.51a3.023 3.023 0 0 0-3.019 3.019c0 1.665 1.365 3.019 3.044 3.019 1.705 0 3.093-1.376 3.093-3.068v-2.97H8.148zm7.704 0h-.098c-2.476 0-4.49-2.014-4.49-4.49s2.014-4.49 4.49-4.49h.098c2.476 0 4.49 2.014 4.49 4.49s-2.014 4.49-4.49 4.49zm-.097-7.509c-1.665 0-3.019 1.355-3.019 3.019s1.355 3.019 3.019 3.019h.098c1.665 0 3.019-1.355 3.019-3.019s-1.355-3.019-3.019-3.019h-.098z"/></svg>',
|
|
1249
|
+
jira: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M11.571 11.513H0a5.218 5.218 0 0 0 5.232 5.215h2.13v2.057A5.215 5.215 0 0 0 12.575 24V12.518a1.005 1.005 0 0 0-1.005-1.005zm5.723-5.756H5.736a5.215 5.215 0 0 0 5.215 5.214h2.129v2.058a5.218 5.218 0 0 0 5.215 5.214V6.758a1.001 1.001 0 0 0-1.001-1.001zM23.013 0H11.455a5.215 5.215 0 0 0 5.215 5.215h2.129v2.057A5.215 5.215 0 0 0 24 12.483V1.005A1.001 1.001 0 0 0 23.013 0Z"/></svg>',
|
|
1250
|
+
trello: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M21.147 0H2.853A2.86 2.86 0 000 2.853v18.294A2.86 2.86 0 002.853 24h18.294A2.86 2.86 0 0024 21.147V2.853A2.86 2.86 0 0021.147 0zM10.34 17.287a.953.953 0 01-.953.953h-4a.954.954 0 01-.954-.953V5.38a.953.953 0 01.954-.953h4a.954.954 0 01.953.953zm9.233-5.467a.944.944 0 01-.953.947h-4a.947.947 0 01-.953-.947V5.38a.953.953 0 01.953-.953h4a.954.954 0 01.953.953z"/></svg>',
|
|
1251
|
+
asana: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M18.78 12.653c-2.882 0-5.22 2.336-5.22 5.22s2.338 5.22 5.22 5.22 5.22-2.34 5.22-5.22-2.336-5.22-5.22-5.22zm-13.56 0c-2.88 0-5.22 2.337-5.22 5.22s2.338 5.22 5.22 5.22 5.22-2.338 5.22-5.22-2.336-5.22-5.22-5.22zm12-6.525c0 2.883-2.337 5.22-5.22 5.22-2.882 0-5.22-2.337-5.22-5.22 0-2.88 2.338-5.22 5.22-5.22 2.883 0 5.22 2.34 5.22 5.22z"/></svg>',
|
|
1252
|
+
todoist: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M21 0H3C1.35 0 0 1.35 0 3v3.858s3.854 2.24 4.098 2.38c.31.18.694.177 1.004 0 .26-.147 8.02-4.608 8.136-4.675.279-.161.58-.107.748-.01.164.097.606.348.84.48.232.134.221.502.013.622l-9.712 5.59c-.346.2-.69.204-1.048.002C3.478 10.907.998 9.463 0 8.882v2.02l4.098 2.38c.31.18.694.177 1.004 0 .26-.147 8.02-4.609 8.136-4.676.279-.16.58-.106.748-.008.164.096.606.347.84.48.232.133.221.5.013.62-.208.121-9.288 5.346-9.712 5.59-.346.2-.69.205-1.048.002C3.478 14.951.998 13.506 0 12.926v2.02l4.098 2.38c.31.18.694.177 1.004 0 .26-.147 8.02-4.609 8.136-4.676.279-.16.58-.106.748-.009.164.097.606.348.84.48.232.133.221.502.013.622l-9.712 5.59c-.346.199-.69.204-1.048.001C3.478 18.994.998 17.55 0 16.97V21c0 1.65 1.35 3 3 3h18c1.65 0 3-1.35 3-3V3c0-1.65-1.35-3-3-3z"/></svg>',
|
|
1253
|
+
airtable: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M11.992 1.966c-.434 0-.87.086-1.28.257L1.779 5.917c-.503.208-.49.908.012 1.116l8.982 3.558a3.266 3.266 0 0 0 2.454 0l8.982-3.558c.503-.196.503-.908.012-1.116l-8.957-3.694a3.255 3.255 0 0 0-1.272-.257zM23.4 8.056a.589.589 0 0 0-.222.045l-10.012 3.877a.612.612 0 0 0-.38.564v8.896a.6.6 0 0 0 .821.552L23.62 18.1a.583.583 0 0 0 .38-.551V8.653a.6.6 0 0 0-.6-.596zM.676 8.095a.644.644 0 0 0-.48.19C.086 8.396 0 8.53 0 8.69v8.355c0 .442.515.737.908.54l6.27-3.006.307-.147 2.969-1.436c.466-.22.43-.908-.061-1.092L.883 8.138a.57.57 0 0 0-.207-.044z"/></svg>',
|
|
1254
|
+
gmail: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M24 5.457v13.909c0 .904-.732 1.636-1.636 1.636h-3.819V11.73L12 16.64l-6.545-4.91v9.273H1.636A1.636 1.636 0 0 1 0 19.366V5.457c0-2.023 2.309-3.178 3.927-1.964L5.455 4.64 12 9.548l6.545-4.91 1.528-1.145C21.69 2.28 24 3.434 24 5.457z"/></svg>',
|
|
1255
|
+
"google-drive": '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M12.01 1.485c-2.082 0-3.754.02-3.743.047.01.02 1.708 3.001 3.774 6.62l3.76 6.574h3.76c2.081 0 3.753-.02 3.742-.047-.005-.02-1.708-3.001-3.775-6.62l-3.76-6.574zm-4.76 1.73a789.828 789.861 0 0 0-3.63 6.319L0 15.868l1.89 3.298 1.885 3.297 3.62-6.335 3.618-6.33-1.88-3.287C8.1 4.704 7.255 3.22 7.25 3.214zm2.259 12.653-.203.348c-.114.198-.96 1.672-1.88 3.287a423.93 423.948 0 0 1-1.698 2.97c-.01.026 3.24.042 7.222.042h7.244l1.796-3.157c.992-1.734 1.85-3.23 1.906-3.323l.104-.167h-7.249z"/></svg>',
|
|
1256
|
+
"google-calendar": '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M18.316 5.684H24v12.632h-5.684V5.684zM5.684 24h12.632v-5.684H5.684V24zM18.316 5.684V0H1.895A1.894 1.894 0 0 0 0 1.895v16.421h5.684V5.684h12.632zm-7.207 6.25v-.065c.272-.144.5-.349.687-.617s.279-.595.279-.982c0-.379-.099-.72-.3-1.025a2.05 2.05 0 0 0-.832-.714 2.703 2.703 0 0 0-1.197-.257c-.6 0-1.094.156-1.481.467-.386.311-.65.671-.793 1.078l1.085.452c.086-.249.224-.461.413-.633.189-.172.445-.257.767-.257.33 0 .602.088.816.264a.86.86 0 0 1 .322.703c0 .33-.12.589-.36.778-.24.19-.535.284-.886.284h-.567v1.085h.633c.407 0 .748.109 1.02.327.272.218.407.499.407.843 0 .336-.129.614-.387.832s-.565.327-.924.327c-.351 0-.651-.103-.897-.311-.248-.208-.422-.502-.521-.881l-1.096.452c.178.616.505 1.082.977 1.401.472.319.984.478 1.538.477a2.84 2.84 0 0 0 1.293-.291c.382-.193.684-.458.902-.794.218-.336.327-.72.327-1.149 0-.429-.115-.797-.344-1.105a2.067 2.067 0 0 0-.881-.689zm2.093-1.931l.602.913L15 10.045v5.744h1.187V8.446h-.827l-2.158 1.557zM22.105 0h-3.289v5.184H24V1.895A1.894 1.894 0 0 0 22.105 0zm-3.289 23.5l4.684-4.684h-4.684V23.5zM0 22.105C0 23.152.848 24 1.895 24h3.289v-5.184H0v3.289z"/></svg>',
|
|
1257
|
+
dropbox: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M6 1.807L0 5.629l6 3.822 6.001-3.822L6 1.807zM18 1.807l-6 3.822 6 3.822 6-3.822-6-3.822zM0 13.274l6 3.822 6.001-3.822L6 9.452l-6 3.822zM18 9.452l-6 3.822 6 3.822 6-3.822-6-3.822zM6 18.371l6.001 3.822 6-3.822-6-3.822L6 18.371z"/></svg>',
|
|
1258
|
+
stripe: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M13.976 9.15c-2.172-.806-3.356-1.426-3.356-2.409 0-.831.683-1.305 1.901-1.305 2.227 0 4.515.858 6.09 1.631l.89-5.494C18.252.975 15.697 0 12.165 0 9.667 0 7.589.654 6.104 1.872 4.56 3.147 3.757 4.992 3.757 7.218c0 4.039 2.467 5.76 6.476 7.219 2.585.92 3.445 1.574 3.445 2.583 0 .98-.84 1.545-2.354 1.545-1.875 0-4.965-.921-6.99-2.109l-.9 5.555C5.175 22.99 8.385 24 11.714 24c2.641 0 4.843-.624 6.328-1.813 1.664-1.305 2.525-3.236 2.525-5.732 0-4.128-2.524-5.851-6.594-7.305h.003z"/></svg>',
|
|
1259
|
+
cloudflare: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M16.5088 16.8447c.1475-.5068.0908-.9707-.1553-1.3154-.2246-.3164-.6045-.499-1.0615-.5205l-8.6592-.1123a.1559.1559 0 0 1-.1333-.0713c-.0283-.042-.0351-.0986-.021-.1553.0278-.084.1123-.1484.2036-.1562l8.7359-.1123c1.0351-.0489 2.1601-.8868 2.5537-1.9136l.499-1.3013c.0215-.0561.0293-.1128.0147-.168-.5625-2.5463-2.835-4.4453-5.5499-4.4453-2.5039 0-4.6284 1.6177-5.3876 3.8614-.4927-.3658-1.1187-.5625-1.794-.499-1.2026.119-2.1665 1.083-2.2861 2.2856-.0283.31-.0069.6128.0635.894C1.5683 13.171 0 14.7754 0 16.752c0 .1748.0142.3515.0352.5273.0141.083.0844.1475.1689.1475h15.9814c.0909 0 .1758-.0645.2032-.1553l.12-.4268zm2.7568-5.5634c-.0771 0-.1611 0-.2383.0112-.0566 0-.1054.0415-.127.0976l-.3378 1.1744c-.1475.5068-.0918.9707.1543 1.3164.2256.3164.6055.498 1.0625.5195l1.8437.1133c.0557 0 .1055.0263.1329.0703.0283.043.0351.1074.0214.1562-.0283.084-.1132.1485-.204.1553l-1.921.1123c-1.041.0488-2.1582.8867-2.5527 1.914l-.1406.3585c-.0283.0713.0215.1416.0986.1416h6.5977c.0771 0 .1474-.0489.169-.126.1122-.4082.1757-.837.1757-1.2803 0-2.6025-2.125-4.727-4.7344-4.727"/></svg>',
|
|
1260
|
+
postgres: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M23.5594 14.7228a.5269.5269 0 0 0-.0563-.1191c-.139-.2632-.4768-.3418-1.0074-.2321-1.6533.3411-2.2935.1312-2.5256-.0191 1.342-2.0482 2.445-4.522 3.0411-6.8297.2714-1.0507.7982-3.5237.1222-4.7316a1.5641 1.5641 0 0 0-.1509-.235C21.6931.9086 19.8007.0248 17.5099.0005c-1.4947-.0158-2.7705.3461-3.1161.4794a9.449 9.449 0 0 0-.5159-.0816 8.044 8.044 0 0 0-1.3114-.1278c-1.1822-.0184-2.2038.2642-3.0498.8406-.8573-.3211-4.7888-1.645-7.2219.0788C.9359 2.1526.3086 3.8733.4302 6.3043c.0409.818.5069 3.334 1.2423 5.7436.4598 1.5065.9387 2.7019 1.4334 3.582.553.9942 1.1259 1.5933 1.7143 1.7895.4474.1491 1.1327.1441 1.8581-.7279.8012-.9635 1.5903-1.8258 1.9446-2.2069.4351.2355.9064.3625 1.39.3772a.0569.0569 0 0 0 .0004.0041 11.0312 11.0312 0 0 0-.2472.3054c-.3389.4302-.4094.5197-1.5002.7443-.3102.064-1.1344.2339-1.1464.8115-.0025.1224.0329.2309.0919.3268.2269.4231.9216.6097 1.015.6331 1.3345.3335 2.5044.092 3.3714-.6787-.017 2.231.0775 4.4174.3454 5.0874.2212.5529.7618 1.9045 2.4692 1.9043.2505 0 .5263-.0291.8296-.0941 1.7819-.3821 2.5557-1.1696 2.855-2.9059.1503-.8707.4016-2.8753.5388-4.1012.0169-.0703.0357-.1207.057-.1362.0007-.0005.0697-.0471.4272.0307a.3673.3673 0 0 0 .0443.0068l.2539.0223.0149.001c.8468.0384 1.9114-.1426 2.5312-.4308.6438-.2988 1.8057-1.0323 1.5951-1.6698zM2.371 11.8765c-.7435-2.4358-1.1779-4.8851-1.2123-5.5719-.1086-2.1714.4171-3.6829 1.5623-4.4927 1.8367-1.2986 4.8398-.5408 6.108-.13-.0032.0032-.0066.0061-.0098.0094-2.0238 2.044-1.9758 5.536-1.9708 5.7495-.0002.0823.0066.1989.0162.3593.0348.5873.0996 1.6804-.0735 2.9184-.1609 1.1504.1937 2.2764.9728 3.0892.0806.0841.1648.1631.2518.2374-.3468.3714-1.1004 1.1926-1.9025 2.1576-.5677.6825-.9597.5517-1.0886.5087-.3919-.1307-.813-.5871-1.2381-1.3223-.4796-.839-.9635-2.0317-1.4155-3.5126zm6.0072 5.0871c-.1711-.0428-.3271-.1132-.4322-.1772.0889-.0394.2374-.0902.4833-.1409 1.2833-.2641 1.4815-.4506 1.9143-1.0002.0992-.126.2116-.2687.3673-.4426a.3549.3549 0 0 0 .0737-.1298c.1708-.1513.2724-.1099.4369-.0417.156.0646.3078.26.3695.4752.0291.1016.0619.2945-.0452.4444-.9043 1.2658-2.2216 1.2494-3.1676 1.0128zm2.094-3.988-.0525.141c-.133.3566-.2567.6881-.3334 1.003-.6674-.0021-1.3168-.2872-1.8105-.8024-.6279-.6551-.9131-1.5664-.7825-2.5004.1828-1.3079.1153-2.4468.079-3.0586-.005-.0857-.0095-.1607-.0122-.2199.2957-.2621 1.6659-.9962 2.6429-.7724.4459.1022.7176.4057.8305.928.5846 2.7038.0774 3.8307-.3302 4.7363-.084.1866-.1633.3629-.2311.5454zm7.3637 4.5725c-.0169.1768-.0358.376-.0618.5959l-.146.4383a.3547.3547 0 0 0-.0182.1077c-.0059.4747-.054.6489-.115.8693-.0634.2292-.1353.4891-.1794 1.0575-.11 1.4143-.8782 2.2267-2.4172 2.5565-1.5155.3251-1.7843-.4968-2.0212-1.2217a6.5824 6.5824 0 0 0-.0769-.2266c-.2154-.5858-.1911-1.4119-.1574-2.5551.0165-.5612-.0249-1.9013-.3302-2.6462.0044-.2932.0106-.5909.019-.8918a.3529.3529 0 0 0-.0153-.1126 1.4927 1.4927 0 0 0-.0439-.208c-.1226-.4283-.4213-.7866-.7797-.9351-.1424-.059-.4038-.1672-.7178-.0869.067-.276.1831-.5875.309-.9249l.0529-.142c.0595-.16.134-.3257.213-.5012.4265-.9476 1.0106-2.2453.3766-5.1772-.2374-1.0981-1.0304-1.6343-2.2324-1.5098-.7207.0746-1.3799.3654-1.7088.5321a5.6716 5.6716 0 0 0-.1958.1041c.0918-1.1064.4386-3.1741 1.7357-4.4823a4.0306 4.0306 0 0 1 .3033-.276.3532.3532 0 0 0 .1447-.0644c.7524-.5706 1.6945-.8506 2.802-.8325.4091.0067.8017.0339 1.1742.081 1.939.3544 3.2439 1.4468 4.0359 2.3827.8143.9623 1.2552 1.9315 1.4312 2.4543-1.3232-.1346-2.2234.1268-2.6797.779-.9926 1.4189.543 4.1729 1.2811 5.4964.1353.2426.2522.4522.2889.5413.2403.5825.5515.9713.7787 1.2552.0696.087.1372.1714.1885.245-.4008.1155-1.1208.3825-1.0552 1.717-.0123.1563-.0423.4469-.0834.8148-.0461.2077-.0702.4603-.0994.7662zm.8905-1.6211c-.0405-.8316.2691-.9185.5967-1.0105a2.8566 2.8566 0 0 0 .135-.0406 1.202 1.202 0 0 0 .1342.103c.5703.3765 1.5823.4213 3.0068.1344-.2016.1769-.5189.3994-.9533.6011-.4098.1903-1.0957.333-1.7473.3636-.7197.0336-1.0859-.0807-1.1721-.151zm.5695-9.2712c-.0059.3508-.0542.6692-.1054 1.0017-.055.3576-.112.7274-.1264 1.1762-.0142.4368.0404.8909.0932 1.3301.1066.887.216 1.8003-.2075 2.7014a3.5272 3.5272 0 0 1-.1876-.3856c-.0527-.1276-.1669-.3326-.3251-.6162-.6156-1.1041-2.0574-3.6896-1.3193-4.7446.3795-.5427 1.3408-.5661 2.1781-.463zm.2284 7.0137a12.3762 12.3762 0 0 0-.0853-.1074l-.0355-.0444c.7262-1.1995.5842-2.3862.4578-3.4385-.0519-.4318-.1009-.8396-.0885-1.2226.0129-.4061.0666-.7543.1185-1.0911.0639-.415.1288-.8443.1109-1.3505.0134-.0531.0188-.1158.0118-.1902-.0457-.4855-.5999-1.938-1.7294-3.253-.6076-.7073-1.4896-1.4972-2.6889-2.0395.5251-.1066 1.2328-.2035 2.0244-.1859 2.0515.0456 3.6746.8135 4.8242 2.2824a.908.908 0 0 1 .0667.1002c.7231 1.3556-.2762 6.2751-2.9867 10.5405zm-8.8166-6.1162c-.025.1794-.3089.4225-.6211.4225a.5821.5821 0 0 1-.0809-.0056c-.1873-.026-.3765-.144-.5059-.3156-.0458-.0605-.1203-.178-.1055-.2844.0055-.0401.0261-.0985.0925-.1488.1182-.0894.3518-.1226.6096-.0867.3163.0441.6426.1938.6113.4186zm7.9305-.4114c.0111.0792-.049.201-.1531.3102-.0683.0717-.212.1961-.4079.2232a.5456.5456 0 0 1-.075.0052c-.2935 0-.5414-.2344-.5607-.3717-.024-.1765.2641-.3106.5611-.352.297-.0414.6111.0088.6356.1851z"/></svg>',
|
|
1261
|
+
supabase: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M11.9 1.036c-.015-.986-1.26-1.41-1.874-.637L.764 12.05C-.33 13.427.65 15.455 2.409 15.455h9.579l.113 7.51c.014.985 1.259 1.408 1.873.636l9.262-11.653c1.093-1.375.113-3.403-1.645-3.403h-9.642z"/></svg>',
|
|
1262
|
+
vercel: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="m12 1.608 12 20.784H0Z"/></svg>',
|
|
1263
|
+
sentry: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M13.91 2.505c-.873-1.448-2.972-1.448-3.844 0L6.904 7.92a15.478 15.478 0 0 1 8.53 12.811h-2.221A13.301 13.301 0 0 0 5.784 9.814l-2.926 5.06a7.65 7.65 0 0 1 4.435 5.848H2.194a.365.365 0 0 1-.298-.534l1.413-2.402a5.16 5.16 0 0 0-1.614-.913L.296 19.275a2.182 2.182 0 0 0 .812 2.999 2.24 2.24 0 0 0 1.086.288h6.983a9.322 9.322 0 0 0-3.845-8.318l1.11-1.922a11.47 11.47 0 0 1 4.95 10.24h5.915a17.242 17.242 0 0 0-7.885-15.28l2.244-3.845a.37.37 0 0 1 .504-.13c.255.14 9.75 16.708 9.928 16.9a.365.365 0 0 1-.327.543h-2.287c.029.612.029 1.223 0 1.831h2.297a2.206 2.206 0 0 0 1.922-3.31z"/></svg>',
|
|
1264
|
+
apple: '<svg viewBox="0 0 24 24" fill="currentColor" style="display:block;width:100%;height:100%"><path d="M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701"/></svg>',
|
|
1265
|
+
linux: '<svg viewBox="0 0 216 256" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:block;width:100%;height:100%"><defs id="tux_fx"><linearGradient id="gradient_belly_shadow"><stop offset="0" stop-color="#000000"/><stop offset="1" stop-color="#000000" stop-opacity="0.25"/></linearGradient><linearGradient id="gradient_wing_tip_right_shadow"><stop offset="0" stop-color="#110800"/><stop offset="0.59" stop-color="#a65a00" stop-opacity="0.8"/><stop offset="1" stop-color="#ff921e" stop-opacity="0"/></linearGradient><linearGradient id="gradient_wing_tip_right_glare_1"><stop offset="0" stop-color="#7c7c7c"/><stop offset="1" stop-color="#7c7c7c" stop-opacity="0.33"/></linearGradient><linearGradient id="gradient_wing_tip_right_glare_2"><stop offset="0" stop-color="#7c7c7c"/><stop offset="1" stop-color="#7c7c7c" stop-opacity="0.33"/></linearGradient><linearGradient id="gradient_foot_left_layer_1"><stop offset="0" stop-color="#b98309"/><stop offset="1" stop-color="#382605"/></linearGradient><linearGradient id="gradient_foot_left_glare"><stop offset="0" stop-color="#ebc40c"/><stop offset="1" stop-color="#ebc40c" stop-opacity="0"/></linearGradient><linearGradient id="gradient_foot_right_shadow"><stop offset="0" stop-color="#000000"/><stop offset="1" stop-color="#000000" stop-opacity="0"/></linearGradient><linearGradient id="gradient_foot_right_layer_1"><stop offset="0" stop-color="#3e2a06"/><stop offset="1" stop-color="#ad780a"/></linearGradient><linearGradient id="gradient_foot_right_glare"><stop offset="0" stop-color="#f3cd0c"/><stop offset="1" stop-color="#f3cd0c" stop-opacity="0"/></linearGradient><linearGradient id="gradient_eyeball"><stop offset="0" stop-color="#fefefc"/><stop offset="0.75" stop-color="#fefefc"/><stop offset="1" stop-color="#d4d4d4"/></linearGradient><linearGradient id="gradient_pupil_left_glare"><stop offset="0" stop-color="#757574" stop-opacity="0"/><stop offset="0.25" stop-color="#757574"/><stop offset="0.5" stop-color="#757574"/><stop offset="1" stop-color="#757574" stop-opacity="0"/></linearGradient><linearGradient id="gradient_pupil_right_glare_2"><stop offset="0" stop-color="#949494" stop-opacity="0.39"/><stop offset="0.5" stop-color="#949494"/><stop offset="1" stop-color="#949494" stop-opacity="0.39"/></linearGradient><linearGradient id="gradient_eyelid_left"><stop offset="0" stop-color="#c8c8c8"/><stop offset="1" stop-color="#797978"/></linearGradient><linearGradient id="gradient_eyelid_right"><stop offset="0" stop-color="#747474"/><stop offset="0.13" stop-color="#8c8c8c"/><stop offset="0.25" stop-color="#a4a4a4"/><stop offset="0.5" stop-color="#d4d4d4"/><stop offset="0.62" stop-color="#d4d4d4"/><stop offset="1" stop-color="#7c7c7c"/></linearGradient><linearGradient id="gradient_eyebrow"><stop offset="0" stop-color="#646464" stop-opacity="0"/><stop offset="0.31" stop-color="#646464" stop-opacity="0.58"/><stop offset="0.47" stop-color="#646464"/><stop offset="0.73" stop-color="#646464" stop-opacity="0.26"/><stop offset="1" stop-color="#646464" stop-opacity="0"/></linearGradient><linearGradient id="gradient_beak_base"><stop offset="0" stop-color="#020204"/><stop offset="0.73" stop-color="#020204"/><stop offset="1" stop-color="#5c5c5c"/></linearGradient><linearGradient id="gradient_mandible_lower"><stop offset="0" stop-color="#d2940a"/><stop offset="0.75" stop-color="#d89c08"/><stop offset="0.87" stop-color="#b67e07"/><stop offset="1" stop-color="#946106"/></linearGradient><linearGradient id="gradient_mandible_upper"><stop offset="0" stop-color="#ad780a"/><stop offset="0.12" stop-color="#d89e08"/><stop offset="0.25" stop-color="#edb80b"/><stop offset="0.39" stop-color="#ebc80d"/><stop offset="0.53" stop-color="#f5d838"/><stop offset="0.77" stop-color="#f6d811"/><stop offset="1" stop-color="#f5cd31"/></linearGradient><linearGradient id="gradient_nares"><stop offset="0" stop-color="#3a2903"/><stop offset="0.55" stop-color="#735208"/><stop offset="1" stop-color="#ac8c04"/></linearGradient><linearGradient id="gradient_beak_corner"><stop offset="0" stop-color="#f5ce2d"/><stop offset="1" stop-color="#d79b08"/></linearGradient><radialGradient id="fill_belly_shadow_left" href="#gradient_belly_shadow" xlink:href="#gradient_belly_shadow" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(61.18,121.19) scale(19,18)"/><radialGradient id="fill_belly_shadow_right" href="#gradient_belly_shadow" xlink:href="#gradient_belly_shadow" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(125.74,131.6) scale(23.6,18)"/><radialGradient id="fill_belly_shadow_middle" href="#gradient_belly_shadow" xlink:href="#gradient_belly_shadow" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(94.21,127.47) scale(9.35,10)"/><linearGradient id="fill_foot_left_base" href="#gradient_foot_left_layer_1" xlink:href="#gradient_foot_left_layer_1" gradientUnits="userSpaceOnUse" x1="23.18" y1="193.01" x2="64.31" y2="262.02"/><linearGradient id="fill_foot_left_glare" href="#gradient_foot_left_glare" xlink:href="#gradient_foot_left_glare" gradientUnits="userSpaceOnUse" x1="64.47" y1="210.83" x2="77.41" y2="235.21"/><linearGradient id="fill_foot_right_shadow" href="#gradient_foot_right_shadow" xlink:href="#gradient_foot_right_shadow" gradientUnits="userSpaceOnUse" x1="146.93" y1="211.96" x2="150.2" y2="235.73"/><linearGradient id="fill_foot_right_base" href="#gradient_foot_right_layer_1" xlink:href="#gradient_foot_right_layer_1" gradientUnits="userSpaceOnUse" x1="151.5" y1="253.02" x2="192.94" y2="185.84"/><linearGradient id="fill_foot_right_glare" href="#gradient_foot_right_glare" xlink:href="#gradient_foot_right_glare" gradientUnits="userSpaceOnUse" x1="162.81" y1="180.67" x2="161.59" y2="191.64"/><radialGradient id="fill_wing_tip_right_shadow_lower" href="#gradient_wing_tip_right_shadow" xlink:href="#gradient_wing_tip_right_shadow" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(169.71,194.53) rotate(15) scale(19.66,20.64)"/><radialGradient id="fill_wing_tip_right_shadow_upper" href="#gradient_wing_tip_right_shadow" xlink:href="#gradient_wing_tip_right_shadow" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(169.71,189.89) rotate(-2.42) scale(19.74,14.86)"/><radialGradient id="fill_wing_tip_right_glare_1" href="#gradient_wing_tip_right_glare_1" xlink:href="#gradient_wing_tip_right_glare_1" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(184.65,176.62) rotate(23.5) scale(6.95,3.21)"/><linearGradient id="fill_wing_tip_right_glare_2" href="#gradient_wing_tip_right_glare_2" xlink:href="#gradient_wing_tip_right_glare_2" gradientUnits="userSpaceOnUse" x1="165.69" y1="173.58" x2="168.27" y2="173.47"/><radialGradient id="fill_eyeball_left" href="#gradient_eyeball" xlink:href="#gradient_eyeball" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(86.49,51.41) rotate(-0.6) scale(10.24,15.68)"/><linearGradient id="fill_pupil_left_glare" href="#gradient_pupil_left_glare" xlink:href="#gradient_pupil_left_glare" gradientUnits="userSpaceOnUse" x1="84.29" y1="46.64" x2="89.32" y2="55.63"/><radialGradient id="fill_eyelid_left" href="#gradient_eyelid_left" xlink:href="#gradient_eyelid_left" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(84.89,43.74) rotate(-9.35) scale(6.25,5.77)"/><linearGradient id="fill_eyebrow_left" href="#gradient_eyebrow" xlink:href="#gradient_eyebrow" gradientUnits="userSpaceOnUse" x1="83.59" y1="32.51" x2="94.48" y2="43.63"/><radialGradient id="fill_eyeball_right" href="#gradient_eyeball" xlink:href="#gradient_eyeball" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(118.06,51.41) rotate(-1.8) scale(13.64,15.68)"/><linearGradient id="fill_pupil_right_glare" href="#gradient_pupil_right_glare_2" xlink:href="#gradient_pupil_right_glare_2" gradientUnits="userSpaceOnUse" x1="117.87" y1="47.25" x2="123.66" y2="54.11"/><linearGradient id="fill_eyelid_right" href="#gradient_eyelid_right" xlink:href="#gradient_eyelid_right" gradientUnits="userSpaceOnUse" x1="112.9" y1="36.23" x2="131.32" y2="47.01"/><linearGradient id="fill_eyebrow_right" href="#gradient_eyebrow" xlink:href="#gradient_eyebrow" gradientUnits="userSpaceOnUse" x1="119.16" y1="31.56" x2="131.42" y2="43.14"/><radialGradient id="fill_beak_base" href="#gradient_beak_base" xlink:href="#gradient_beak_base" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(97.64,60.12) rotate(-36) scale(11.44,10.38)"/><radialGradient id="fill_mandible_lower_base" href="#gradient_mandible_lower" xlink:href="#gradient_mandible_lower" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(109.77,70.61) rotate(-22.4) scale(27.15,19.07)"/><linearGradient id="fill_mandible_upper_base" href="#gradient_mandible_upper" xlink:href="#gradient_mandible_upper" gradientUnits="userSpaceOnUse" x1="78.09" y1="69.26" x2="126.77" y2="68.88"/><radialGradient id="fill_naris_left" href="#gradient_nares" xlink:href="#gradient_nares" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(92.11,59.88) scale(1.32,1.42)"/><radialGradient id="fill_naris_right" href="#gradient_nares" xlink:href="#gradient_nares" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(104.65,59.7) scale(2.78,1.62)"/><linearGradient id="fill_beak_corner" href="#gradient_beak_corner" xlink:href="#gradient_beak_corner" gradientUnits="userSpaceOnUse" x1="126.74" y1="67.49" x2="126.74" y2="71.09"/><filter id="blur_belly_shadow_left"><feGaussianBlur stdDeviation="0.64 0.55"/></filter><filter id="blur_belly_shadow_right"><feGaussianBlur stdDeviation="0.98"/></filter><filter id="blur_belly_shadow_middle"><feGaussianBlur stdDeviation="0.68"/></filter><filter id="blur_belly_shadow_lower" x="-0.8" width="2.6" y="-0.2" height="1.4"><feGaussianBlur stdDeviation="1.25"/></filter><filter id="blur_belly_glare" x="-0.8" width="2.6" y="-0.5" height="2"><feGaussianBlur stdDeviation="1.78 2.19"/></filter><filter id="blur_head_glare" x="-0.3" width="1.6" y="-0.3" height="1.6"><feGaussianBlur stdDeviation="1.73"/></filter><filter id="blur_neck_glare" x="-0.2" width="1.4" y="-0.2" height="1.4"><feGaussianBlur stdDeviation="0.78"/></filter><filter id="blur_wing_left_glare" x="-0.2" width="1.4" y="-0.2" height="1.4"><feGaussianBlur stdDeviation="0.98"/></filter><filter id="blur_wing_right_glare" x="-0.2" width="1.4" y="-0.2" height="1.4"><feGaussianBlur stdDeviation="1.19 1.17"/></filter><filter id="blur_foot_left_layer_1" x="-0.2" width="1.4" y="-0.2" height="1.4"><feGaussianBlur stdDeviation="3.38"/></filter><filter id="blur_foot_left_layer_2"><feGaussianBlur stdDeviation="2.1 2.06"/></filter><filter id="blur_foot_left_glare"><feGaussianBlur stdDeviation="0.32"/></filter><filter id="blur_foot_right_shadow"><feGaussianBlur stdDeviation="1.95 1.9"/></filter><filter id="blur_foot_right_layer_1" x="-0.2" width="1.4" y="-0.2" height="1.4"><feGaussianBlur stdDeviation="4.12"/></filter><filter id="blur_foot_right_layer_2" x="-0.2" width="1.4" y="-0.2" height="1.4"><feGaussianBlur stdDeviation="3.12 3.37"/></filter><filter id="blur_foot_right_glare" x="-0.2" width="1.4" y="-0.2" height="1.4"><feGaussianBlur stdDeviation="0.41"/></filter><filter id="blur_wing_tip_right_shadow_lower" x="-0.3" width="1.6" y="-0.3" height="1.6"><feGaussianBlur stdDeviation="2.45"/></filter><filter id="blur_wing_tip_right_shadow_upper" x="-0.2" width="1.4" y="-0.2" height="1.4"><feGaussianBlur stdDeviation="1.12 0.81"/></filter><filter id="blur_wing_tip_right_glare" x="-0.2" width="1.4" y="-0.2" height="1.4"><feGaussianBlur stdDeviation="0.88"/></filter><filter id="blur_pupil_left_glare" x="-0.3" width="1.6" y="-0.3" height="1.6"><feGaussianBlur stdDeviation="0.44"/></filter><filter id="blur_eyebrow_left"><feGaussianBlur stdDeviation="0.12"/></filter><filter id="blur_pupil_right_glare" x="-0.2" width="1.4" y="-0.2" height="1.4"><feGaussianBlur stdDeviation="0.45"/></filter><filter id="blur_eyebrow_right"><feGaussianBlur stdDeviation="0.13"/></filter><filter id="blur_beak_shadow_lower" x="-0.2" width="1.4" y="-0.2" height="1.4"><feGaussianBlur stdDeviation="1.75"/></filter><filter id="blur_beak_shadow_upper"><feGaussianBlur stdDeviation="0.8 0.74"/></filter><filter id="blur_mandible_lower_glare" x="-0.2" width="1.4" y="-0.2" height="1.4"><feGaussianBlur stdDeviation="0.77"/></filter><filter id="blur_mandible_upper_shadow"><feGaussianBlur stdDeviation="0.65"/></filter><filter id="blur_mandible_upper_glare" x="-0.2" width="1.4" y="-0.2" height="1.4"><feGaussianBlur stdDeviation="0.73"/></filter><filter id="blur_naris_left" x="-0.2" width="1.4" y="-0.2" height="1.4"><feGaussianBlur stdDeviation="0.1"/></filter><filter id="blur_naris_right"><feGaussianBlur stdDeviation="0.1"/></filter><filter id="blur_beak_corner" x="-0.2" width="1.4" y="-0.2" height="1.4"><feGaussianBlur stdDeviation="0.23"/></filter><clipPath id="clip_body"><use href="#body_base" xlink:href="#body_base"/></clipPath><clipPath id="clip_wing_left"><use href="#wing_left_base" xlink:href="#wing_left_base"/></clipPath><clipPath id="clip_wing_right"><use href="#wing_right_base" xlink:href="#wing_right_base"/></clipPath><clipPath id="clip_foot_left"><use href="#foot_left_base" xlink:href="#foot_left_base"/></clipPath><clipPath id="clip_foot_right"><use href="#foot_right_base" xlink:href="#foot_right_base"/></clipPath><clipPath id="clip_wing_tip_right"><use href="#wing_tip_right_base" xlink:href="#wing_tip_right_base"/></clipPath><clipPath id="clip_eye_left"><use href="#eyeball_left" xlink:href="#eyeball_left"/></clipPath><clipPath id="clip_pupil_left"><use href="#pupil_left_base" xlink:href="#pupil_left_base"/></clipPath><clipPath id="clip_eye_right"><use href="#eyeball_right" xlink:href="#eyeball_right"/></clipPath><clipPath id="clip_pupil_right"><use href="#pupil_right_base" xlink:href="#pupil_right_base"/></clipPath><clipPath id="clip_mandible_lower"><use href="#mandible_lower_base" xlink:href="#mandible_lower_base"/></clipPath><clipPath id="clip_mandible_upper"><use href="#mandible_upper_base" xlink:href="#mandible_upper_base"/></clipPath><clipPath id="clip_beak"><use href="#mandible_lower_base" xlink:href="#mandible_lower_base"/><use href="#mandible_upper_base" xlink:href="#mandible_upper_base"/></clipPath></defs><g id="tux"><g id="body"><path id="body_base" fill="#020204" d="m 106.95,0 c -6,0 -12.02,1.18 -17.46,4.12 -5.78,3.11 -10.52,8.09 -13.43,13.97 -2.92,5.88 -4.06,12.16 -4.24,19.08 -0.33,13.14 0.3,26.92 1.29,39.41 0.26,3.8 0.74,6.02 0.25,9.93 -1.62,8.3 -8.88,13.88 -12.76,21.17 -4.27,8.04 -6.07,17.13 -9.29,25.65 -2.95,7.79 -7.09,15.1 -9.88,22.95 -3.91,10.97 -5.08,23.03 -2.5,34.39 1.97,8.66 6.08,16.78 11.62,23.73 -0.8,1.44 -1.58,2.91 -2.4,4.34 -2.57,4.43 -5.71,8.64 -7.17,13.55 -0.73,2.45 -1.02,5.07 -0.55,7.59 0.47,2.52 1.75,4.93 3.75,6.53 1.31,1.04 2.9,1.72 4.53,2.1 1.63,0.37 3.32,0.46 5,0.43 6.37,-0.14 12.55,-2.07 18.71,-3.69 3.66,-0.96 7.34,-1.81 11.03,-2.58 13.14,-2.69 27.8,-1.61 39.99,0.15 4.13,0.63 8.23,1.44 12.29,2.43 6.36,1.54 12.69,3.5 19.23,3.69 1.72,0.05 3.46,-0.03 5.14,-0.4 1.68,-0.38 3.31,-1.06 4.65,-2.13 2.01,-1.6 3.29,-4.02 3.76,-6.54 0.47,-2.52 0.18,-5.15 -0.56,-7.61 -1.48,-4.92 -4.65,-9.11 -7.27,-13.52 -1.04,-1.75 -2,-3.53 -3.03,-5.28 7.9,-8.87 14.26,-19.13 17.94,-30.4 4.01,-12.3 4.75,-25.55 3.06,-38.38 -1.69,-12.83 -5.76,-25.27 -11.11,-37.05 -6.72,-14.76 -12.37,-20.1 -16.47,-33.07 -4.42,-14.02 -0.77,-30.61 -4.06,-43.32 -1.17,-4.32 -3.04,-8.45 -5.45,-12.23 -2.82,-4.43 -6.4,-8.39 -10.65,-11.47 -6.78,-4.92 -15.3,-7.54 -23.96,-7.54 z"/><path id="belly" fill="#fdfdfb" d="m 83.13,74 c -0.9,1.13 -1.48,2.49 -1.84,3.89 -0.35,1.4 -0.48,2.85 -0.54,4.3 -0.11,2.89 0.07,5.83 -0.7,8.62 -0.82,2.98 -2.65,5.57 -4.44,8.08 -3.11,4.36 -6.25,8.84 -7.78,13.97 -0.93,3.1 -1.24,6.39 -0.91,9.62 -3.47,5.1 -6.48,10.53 -8.98,16.18 -3.78,8.57 -6.37,17.69 -7.28,27.01 -1.12,11.41 0.34,23.15 4.85,33.69 3.25,7.63 8.11,14.6 14.38,20.04 3.18,2.76 6.72,5.11 10.5,6.97 13.11,6.45 29.31,6.46 42.2,-0.41 6.74,-3.59 12.43,-8.84 17.91,-14.15 3.3,-3.2 6.59,-6.48 9.11,-10.32 4.85,-7.41 6.54,-16.41 7.59,-25.2 1.83,-15.36 1.89,-31.6 -4.85,-45.53 -2.32,-4.8 -5.41,-9.22 -9.12,-13.05 -0.98,-6.7 -2.93,-13.27 -5.76,-19.42 -2.05,-4.45 -4.54,-8.68 -6.44,-13.18 -0.78,-1.85 -1.46,-3.75 -2.32,-5.56 -0.87,-1.81 -1.93,-3.55 -3.39,-4.94 -1.48,-1.42 -3.33,-2.43 -5.28,-3.07 -1.95,-0.65 -4.01,-0.94 -6.06,-1.04 -4.11,-0.21 -8.22,0.33 -12.33,0.16 -3.27,-0.13 -6.53,-0.7 -9.8,-0.51 -1.63,0.1 -3.26,0.39 -4.78,1.01 -1.52,0.61 -2.92,1.56 -3.94,2.84 z"/><g id="body_self_shadows"><path id="belly_shadow_left" opacity="0.25" fill="url(#fill_belly_shadow_left)" filter="url(#blur_belly_shadow_left)" clip-path="url(#clip_body)" d="m 68.67,115.18 c 0.87,1.31 -0.55,5.84 19.86,2.94 0,0 -3.59,0.39 -7.12,1.21 -5.49,1.84 -10.27,3.89 -13.97,6.61 -3.65,2.7 -6.33,6.21 -9.68,9.22 0,0 5.43,-9.92 6.78,-12.91 1.36,-2.99 -0.22,-2.85 0.85,-7.25 1.07,-4.4 3.69,-8.63 3.69,-8.63 0,0 -2.14,6.22 -0.41,8.81 z"/><path id="belly_shadow_right" opacity="0.42" fill="url(#fill_belly_shadow_right)" filter="url(#blur_belly_shadow_right)" clip-path="url(#clip_body)" d="m 134.28,113.99 c -4.16,2.9 -6.6,2.56 -11.64,3.12 -5.05,0.57 -18.7,0.36 -18.7,0.36 0,0 1.97,-0.03 6.36,0.78 4.38,0.82 13.31,1.6 18.34,3.51 5.04,1.92 6.87,2.47 9.93,4.4 4.35,2.75 7.55,7.06 11.71,10.08 0,0 0.2,-4 -1.48,-6.99 -1.68,-2.99 -6.2,-7.7 -7.53,-12.1 -1.32,-4.4 -1.96,-13.04 -1.96,-13.04 0,0 -0.88,6.99 -5.03,9.88 z"/><path id="belly_shadow_middle" opacity="0.2" fill="url(#fill_belly_shadow_middle)" filter="url(#blur_belly_shadow_middle)" clip-path="url(#clip_body)" d="m 95.17,107.81 c -0.16,1.25 -0.36,2.5 -0.6,3.74 -0.12,0.61 -0.26,1.22 -0.48,1.8 -0.23,0.58 -0.56,1.14 -1.02,1.55 -0.41,0.37 -0.9,0.62 -1.4,0.85 -1.94,0.88 -4.01,1.47 -6.12,1.74 0.84,0.06 1.68,0.14 2.53,0.23 0.53,0.06 1.06,0.12 1.57,0.25 0.52,0.14 1.03,0.34 1.46,0.65 0.47,0.35 0.84,0.82 1.12,1.34 0.55,1.02 0.73,2.2 0.83,3.37 0.13,1.48 0.14,2.98 0.03,4.46 0.1,-0.99 0.31,-1.98 0.62,-2.92 0.57,-1.72 1.47,-3.32 2.69,-4.65 0.49,-0.52 1.02,-1.01 1.6,-1.42 1.79,-1.26 4.07,-1.81 6.24,-1.51 -2.21,0.09 -4.44,-0.6 -6.2,-1.93 -0.9,-0.68 -1.68,-1.52 -2.22,-2.5 -0.84,-1.52 -1.08,-3.37 -0.65,-5.05 z"/><path id="belly_shadow_lower" opacity="0.11" fill="#000000" filter="url(#blur_belly_shadow_lower)" clip-path="url(#clip_body)" d="m 89.85,137.14 c -1.06,4.03 -1.79,8.15 -2.17,12.31 -0.55,5.87 -0.42,11.78 -0.74,17.67 -0.26,4.99 -0.85,10.04 0.02,14.97 0.41,2.35 1.15,4.64 2.2,6.78 0.16,-0.82 0.29,-1.64 0.36,-2.47 0.37,-4 -0.3,-8.01 -0.53,-12.01 -0.4,-7.02 0.57,-14.04 0.97,-21.06 0.3,-5.39 0.27,-10.8 -0.11,-16.19 z"/></g><g id="body_glare"><path id="belly_glare" opacity="0.75" fill="#7c7c7c" filter="url(#blur_belly_glare)" clip-path="url(#clip_body)" d="m 160.08,131.23 c 1.03,-0.16 7.34,5.21 6.48,7.21 -0.86,1.99 -2.49,0.79 -3.65,0.8 -1.16,0.02 -4.33,1.46 -4.86,0.55 -0.54,-0.91 1.4,-3.03 2.41,-4.81 0.82,-1.43 -1.4,-3.59 -0.38,-3.75 z"/><path id="head_glare" fill="#7c7c7c" filter="url(#blur_head_glare)" clip-path="url(#clip_body)" d="m 121.52,11.12 c -2.21,1.56 -1.25,3.51 -0.3,5.46 0.95,1.96 -2.09,7.59 -2.12,7.83 -0.03,0.24 5.98,-2.85 7.62,-4.87 1.94,-2.37 6.83,3.22 6.56,2.37 0.01,-1.52 -9.55,-12.34 -11.76,-10.79 z"/><path id="neck_glare" fill="#838384" filter="url(#blur_neck_glare)" clip-path="url(#clip_body)" d="m 138.27,76.63 c -1.86,1.7 0.88,4.25 2.17,7.24 0.81,1.86 3.04,4.49 5.2,4.07 1.63,-0.32 2.63,-2.66 2.48,-4.3 -0.3,-3.18 -2.98,-3.93 -4.93,-5.02 -1.54,-0.86 -3.61,-3.18 -4.92,-1.99 z"/></g></g><g id="wings"><g id="wing_left"><path id="wing_left_base" fill="#020204" d="m 63.98,100.91 c -6.1,6.92 -12.37,13.63 -15.81,21.12 -1.71,3.8 -2.51,7.93 -3.68,11.93 -1.32,4.54 -3.12,8.94 -5.14,13.22 -1.87,3.95 -3.93,7.81 -5.98,11.66 -1.5,2.81 -3.02,5.67 -3.54,8.81 -0.41,2.48 -0.18,5.04 0.46,7.47 0.63,2.43 1.64,4.75 2.79,6.98 4.88,9.55 12.21,17.77 20.89,24.07 3.94,2.85 8.15,5.32 12.58,7.35 2.4,1.09 4.92,2.07 7.56,2.11 1.32,0.03 2.65,-0.19 3.86,-0.72 1.2,-0.53 2.28,-1.38 3,-2.49 0.88,-1.36 1.18,-3.05 1,-4.66 -0.18,-1.61 -0.81,-3.15 -1.65,-4.53 -2.06,-3.38 -5.31,-5.83 -8.44,-8.25 -6.76,-5.23 -13.29,-10.76 -19.55,-16.58 -1.76,-1.65 -3.53,-3.34 -4.76,-5.42 -1.2,-2.02 -1.85,-4.32 -2.29,-6.63 -1.21,-6.33 -0.9,-12.99 1.25,-19.07 0.85,-2.38 1.96,-4.65 3.04,-6.93 1.86,-3.95 3.62,-7.98 6.07,-11.6 3.05,-4.51 7.13,-8.33 9.61,-13.17 2.1,-4.09 2.95,-8.68 3.76,-13.2 0.64,-3.54 1.85,-7 2.47,-10.54 -1.21,2.3 -5.11,6.07 -7.5,9.07 z"/><path id="wing_left_glare" opacity="0.95" fill="#7c7c7c" filter="url(#blur_wing_left_glare)" clip-path="url(#clip_wing_left)" d="m 56.96,126.1 c -2,1.84 -3.73,3.97 -5.13,6.31 -2.3,3.84 -3.65,8.16 -5.33,12.31 -1.24,3.09 -2.69,6.2 -2.86,9.53 -0.09,1.71 0.16,3.42 0.22,5.13 0.06,1.71 -0.1,3.49 -0.94,4.98 -0.7,1.25 -1.87,2.23 -3.22,2.71 1.83,0.61 3.45,1.79 4.6,3.33 0.96,1.3 1.58,2.81 2.41,4.18 0.68,1.12 1.51,2.16 2.54,2.97 1.02,0.82 2.25,1.4 3.54,1.56 1.79,0.23 3.65,-0.36 4.97,-1.58 -1.66,-15.55 -0.14,-31.42 4.44,-46.37 0.29,-0.94 0.59,-1.89 0.67,-2.87 0.07,-0.99 -0.12,-2.03 -0.72,-2.81 -0.31,-0.42 -0.74,-0.75 -1.23,-0.96 -0.48,-0.2 -1.02,-0.28 -1.54,-0.21 -0.52,0.06 -1.03,0.26 -1.45,0.57 -0.42,0.32 -0.76,0.74 -0.97,1.22 z"/></g><g id="wing_right"><path id="wing_right_base" fill="#020204" d="m 162.76,127.12 c 5.24,4.22 8.57,10.59 9.6,17.24 0.8,5.18 0.28,10.51 -0.89,15.62 -1.17,5.12 -2.97,10.06 -4.77,15 -0.71,1.96 -1.43,3.95 -1.71,6.02 -0.29,2.08 -0.11,4.27 0.89,6.11 1.15,2.11 3.29,3.56 5.59,4.24 2.27,0.68 4.72,0.66 7.02,0.09 2.3,-0.57 6.17,-1.31 8.04,-2.77 4.75,-3.69 5.88,-10.1 7.01,-15.72 1.17,-5.87 0.6,-12.02 -0.43,-17.95 -1.41,-8.09 -3.78,-15.99 -6.79,-23.62 -2.22,-5.62 -5.06,-10.98 -8.44,-15.96 -3.32,-4.89 -8.02,-8.7 -11.5,-13.48 -1.21,-1.66 -2.66,-3.38 -3.84,-5.06 -2.56,-3.62 -1.98,-2.94 -3.57,-5.29 -1.15,-1.7 -2.97,-2.28 -4.88,-3.02 -1.92,-0.74 -4.06,-0.96 -6.04,-0.41 -2.6,0.73 -4.73,2.79 -5.86,5.24 -1.13,2.46 -1.33,5.28 -0.89,7.95 0.57,3.44 2.14,6.64 3.92,9.64 2,3.39 4.32,6.66 7.35,9.18 3.16,2.63 6.98,4.37 10.19,6.95 z"/><path id="wing_right_glare" fill="#838384" filter="url(#blur_wing_right_glare)" clip-path="url(#clip_wing_right)" d="m 150.42,118.99 c 0.42,0.4 0.86,0.81 1.31,1.19 3.22,2.63 4.93,5.58 8.2,8.16 5.34,4.22 10.75,11.5 11.8,18.15 0.82,5.19 -0.26,8.01 -1.58,14.12 -1.32,6.12 -5.06,14.78 -7.09,20.68 -0.8,2.35 1.64,1.38 1.32,3.86 -0.16,1.22 -0.18,2.45 -0.03,3.67 0.02,-0.23 0.03,-0.48 0.06,-0.71 0.39,-3.38 1.42,-6.63 2.55,-9.82 2.17,-6.13 4.66,-12.15 6.38,-18.45 1.72,-6.29 1.53,-10.82 0.63,-16.23 -1.13,-6.81 -5.09,-13.09 -10.69,-17.24 -3.97,-2.93 -8.64,-4.81 -12.86,-7.38 z"/></g></g><g id="feet"><g id="foot_left"><path id="foot_left_base" fill="url(#fill_foot_left_base)" d="m 34.98,175.33 c 1.38,-0.57 2.93,-0.68 4.39,-0.41 1.47,0.27 2.86,0.91 4.09,1.74 2.47,1.68 4.3,4.12 6.05,6.54 4.03,5.54 7.9,11.2 11.42,17.08 2.85,4.78 5.46,9.71 8.76,14.18 2.15,2.93 4.57,5.64 6.73,8.55 2.16,2.92 4.07,6.08 5.03,9.58 1.25,4.55 0.76,9.56 -1.4,13.75 -1.52,2.95 -3.86,5.48 -6.7,7.19 -2.84,1.71 -5.83,2.47 -9.15,2.47 -5.27,0 -10.42,-2.83 -15.32,-4.78 -9.98,-3.98 -20.82,-5.22 -31.11,-8.32 -3.16,-0.95 -6.27,-2.08 -9.45,-2.95 -1.42,-0.39 -2.85,-0.73 -4.19,-1.34 -1.34,-0.6 -2.59,-1.51 -3.33,-2.77 -0.57,-0.98 -0.8,-2.13 -0.8,-3.26 0,-1.14 0.28,-2.26 0.67,-3.32 0.77,-2.13 2.02,-4.06 2.86,-6.17 1.37,-3.44 1.62,-7.23 1.43,-10.93 -0.18,-3.69 -0.78,-7.36 -1.03,-11.05 -0.12,-1.65 -0.16,-3.32 0.16,-4.95 0.31,-1.62 1.01,-3.21 2.2,-4.35 1.1,-1.06 2.55,-1.69 4.05,-2 1.49,-0.31 3.03,-0.32 4.55,-0.29 1.52,0.03 3.05,0.12 4.57,-0.01 1.52,-0.12 3.05,-0.46 4.37,-1.22 1.26,-0.72 2.29,-1.79 3.14,-2.96 0.85,-1.17 1.54,-2.45 2.25,-3.72 0.7,-1.26 1.43,-2.52 2.36,-3.64 0.92,-1.12 2.06,-2.09 3.4,-2.64 z"/><path id="foot_left_layer_1" fill="#d99a03" filter="url(#blur_foot_left_layer_1)" clip-path="url(#clip_foot_left)" d="m 37.16,177.7 c 1.25,-0.5 2.67,-0.56 3.98,-0.26 1.32,0.3 2.55,0.94 3.61,1.77 2.14,1.65 3.62,3.97 5.05,6.26 3.42,5.54 6.76,11.15 9.92,16.86 2.4,4.31 4.68,8.7 7.62,12.65 1.95,2.62 4.18,5.03 6.17,7.62 1.99,2.59 3.76,5.41 4.64,8.56 1.14,4.05 0.68,8.54 -1.28,12.26 -1.42,2.68 -3.58,4.96 -6.2,6.48 -2.61,1.52 -5.67,2.28 -8.69,2.14 -4.82,-0.22 -9.23,-2.63 -13.77,-4.26 -8.71,-3.16 -18.14,-3.59 -27.08,-6.05 -3.2,-0.87 -6.32,-2.03 -9.53,-2.84 -1.43,-0.36 -2.88,-0.66 -4.23,-1.23 -1.35,-0.57 -2.62,-1.45 -3.36,-2.72 -0.54,-0.95 -0.76,-2.06 -0.73,-3.15 0.04,-1.09 0.31,-2.17 0.7,-3.19 0.78,-2.04 2,-3.88 2.78,-5.92 1.19,-3.08 1.34,-6.47 1.12,-9.76 -0.22,-3.29 -0.8,-6.56 -1,-9.85 -0.08,-1.48 -0.1,-2.97 0.2,-4.41 0.3,-1.45 0.93,-2.85 1.98,-3.89 1.14,-1.13 2.7,-1.74 4.29,-1.99 1.58,-0.24 3.19,-0.13 4.78,0.01 1.6,0.14 3.2,0.32 4.8,0.23 1.6,-0.1 3.22,-0.49 4.54,-1.39 1.2,-0.81 2.1,-2 2.79,-3.27 0.69,-1.27 1.18,-2.64 1.71,-3.98 0.52,-1.35 1.09,-2.69 1.91,-3.89 0.82,-1.19 1.93,-2.24 3.28,-2.79 z"/><path id="foot_left_layer_2" fill="#f5bd0c" filter="url(#blur_foot_left_layer_2)" clip-path="url(#clip_foot_left)" d="m 35.99,174.57 c 1.22,-0.6 2.65,-0.72 3.98,-0.45 1.33,0.27 2.57,0.92 3.62,1.77 2.09,1.7 3.43,4.13 4.67,6.51 2.84,5.46 5.5,11.04 8.9,16.19 2.48,3.73 5.33,7.2 7.83,10.92 3.39,5.03 6.15,10.57 7.29,16.5 0.76,4 0.74,8.31 -1.18,11.9 -1.27,2.37 -3.32,4.31 -5.75,5.52 -2.42,1.22 -5.21,1.71 -7.92,1.47 -4.27,-0.37 -8.14,-2.47 -12.16,-3.94 -7.13,-2.59 -14.84,-3.22 -22.18,-5.18 -3.09,-0.82 -6.13,-1.89 -9.26,-2.54 -1.39,-0.29 -2.8,-0.5 -4.12,-1 -1.32,-0.5 -2.57,-1.33 -3.25,-2.55 -0.47,-0.86 -0.63,-1.86 -0.56,-2.84 0.07,-0.97 0.36,-1.92 0.74,-2.83 0.77,-1.8 1.9,-3.46 2.49,-5.32 0.88,-2.75 0.52,-5.72 -0.14,-8.53 -0.65,-2.8 -1.6,-5.55 -1.89,-8.41 -0.13,-1.27 -0.13,-2.57 0.17,-3.82 0.29,-1.25 0.88,-2.45 1.81,-3.34 1.2,-1.15 2.88,-1.73 4.56,-1.89 1.67,-0.16 3.35,0.06 5.01,0.3 1.66,0.24 3.34,0.5 5.01,0.42 1.68,-0.07 3.39,-0.51 4.7,-1.54 1.3,-1.02 2.12,-2.53 2.59,-4.09 0.47,-1.57 0.62,-3.2 0.81,-4.82 0.19,-1.62 0.43,-3.26 1.06,-4.77 0.63,-1.51 1.69,-2.9 3.17,-3.64 z"/><path id="foot_left_glare" fill="url(#fill_foot_left_glare)" filter="url(#blur_foot_left_glare)" clip-path="url(#clip_foot_left)" d="m 51.2,188.21 c 2.25,4.06 3.62,8.72 5.85,12.82 2.05,3.77 4.38,7.65 6.46,11.12 0.93,1.55 3.09,3.93 5.27,7.62 1.98,3.34 3.98,8.01 5.1,9.58 -0.64,-1.84 -1.96,-6.77 -3.54,-10.28 -1.47,-3.28 -3.19,-5.15 -4.24,-6.92 -2.08,-3.47 -4.33,-6.6 -6.47,-9.91 -2.95,-4.57 -5.2,-9.68 -8.43,-14.03 z"/></g><g id="foot_right"><path id="foot_right_shadow" opacity="0.2" fill="url(#fill_foot_right_shadow)" filter="url(#blur_foot_right_shadow)" clip-path="url(#clip_body)" d="m 198.7,215.61 c -0.4,1.33 -1.02,2.62 -1.81,3.8 -1.75,2.59 -4.3,4.55 -6.84,6.35 -4.33,3.07 -8.85,5.89 -12.89,9.38 -2.7,2.34 -5.17,4.97 -7.45,7.73 -1.95,2.36 -3.79,4.84 -6.02,6.94 -2.25,2.12 -4.89,3.84 -7.74,4.77 -3.47,1.13 -7.13,1.08 -10.47,0.22 -2.34,-0.6 -4.63,-1.64 -6.08,-3.53 -1.45,-1.89 -1.92,-4.44 -2.09,-6.94 -0.3,-4.42 0.23,-8.93 0.71,-13.42 0.4,-3.73 0.77,-7.46 0.92,-11.18 0.27,-6.77 -0.18,-13.47 -1.09,-20.05 -0.16,-1.11 -0.32,-2.22 -0.23,-3.35 0.09,-1.14 0.47,-2.32 1.27,-3.2 0.74,-0.81 1.77,-1.29 2.79,-1.52 1.02,-0.24 2.06,-0.25 3.09,-0.28 2.43,-0.06 4.86,-0.21 7.25,0.01 1.51,0.13 2.99,0.41 4.49,0.55 2.51,0.24 5.12,0.12 7.64,-0.62 2.71,-0.8 5.29,-2.29 8.05,-2.7 1.13,-0.17 2.26,-0.15 3.36,0.01 1.12,0.15 2.24,0.46 3.1,1.15 0.66,0.52 1.14,1.23 1.51,1.99 0.56,1.14 0.9,2.39 1.1,3.68 0.17,1.14 0.24,2.31 0.53,3.41 0.48,1.81 1.58,3.35 2.89,4.6 1.32,1.25 2.85,2.24 4.39,3.22 1.53,0.97 3.07,1.93 4.7,2.73 0.77,0.38 1.56,0.72 2.29,1.15 0.74,0.44 1.42,0.97 1.91,1.67 0.66,0.95 0.92,2.2 0.72,3.43 z"/><path id="foot_right_base" fill="url(#fill_foot_right_base)" d="m 213.47,222.92 c -2.26,2.68 -5.4,4.45 -8.53,6.05 -5.33,2.71 -10.86,5.1 -15.87,8.37 -3.36,2.19 -6.46,4.76 -9.36,7.53 -2.48,2.37 -4.83,4.9 -7.61,6.91 -2.81,2.03 -6.05,3.5 -9.48,4.01 -0.95,0.14 -1.9,0.21 -2.86,0.21 -3.24,0 -6.48,-0.78 -9.46,-2.08 -2.7,-1.17 -5.3,-2.86 -6.86,-5.36 -1.56,-2.52 -1.92,-5.59 -1.92,-8.56 -0.01,-5.23 0.96,-10.41 1.87,-15.57 0.76,-4.29 1.48,-8.58 1.95,-12.91 0.85,-7.86 0.84,-15.81 0.28,-23.71 -0.1,-1.32 -0.21,-2.65 -0.01,-3.96 0.2,-1.31 0.74,-2.62 1.74,-3.48 0.93,-0.8 2.17,-1.16 3.4,-1.22 1.22,-0.07 2.44,0.12 3.65,0.3 2.85,0.42 5.73,0.74 8.52,1.48 1.76,0.46 3.48,1.08 5.23,1.56 2.94,0.79 6.01,1.17 9.02,0.82 3.25,-0.38 6.41,-1.6 9.68,-1.52 1.34,0.03 2.67,0.28 3.95,0.69 1.3,0.41 2.59,1 3.55,1.98 0.73,0.74 1.24,1.67 1.62,2.64 0.57,1.44 0.88,2.98 1.01,4.52 0.11,1.37 0.09,2.76 0.35,4.11 0.43,2.21 1.6,4.24 3.04,5.97 1.45,1.74 3.18,3.21 4.91,4.66 1.73,1.45 3.46,2.89 5.32,4.16 0.87,0.6 1.77,1.16 2.6,1.81 0.83,0.66 1.59,1.42 2.11,2.34 0.45,0.81 0.69,1.72 0.69,2.65 0,0.52 -0.07,1.04 -0.23,1.56 -0.45,1.43 -1.28,2.82 -2.3,4.04 z"/><path id="foot_right_layer_1" fill="#cd8907" filter="url(#blur_foot_right_layer_1)" clip-path="url(#clip_foot_right)" d="m 213.21,216.12 c -0.53,1.33 -1.28,2.58 -2.22,3.67 -2.07,2.42 -4.93,4.01 -7.78,5.44 -4.88,2.44 -9.92,4.58 -14.5,7.52 -3.06,1.97 -5.9,4.28 -8.55,6.78 -2.26,2.13 -4.41,4.41 -6.95,6.21 -2.57,1.83 -5.53,3.14 -8.65,3.6 -3.8,0.56 -7.72,-0.16 -11.25,-1.67 -2.46,-1.06 -4.84,-2.56 -6.27,-4.83 -1.42,-2.26 -1.75,-5.02 -1.75,-7.69 -0.02,-4.71 0.87,-9.37 1.71,-14 0.7,-3.85 1.36,-7.71 1.78,-11.6 0.76,-7.08 0.73,-14.22 0.25,-21.32 -0.08,-1.19 -0.17,-2.39 0.01,-3.57 0.18,-1.18 0.67,-2.35 1.57,-3.13 0.85,-0.73 1.99,-1.05 3.11,-1.1 1.11,-0.06 2.22,0.12 3.33,0.28 2.61,0.38 5.23,0.67 7.78,1.33 1.61,0.42 3.18,0.98 4.78,1.4 2.68,0.72 5.49,1.06 8.24,0.74 2.97,-0.34 5.85,-1.44 8.83,-1.37 1.23,0.03 2.44,0.26 3.61,0.62 1.19,0.37 2.37,0.9 3.25,1.78 0.66,0.67 1.11,1.51 1.48,2.38 0.53,1.29 0.89,2.67 0.91,4.07 0.03,1.46 -0.28,2.92 -0.09,4.37 0.16,1.17 0.66,2.28 1.3,3.28 0.63,1 1.4,1.91 2.17,2.81 1.48,1.75 2.96,3.53 4.82,4.87 2.11,1.53 4.62,2.43 6.8,3.85 0.65,0.43 1.28,0.91 1.74,1.54 0.78,1.06 0.98,2.5 0.54,3.74 z"/><path id="foot_right_layer_2" fill="#f5c021" filter="url(#blur_foot_right_layer_2)" clip-path="url(#clip_foot_right)" d="m 212.91,214.61 c -0.6,1.35 -1.37,2.6 -2.28,3.71 -2.12,2.58 -4.99,4.35 -8,5.49 -4.97,1.88 -10.39,2.13 -15.26,4.27 -2.97,1.3 -5.65,3.26 -8.36,5.12 -2.18,1.49 -4.42,2.94 -6.82,3.98 -2.72,1.19 -5.6,1.85 -8.5,2.32 -1.84,0.29 -3.71,0.51 -5.57,0.41 -1.86,-0.1 -3.72,-0.54 -5.37,-1.49 -1.24,-0.72 -2.36,-1.75 -3.03,-3.1 -0.73,-1.49 -0.86,-3.24 -0.85,-4.94 0.05,-4.5 1.02,-8.96 0.99,-13.47 -0.03,-3.93 -0.81,-7.8 -1.03,-11.72 -0.43,-7.54 1.19,-15.2 -0.24,-22.59 -0.22,-1.19 -0.53,-2.37 -0.52,-3.58 0.01,-0.6 0.1,-1.21 0.31,-1.77 0.22,-0.55 0.56,-1.06 1.01,-1.42 0.39,-0.29 0.84,-0.47 1.31,-0.56 0.46,-0.08 0.94,-0.06 1.41,0.01 0.93,0.15 1.82,0.51 2.73,0.78 2.6,0.78 5.35,0.76 8,1.35 1.66,0.36 3.26,0.97 4.91,1.41 2.75,0.76 5.63,1.08 8.46,0.75 3.04,-0.36 6.01,-1.46 9.07,-1.38 1.26,0.03 2.5,0.26 3.71,0.62 1.21,0.36 2.42,0.87 3.34,1.8 0.65,0.67 1.13,1.52 1.51,2.4 0.57,1.29 0.96,2.69 0.95,4.11 -0.01,0.74 -0.12,1.47 -0.19,2.21 -0.06,0.74 -0.08,1.49 0.09,2.2 0.18,0.72 0.55,1.37 0.97,1.96 0.42,0.59 0.9,1.12 1.34,1.7 1.22,1.61 2.1,3.49 3.05,5.3 0.95,1.81 2.02,3.6 3.53,4.91 2.05,1.77 4.7,2.48 6.99,3.89 0.67,0.41 1.31,0.89 1.78,1.55 0.38,0.52 0.63,1.15 0.73,1.81 0.09,0.65 0.03,1.34 -0.17,1.96 z"/><path id="foot_right_glare" fill="url(#fill_foot_right_glare)" filter="url(#blur_foot_right_glare)" clip-path="url(#clip_foot_right)" d="m 148.08,181.58 c 2.82,-0.76 5.22,1.38 7.27,2.99 1.32,1.13 3.24,0.85 4.86,0.9 2.69,-0.09 5.36,0.45 8.05,0.12 5.3,-0.45 10.49,-1.75 15.81,-1.97 2.54,-0.16 5.4,-0.31 7.59,1.17 0.89,0.62 2.2,3.23 3.07,2.25 -0.36,-2.74 -2.39,-5.39 -5.11,-6.12 -2.14,-0.34 -4.3,0.25 -6.46,0.06 -6.39,-0.15 -12.75,-1.34 -19.16,-1 -4.46,0.04 -8.91,-0.17 -13.37,-0.34 -1.75,-0.36 -2.37,1.19 -3.32,1.79 0.25,0.19 0.34,0.25 0.77,0.15 z"/></g></g><g id="wing_tip_right"><g id="wing_tip_right_shadow"><path id="wing_tip_right_shadow_lower" opacity="0.35" fill="url(#fill_wing_tip_right_shadow_lower)" filter="url(#blur_wing_tip_right_shadow_lower)" clip-path="url(#clip_foot_right)" d="m 185.49,187.61 c -0.48,-0.95 -1.36,-1.66 -2.35,-2.07 -0.98,-0.41 -2.06,-0.55 -3.13,-0.54 -2.13,0.02 -4.25,0.57 -6.38,0.39 -1.79,-0.16 -3.49,-0.83 -5.24,-1.26 -1.81,-0.44 -3.73,-0.61 -5.52,-0.12 -1.92,0.52 -3.61,1.81 -4.67,3.49 -0.94,1.48 -1.38,3.23 -1.52,4.98 -0.14,1.75 0.01,3.5 0.19,5.25 0.12,1.26 0.27,2.52 0.57,3.75 0.31,1.23 0.78,2.43 1.52,3.46 1.07,1.48 2.66,2.54 4.37,3.17 2.8,1.03 5.98,0.98 8.73,-0.15 4.88,-2.12 9.01,-5.92 11.52,-10.6 0.91,-1.68 1.61,-3.47 2.06,-5.31 0.18,-0.74 0.32,-1.49 0.32,-2.25 0.01,-0.75 -0.12,-1.52 -0.47,-2.19 z"/><path id="wing_tip_right_shadow_upper" opacity="0.35" fill="url(#fill_wing_tip_right_shadow_upper)" filter="url(#blur_wing_tip_right_shadow_upper)" clip-path="url(#clip_foot_right)" d="m 185.49,184.89 c -0.48,-0.69 -1.36,-1.2 -2.35,-1.5 -0.98,-0.3 -2.06,-0.39 -3.13,-0.39 -2.13,0.02 -4.25,0.42 -6.38,0.28 -1.79,-0.11 -3.49,-0.6 -5.24,-0.9 -1.81,-0.32 -3.73,-0.45 -5.52,-0.09 -1.92,0.37 -3.61,1.3 -4.67,2.52 -0.94,1.07 -1.38,2.34 -1.52,3.6 -0.14,1.26 0.01,2.53 0.19,3.79 0.12,0.91 0.27,1.83 0.57,2.72 0.31,0.89 0.78,1.76 1.52,2.5 1.07,1.07 2.66,1.83 4.37,2.29 2.8,0.75 5.98,0.71 8.73,-0.11 4.88,-1.53 9.01,-4.28 11.52,-7.66 0.91,-1.22 1.61,-2.51 2.06,-3.84 0.18,-0.54 0.32,-1.08 0.32,-1.62 0.01,-0.55 -0.12,-1.11 -0.47,-1.59 z"/></g><path id="wing_tip_right_base" fill="#020204" d="m 189.55,178.72 c -0.35,-0.95 -0.97,-1.79 -1.72,-2.47 -0.75,-0.68 -1.64,-1.2 -2.57,-1.6 -1.86,-0.79 -3.89,-1.09 -5.89,-1.46 -1.87,-0.35 -3.74,-0.78 -5.62,-1.1 -1.96,-0.33 -3.98,-0.55 -5.92,-0.11 -1.69,0.38 -3.26,1.26 -4.54,2.43 -1.28,1.17 -2.28,2.63 -3,4.21 -1.27,2.79 -1.67,5.92 -1.43,8.97 0.18,2.27 0.76,4.61 2.25,6.32 1.21,1.39 2.92,2.26 4.68,2.78 3.04,0.9 6.35,0.85 9.36,-0.13 4.97,-1.67 9.37,-4.98 12.35,-9.29 0.98,-1.43 1.82,-2.98 2.2,-4.66 0.29,-1.28 0.3,-2.66 -0.15,-3.89 z"/><g id="wing_tip_right_glare"><defs><path id="path_wing_tip_right_glare" d="m 168.89,171.07 c -0.47,0.03 -0.93,0.08 -1.4,0.17 -2.99,0.53 -5.73,2.42 -7.27,5.03 -1.09,1.85 -1.58,4.03 -1.43,6.17 0.07,-1.5 0.46,-2.97 1.19,-4.28 1.23,-2.23 3.47,-3.91 5.98,-4.37 1.54,-0.28 3.13,-0.11 4.68,0.08 1.5,0.19 3,0.39 4.47,0.7 2.28,0.5 4.53,1.26 6.44,2.59 0.44,0.31 0.86,0.66 1.21,1.08 0.35,0.41 0.62,0.89 0.73,1.42 0.15,0.78 -0.07,1.6 -0.46,2.29 -0.39,0.7 -0.92,1.3 -1.48,1.86 -0.46,0.46 -0.94,0.89 -1.43,1.32 2.21,-0.43 4.44,-1.03 6.28,-2.31 0.77,-0.55 1.48,-1.2 1.94,-2.02 0.46,-0.83 0.65,-1.83 0.43,-2.75 -0.16,-0.62 -0.5,-1.19 -0.92,-1.67 -0.42,-0.48 -0.93,-0.87 -1.45,-1.24 -2.31,-1.62 -5.01,-2.65 -7.81,-2.99 -1.8,-0.33 -3.61,-0.61 -5.42,-0.83 -1.41,-0.18 -2.86,-0.33 -4.28,-0.25 z"/></defs><use id="wing_tip_right_glare_1" href="#path_wing_tip_right_glare" xlink:href="#path_wing_tip_right_glare" fill="url(#fill_wing_tip_right_glare_1)" filter="url(#blur_wing_tip_right_glare)" clip-path="url(#clip_wing_tip_right)"/><use id="wing_tip_right_glare_2" href="#path_wing_tip_right_glare" xlink:href="#path_wing_tip_right_glare" fill="url(#fill_wing_tip_right_glare_2)" filter="url(#blur_wing_tip_right_glare)" clip-path="url(#clip_wing_tip_right)"/></g></g><g id="face"><g id="eyes"><g id="eye_left"><path id="eyeball_left" fill="url(#fill_eyeball_left)" d="m 84.45,38.28 c -1.53,0.08 -3,0.79 -4.12,1.84 -1.13,1.05 -1.92,2.43 -2.41,3.88 -0.97,2.92 -0.75,6.08 -0.53,9.15 0.2,2.77 0.41,5.6 1.45,8.18 0.52,1.3 1.25,2.51 2.22,3.51 0.97,0.99 2.2,1.76 3.55,2.09 1.26,0.32 2.62,0.26 3.86,-0.13 1.25,-0.4 2.38,-1.11 3.32,-2.02 1.36,-1.33 2.27,-3.07 2.8,-4.9 0.53,-1.83 0.68,-3.75 0.65,-5.66 -0.04,-2.38 -0.35,-4.77 -1.09,-7.03 -0.75,-2.26 -1.94,-4.4 -3.6,-6.11 -0.8,-0.83 -1.72,-1.55 -2.75,-2.06 -1.04,-0.51 -2.2,-0.8 -3.35,-0.74 z"/><g id="pupil_left"><path id="pupil_left_base" fill="#020204" d="m 80.75,50.99 c -0.32,1.94 -0.33,3.97 0.33,5.81 0.44,1.22 1.17,2.33 2.05,3.28 0.57,0.62 1.23,1.18 1.99,1.55 0.77,0.37 1.65,0.52 2.48,0.32 0.76,-0.19 1.42,-0.68 1.91,-1.29 0.49,-0.61 0.82,-1.34 1.05,-2.09 0.69,-2.21 0.58,-4.62 -0.11,-6.83 -0.49,-1.61 -1.32,-3.16 -2.6,-4.24 -0.62,-0.52 -1.34,-0.93 -2.12,-1.11 -0.78,-0.19 -1.63,-0.14 -2.36,0.19 -0.81,0.37 -1.44,1.07 -1.85,1.86 -0.41,0.79 -0.62,1.67 -0.77,2.55 z"/><path id="pupil_left_glare" fill="url(#fill_pupil_left_glare)" filter="url(#blur_pupil_left_glare)" clip-path="url(#clip_pupil_left)" d="m 84.84,49.59 c 0.21,0.55 0.91,0.75 1.3,1.19 0.37,0.42 0.76,0.87 0.97,1.4 0.39,1.01 -0.39,2.51 0.43,3.23 0.25,0.22 0.77,0.23 1.02,0 0.99,-0.9 0.77,-2.71 0.38,-3.99 -0.36,-1.15 -1.23,-2.25 -2.31,-2.8 -0.5,-0.26 -1.25,-0.47 -1.68,-0.11 -0.27,0.24 -0.24,0.74 -0.11,1.08 z"/></g><path id="eyelid_left" fill="url(#fill_eyelid_left)" clip-path="url(#clip_eye_left)" d="m 81.14,44.46 c 2.32,-1.38 5.13,-1.7 7.82,-1.45 2.68,0.26 5.27,1.04 7.87,1.75 1.91,0.52 3.84,1 5.63,1.84 1.78,0.84 3.44,2.08 4.43,3.8 0.16,0.27 0.29,0.56 0.46,0.83 0.17,0.27 0.37,0.52 0.62,0.71 0.25,0.19 0.57,0.32 0.88,0.3 0.16,-0.01 0.32,-0.05 0.45,-0.13 0.14,-0.08 0.26,-0.2 0.33,-0.34 0.08,-0.16 0.11,-0.35 0.1,-0.53 -0.01,-0.18 -0.05,-0.36 -0.1,-0.54 -0.65,-2.37 -2.19,-4.38 -3.35,-6.55 -0.7,-1.3 -1.28,-2.66 -1.98,-3.96 -2.43,-4.45 -6.42,-7.94 -10.95,-10.21 -4.53,-2.27 -9.59,-3.36 -14.65,-3.65 -5.86,-0.35 -11.73,0.35 -17.51,1.37 -2.51,0.44 -5.06,0.96 -7.27,2.21 -1.11,0.62 -2.13,1.42 -2.92,2.42 -0.8,0.99 -1.36,2.18 -1.55,3.44 -0.17,1.22 0.01,2.47 0.44,3.62 0.42,1.15 1.08,2.2 1.86,3.15 1.54,1.91 3.53,3.39 5.36,5.03 1.83,1.63 3.52,3.44 5.57,4.79 1.02,0.68 2.13,1.24 3.31,1.57 1.18,0.33 2.44,0.42 3.64,0.17 1.24,-0.25 2.4,-0.86 3.41,-1.64 1.01,-0.77 1.88,-1.7 2.71,-2.66 1.66,-1.93 3.21,-4.04 5.39,-5.34 z"/><path id="eyebrow_left" fill="url(#fill_eyebrow_left)" filter="url(#blur_eyebrow_left)" d="m 90.77,36.57 c 2.16,2.02 3.76,4.52 4.85,7.16 -0.48,-2.91 -1.23,-5.26 -3.13,-7.16 -1.16,-1.09 -2.49,-2.05 -3.98,-2.72 -1.32,-0.59 -2.77,-0.96 -3.61,-0.97 -0.83,-0.02 -1.03,0 -1.2,0.01 -0.18,0.01 -0.31,0.01 0.23,0.08 0.54,0.06 1.75,0.39 3.05,0.97 1.3,0.58 2.62,1.54 3.79,2.63 z"/></g><g id="eye_right"><path id="eyeball_right" fill="url(#fill_eyeball_right)" d="m 111.61,38.28 c -2.39,1.65 -4.4,3.94 -5.38,6.68 -1.24,3.45 -0.77,7.31 0.43,10.77 1.22,3.55 3.27,6.93 6.36,9.06 1.54,1.07 3.33,1.8 5.19,2.02 1.87,0.22 3.8,-0.09 5.47,-0.95 2.02,-1.06 3.57,-2.91 4.53,-4.98 0.96,-2.08 1.37,-4.37 1.5,-6.66 0.16,-2.9 -0.12,-5.86 -1.08,-8.61 -1.04,-2.99 -2.92,-5.75 -5.58,-7.47 -1.32,-0.86 -2.83,-1.45 -4.4,-1.67 -1.57,-0.22 -3.19,-0.05 -4.67,0.52 -0.84,0.33 -1.62,0.78 -2.37,1.29 z"/><g id="pupil_right"><path id="pupil_right_base" fill="#020204" d="m 117.14,45.52 c -0.9,0.06 -1.78,0.37 -2.55,0.85 -0.76,0.48 -1.41,1.13 -1.92,1.88 -1.03,1.49 -1.48,3.31 -1.55,5.12 -0.05,1.35 0.1,2.72 0.55,4 0.45,1.28 1.2,2.47 2.25,3.33 1.07,0.89 2.42,1.42 3.81,1.49 1.39,0.06 2.79,-0.34 3.93,-1.13 0.91,-0.63 1.64,-1.5 2.16,-2.48 0.52,-0.97 0.84,-2.05 0.98,-3.15 0.25,-1.93 -0.03,-3.95 -0.93,-5.69 -0.89,-1.74 -2.41,-3.17 -4.24,-3.84 -0.8,-0.29 -1.65,-0.44 -2.49,-0.38 z"/><path id="pupil_right_glare" fill="url(#fill_pupil_right_glare)" filter="url(#blur_pupil_right_glare)" clip-path="url(#clip_pupil_right)" d="m 122.71,53.36 c 1,-1 -0.71,-3.65 -2.05,-4.74 -0.97,-0.78 -3.78,-1.61 -3.66,-0.75 0.12,0.85 1.39,1.95 2.23,2.79 1.05,1.03 3,3.18 3.48,2.7 z"/></g><path id="eyelid_right" fill="url(#fill_eyelid_right)" clip-path="url(#clip_eye_right)" d="m 102.56,47.01 c 2.06,-1.71 4.45,-3.01 7,-3.8 5.25,-1.62 11.2,-0.98 15.84,1.97 1.6,1.01 3.03,2.27 4.52,3.45 1.48,1.17 3.06,2.27 4.85,2.9 0.97,0.34 2,0.54 3.02,0.43 0.92,-0.09 1.81,-0.44 2.57,-0.96 0.76,-0.53 1.4,-1.23 1.88,-2.02 0.96,-1.58 1.27,-3.5 1.1,-5.34 -0.33,-3.69 -2.41,-6.94 -4.15,-10.21 -0.55,-1.02 -1.07,-2.06 -1.73,-3.01 -2.01,-2.93 -5.23,-4.86 -8.6,-5.99 -3.37,-1.13 -6.93,-1.54 -10.46,-1.98 -1.58,-0.2 -3.17,-0.41 -4.74,-0.22 -1.81,0.22 -3.51,0.95 -5.28,1.4 -0.84,0.22 -1.69,0.37 -2.52,0.61 -0.83,0.24 -1.65,0.57 -2.33,1.11 -0.98,0.79 -1.6,1.98 -1.87,3.21 -0.27,1.24 -0.21,2.52 -0.01,3.77 0.39,2.5 1.33,4.93 1.24,7.46 -0.06,1.73 -0.61,3.44 -0.54,5.17 0.02,0.51 0.12,1.55 0.21,2.05 z"/><path id="eyebrow_right" fill="url(#fill_eyebrow_right)" filter="url(#blur_eyebrow_right)" d="m 119.93,31.18 c -0.41,0.52 -0.78,1.08 -1.07,1.7 1.85,0.4 3.61,1.16 5.19,2.21 3.06,2.03 5.38,4.99 7.01,8.29 0.38,-0.42 0.72,-0.87 1.02,-1.37 -1.64,-3.44 -4,-6.55 -7.16,-8.65 -1.52,-1 -3.21,-1.77 -4.99,-2.18 z"/></g></g><g id="beak"><g id="beak_shadow"><path id="beak_shadow_lower" fill="#000000" fill-opacity="0.258824" filter="url(#blur_beak_shadow_lower)" clip-path="url(#clip_body)" d="m 81.12,89.33 c 1.47,4.26 4.42,7.89 7.92,10.72 1.16,0.95 2.39,1.82 3.76,2.43 1.36,0.62 2.87,0.97 4.36,0.84 1.46,-0.12 2.85,-0.7 4.13,-1.42 1.28,-0.72 2.46,-1.59 3.7,-2.37 2.12,-1.35 4.39,-2.44 6.6,-3.64 2.65,-1.45 5.23,-3.1 7.46,-5.14 1.03,-0.93 1.98,-1.95 3.11,-2.75 1.13,-0.81 2.49,-1.39 3.87,-1.29 1.04,0.07 2.01,0.51 3.03,0.73 0.51,0.11 1.03,0.16 1.55,0.08 0.51,-0.08 1.01,-0.29 1.37,-0.67 0.44,-0.46 0.64,-1.12 0.61,-1.76 -0.02,-0.63 -0.24,-1.25 -0.54,-1.81 -0.59,-1.13 -1.49,-2.1 -1.89,-3.31 -0.36,-1.08 -0.29,-2.24 -0.26,-3.37 0.03,-1.14 0.01,-2.32 -0.51,-3.33 -0.4,-0.76 -1.07,-1.37 -1.83,-1.77 -0.76,-0.41 -1.62,-0.62 -2.48,-0.7 -1.72,-0.16 -3.44,0.18 -5.17,0.27 -2.28,0.13 -4.58,-0.15 -6.87,-0.02 -2.85,0.18 -5.65,1 -8.51,1.01 -3.26,0.01 -6.52,-1.06 -9.74,-0.55 -1.39,0.22 -2.71,0.72 -4.03,1.16 -1.33,0.45 -2.7,0.84 -4.1,0.82 -1.59,-0.03 -3.13,-0.58 -4.72,-0.69 -0.79,-0.06 -1.6,0 -2.35,0.28 -0.74,0.28 -1.41,0.79 -1.78,1.5 -0.21,0.4 -0.31,0.86 -0.33,1.31 -0.02,0.46 0.04,0.91 0.15,1.36 0.22,0.88 0.63,1.71 0.96,2.55 1.2,3.07 1.46,6.42 2.53,9.53 z"/><path id="beak_shadow_upper" opacity="0.3" fill="#000000" filter="url(#blur_beak_shadow_upper)" clip-path="url(#clip_body)" d="m 77.03,77.2 c 2.85,1.76 5.41,3.93 7.56,6.39 1.99,2.29 3.68,4.89 6.29,6.58 1.83,1.2 4.04,1.87 6.28,2.08 2.63,0.24 5.29,-0.15 7.83,-0.84 2.35,-0.63 4.62,-1.53 6.7,-2.71 3.97,-2.25 7.28,-5.55 11.65,-7.03 0.95,-0.33 1.94,-0.56 2.86,-0.96 0.92,-0.39 1.79,-0.99 2.23,-1.83 0.42,-0.82 0.4,-1.75 0.54,-2.64 0.15,-0.96 0.48,-1.88 0.66,-2.83 0.18,-0.95 0.2,-1.96 -0.24,-2.83 -0.37,-0.72 -1.04,-1.29 -1.81,-1.66 -0.77,-0.36 -1.64,-0.52 -2.51,-0.56 -1.72,-0.08 -3.43,0.33 -5.16,0.47 -2.28,0.19 -4.58,-0.08 -6.87,-0.01 -2.85,0.08 -5.66,0.67 -8.51,0.8 -3.25,0.14 -6.49,-0.34 -9.74,-0.44 -1.41,-0.05 -2.83,-0.03 -4.21,0.2 -1.39,0.22 -2.75,0.65 -3.92,1.37 -1.14,0.69 -2.07,1.64 -3.11,2.45 -0.52,0.41 -1.08,0.78 -1.68,1.07 -0.61,0.28 -1.28,0.48 -1.96,0.51 -0.35,0.01 -0.71,-0.01 -1.05,0.04 -0.59,0.08 -1.13,0.39 -1.47,0.83 -0.34,0.45 -0.47,1.02 -0.36,1.55 z"/></g><path id="beak_base" fill="url(#fill_beak_base)" d="m 91.66,58.53 c 1.53,-1.71 2.57,-3.8 4.03,-5.56 0.73,-0.88 1.58,-1.69 2.57,-2.26 0.99,-0.57 2.15,-0.89 3.29,-0.79 1.27,0.11 2.46,0.74 3.39,1.61 0.93,0.87 1.62,1.97 2.17,3.12 0.53,1.11 0.95,2.28 1.71,3.24 0.81,1.02 1.94,1.71 2.97,2.52 0.51,0.4 1.01,0.83 1.41,1.34 0.41,0.51 0.72,1.1 0.86,1.74 0.13,0.65 0.06,1.33 -0.16,1.95 -0.23,0.62 -0.61,1.18 -1.09,1.64 -0.95,0.92 -2.25,1.42 -3.56,1.6 -2.62,0.37 -5.27,-0.41 -7.92,-0.34 -2.67,0.08 -5.29,1.02 -7.97,0.93 -1.33,-0.05 -2.69,-0.38 -3.79,-1.14 -0.55,-0.39 -1.03,-0.88 -1.38,-1.45 -0.34,-0.57 -0.55,-1.23 -0.58,-1.9 -0.02,-0.64 0.13,-1.28 0.39,-1.86 0.25,-0.59 0.61,-1.12 1.01,-1.62 0.81,-0.99 1.8,-1.81 2.65,-2.77 z"/><g id="mandible_lower"><path id="mandible_lower_base" fill="url(#fill_mandible_lower_base)" d="m 77.14,75.05 c 0.06,0.26 0.15,0.5 0.28,0.73 0.23,0.38 0.57,0.69 0.93,0.95 0.36,0.27 0.75,0.49 1.13,0.72 2.01,1.27 3.65,3.04 5.11,4.92 1.95,2.52 3.68,5.31 6.29,7.14 1.84,1.3 4.04,2.03 6.28,2.26 2.63,0.26 5.29,-0.16 7.83,-0.91 2.35,-0.69 4.62,-1.66 6.7,-2.95 3.97,-2.44 7.28,-6.02 11.65,-7.63 0.95,-0.35 1.94,-0.6 2.86,-1.03 0.92,-0.44 1.79,-1.08 2.23,-2 0.42,-0.88 0.4,-1.9 0.54,-2.87 0.15,-1.03 0.48,-2.03 0.66,-3.06 0.18,-1.03 0.2,-2.13 -0.24,-3.08 -0.37,-0.78 -1.04,-1.4 -1.81,-1.79 -0.77,-0.4 -1.64,-0.58 -2.51,-0.62 -1.72,-0.08 -3.43,0.36 -5.16,0.52 -2.28,0.21 -4.58,-0.09 -6.87,-0.02 -2.85,0.09 -5.66,0.73 -8.51,0.87 -3.25,0.15 -6.49,-0.35 -9.74,-0.48 -1.41,-0.06 -2.83,-0.04 -4.22,0.2 -1.39,0.23 -2.75,0.71 -3.91,1.51 -1.13,0.78 -2.03,1.84 -3.07,2.74 -0.52,0.45 -1.08,0.86 -1.7,1.16 -0.61,0.3 -1.29,0.49 -1.98,0.47 -0.35,-0.01 -0.72,-0.06 -1.05,0.04 -0.21,0.07 -0.4,0.2 -0.56,0.35 -0.16,0.16 -0.29,0.34 -0.41,0.52 -0.29,0.42 -0.54,0.87 -0.75,1.34 z"/><path id="mandible_lower_glare" fill="#d9b30d" filter="url(#blur_mandible_lower_glare)" clip-path="url(#clip_mandible_lower)" d="m 89.9,78.56 c -0.33,1.37 -0.13,2.87 0.56,4.11 0.68,1.24 1.84,2.2 3.19,2.65 1.7,0.57 3.62,0.29 5.21,-0.54 0.93,-0.48 1.77,-1.16 2.3,-2.06 0.27,-0.44 0.46,-0.94 0.53,-1.46 0.06,-0.51 0.02,-1.05 -0.16,-1.54 -0.2,-0.53 -0.56,-1 -0.99,-1.37 -0.44,-0.37 -0.95,-0.64 -1.5,-0.82 -1.08,-0.36 -2.77,-0.66 -3.91,-0.68 -2.02,-0.04 -4.9,0.34 -5.23,1.71 z"/></g><g id="mandible_upper"><path id="mandible_upper_shadow" fill="#604405" filter="url(#blur_mandible_upper_shadow)" clip-path="url(#clip_mandible_lower)" d="m 84.31,67.86 c -1.16,0.68 -2.27,1.43 -3.36,2.2 -0.57,0.41 -1.15,0.84 -1.45,1.47 -0.21,0.44 -0.26,0.94 -0.27,1.43 0,0.5 0.03,0.99 -0.04,1.48 -0.04,0.33 -0.13,0.66 -0.14,0.99 -0.01,0.17 0,0.34 0.04,0.5 0.05,0.16 0.13,0.32 0.24,0.44 0.15,0.16 0.35,0.26 0.56,0.32 0.21,0.06 0.42,0.09 0.64,0.14 1.01,0.24 1.89,0.86 2.66,1.56 0.77,0.69 1.47,1.48 2.28,2.13 2.18,1.78 5.07,2.52 7.89,2.56 2.82,0.05 5.61,-0.54 8.36,-1.16 2.16,-0.49 4.32,-0.99 6.39,-1.76 3.2,-1.18 6.16,-2.96 8.72,-5.19 1.17,-1.01 2.26,-2.12 3.57,-2.94 1.15,-0.73 2.44,-1.21 3.62,-1.9 0.11,-0.06 0.21,-0.13 0.3,-0.2 0.1,-0.08 0.18,-0.18 0.24,-0.28 0.09,-0.19 0.09,-0.42 0.03,-0.62 -0.06,-0.2 -0.18,-0.38 -0.31,-0.55 -0.15,-0.18 -0.31,-0.34 -0.49,-0.5 -1.23,-1.05 -2.89,-1.43 -4.51,-1.56 -1.61,-0.12 -3.24,-0.03 -4.83,-0.3 -1.5,-0.25 -2.92,-0.81 -4.37,-1.27 -1.52,-0.49 -3.07,-0.87 -4.64,-1.13 -3.71,-0.61 -7.52,-0.49 -11.19,0.27 -3.49,0.73 -6.87,2.05 -9.94,3.87 z"/><path id="mandible_upper_base" fill="url(#fill_mandible_upper_base)" d="m 83.94,63.95 c -1.66,1.12 -3.16,2.49 -4.43,4.04 -0.72,0.89 -1.38,1.86 -1.74,2.94 -0.29,0.86 -0.39,1.76 -0.57,2.65 -0.07,0.33 -0.15,0.66 -0.14,1 0,0.16 0.02,0.33 0.07,0.5 0.05,0.16 0.14,0.31 0.25,0.43 0.2,0.2 0.47,0.31 0.74,0.37 0.28,0.05 0.56,0.06 0.84,0.09 1.25,0.15 2.4,0.75 3.44,1.47 1.04,0.71 2,1.55 3.07,2.22 2.35,1.49 5.16,2.15 7.95,2.26 2.78,0.11 5.56,-0.31 8.3,-0.86 2.17,-0.43 4.33,-0.95 6.39,-1.76 3.16,-1.25 6.01,-3.16 8.72,-5.19 1.24,-0.92 2.46,-1.87 3.57,-2.94 0.37,-0.37 0.74,-0.74 1.14,-1.08 0.4,-0.33 0.85,-0.62 1.35,-0.78 0.76,-0.24 1.58,-0.17 2.37,-0.04 0.59,0.1 1.18,0.23 1.78,0.21 0.3,-0.02 0.6,-0.07 0.88,-0.18 0.28,-0.11 0.54,-0.28 0.73,-0.52 0.25,-0.3 0.38,-0.7 0.38,-1.09 0,-0.4 -0.12,-0.79 -0.32,-1.13 -0.4,-0.68 -1.09,-1.14 -1.81,-1.46 -0.99,-0.44 -2.06,-0.65 -3.11,-0.91 -3.23,-0.78 -6.37,-1.93 -9.34,-3.41 -1.48,-0.73 -2.92,-1.54 -4.37,-2.32 -1.5,-0.8 -3.02,-1.57 -4.64,-2.07 -3.64,-1.1 -7.6,-0.74 -11.19,0.51 -3.98,1.38 -7.58,3.84 -10.31,7.05 z"/><path id="mandible_upper_glare" fill="#f6da4a" filter="url(#blur_mandible_upper_glare)" clip-path="url(#clip_mandible_upper)" d="m 109.45,64.75 c -0.2,-0.24 -0.48,-0.42 -0.78,-0.51 -0.3,-0.09 -0.62,-0.09 -0.93,-0.04 -0.62,0.11 -1.18,0.44 -1.7,0.8 -1.47,1.01 -2.77,2.26 -3.91,3.64 -1.5,1.83 -2.74,3.94 -3.16,6.27 -0.07,0.39 -0.11,0.8 -0.07,1.19 0.05,0.4 0.2,0.79 0.49,1.07 0.24,0.25 0.58,0.4 0.92,0.45 0.35,0.05 0.71,0 1.04,-0.11 0.66,-0.22 1.21,-0.69 1.74,-1.15 2.87,-2.58 5.47,-5.66 6.51,-9.38 0.1,-0.37 0.19,-0.75 0.19,-1.14 0,-0.39 -0.1,-0.78 -0.34,-1.09 z"/><path id="naris_left" opacity="0.8" fill="url(#fill_naris_left)" filter="url(#blur_naris_left)" d="m 92.72,59.06 c -0.77,-0.25 -2.03,1.1 -1.62,1.79 0.11,0.19 0.46,0.43 0.7,0.3 0.35,-0.19 0.64,-0.89 1.02,-1.16 0.25,-0.18 0.2,-0.84 -0.1,-0.93 z"/><path id="naris_right" opacity="0.8" fill="url(#fill_naris_right)" filter="url(#blur_naris_right)" d="m 102.56,59.42 c 0.2,0.64 1.23,0.53 1.83,0.84 0.52,0.27 0.94,0.86 1.53,0.88 0.56,0.01 1.44,-0.2 1.51,-0.76 0.09,-0.73 -0.98,-1.2 -1.67,-1.47 -0.89,-0.34 -2.03,-0.52 -2.86,-0.06 -0.19,0.11 -0.4,0.36 -0.34,0.57 z"/></g><path id="beak_corner" fill="url(#fill_beak_corner)" filter="url(#blur_beak_corner)" clip-path="url(#clip_beak)" d="m 129.27,69.15 a 2.42,3.1 16.94 0 1 -2.81,3.04 2.42,3.1 16.94 0 1 -2.12,-3.04 2.42,3.1 16.94 0 1 2.81,-3.05 2.42,3.1 16.94 0 1 2.12,3.05 z"/></g></g></g></svg>',
|
|
1266
|
+
windows: `<svg viewBox="0 0 22 22" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:block;width:100%;height:100%"><!-- The Microsoft squares on a white square. The white edge around them is one unit, the same as the gap between them, so the tile reads as the mark with its own margin. Drawn once, so every place shows the same tile. The colours are Microsoft's, as @lobehub/icons-static-svg carries them. --><rect width="22" height="22" fill="#fff"/><rect x="1" y="1" width="9.5" height="9.5" fill="#F25022"/><rect x="11.5" y="1" width="9.5" height="9.5" fill="#7FBA00"/><rect x="1" y="11.5" width="9.5" height="9.5" fill="#00A4EF"/><rect x="11.5" y="11.5" width="9.5" height="9.5" fill="#FFB900"/></svg>`
|
|
1267
|
+
};
|
|
1268
|
+
|
|
1269
|
+
// ../ui/dist/brand-marks.js
|
|
1270
|
+
var BRAND_NAMES = {
|
|
1271
|
+
qwen: "Qwen",
|
|
1272
|
+
meta: "Meta",
|
|
1273
|
+
google: "Google",
|
|
1274
|
+
gemini: "Gemini",
|
|
1275
|
+
mistral: "Mistral",
|
|
1276
|
+
nvidia: "NVIDIA",
|
|
1277
|
+
microsoft: "Microsoft",
|
|
1278
|
+
deepseek: "DeepSeek",
|
|
1279
|
+
openai: "OpenAI",
|
|
1280
|
+
codex: "Codex",
|
|
1281
|
+
anthropic: "Anthropic",
|
|
1282
|
+
claude: "Claude",
|
|
1283
|
+
cursor: "Cursor",
|
|
1284
|
+
huggingface: "Hugging Face",
|
|
1285
|
+
ollama: "Ollama",
|
|
1286
|
+
lmstudio: "LM Studio",
|
|
1287
|
+
zhipu: "Z.ai",
|
|
1288
|
+
moonshot: "Moonshot",
|
|
1289
|
+
ibm: "IBM",
|
|
1290
|
+
xai: "xAI",
|
|
1291
|
+
cohere: "Cohere",
|
|
1292
|
+
stability: "Stability AI",
|
|
1293
|
+
liquid: "Liquid AI",
|
|
1294
|
+
yi: "01.AI",
|
|
1295
|
+
internlm: "InternLM",
|
|
1296
|
+
minimax: "MiniMax",
|
|
1297
|
+
hunyuan: "Hunyuan",
|
|
1298
|
+
stepfun: "StepFun",
|
|
1299
|
+
arcee: "Arcee",
|
|
1300
|
+
nousresearch: "Nous Research",
|
|
1301
|
+
perplexity: "Perplexity",
|
|
1302
|
+
openrouter: "OpenRouter",
|
|
1303
|
+
groq: "Groq",
|
|
1304
|
+
github: "GitHub",
|
|
1305
|
+
notion: "Notion",
|
|
1306
|
+
obsidian: "Obsidian",
|
|
1307
|
+
zapier: "Zapier",
|
|
1308
|
+
n8n: "n8n",
|
|
1309
|
+
gitlab: "GitLab",
|
|
1310
|
+
linear: "Linear",
|
|
1311
|
+
discord: "Discord",
|
|
1312
|
+
figma: "Figma",
|
|
1313
|
+
jira: "Jira",
|
|
1314
|
+
trello: "Trello",
|
|
1315
|
+
asana: "Asana",
|
|
1316
|
+
todoist: "Todoist",
|
|
1317
|
+
airtable: "Airtable",
|
|
1318
|
+
gmail: "Gmail",
|
|
1319
|
+
"google-drive": "Google Drive",
|
|
1320
|
+
"google-calendar": "Google Calendar",
|
|
1321
|
+
dropbox: "Dropbox",
|
|
1322
|
+
stripe: "Stripe",
|
|
1323
|
+
cloudflare: "Cloudflare",
|
|
1324
|
+
postgres: "PostgreSQL",
|
|
1325
|
+
supabase: "Supabase",
|
|
1326
|
+
vercel: "Vercel",
|
|
1327
|
+
sentry: "Sentry",
|
|
1328
|
+
apple: "Apple",
|
|
1329
|
+
linux: "Linux",
|
|
1330
|
+
windows: "Windows"
|
|
1331
|
+
};
|
|
1332
|
+
function BrandMark({ brand, size: size3 = 16, style }) {
|
|
1333
|
+
return _jsx26("span", { className: "hs-brand-mark", role: "img", "aria-label": BRAND_NAMES[brand], style: { width: size3, height: size3, ...style }, dangerouslySetInnerHTML: { __html: BRAND_SVG[brand] } });
|
|
1334
|
+
}
|
|
1335
|
+
var PUBLISHERS = {
|
|
1336
|
+
qwen: "qwen",
|
|
1337
|
+
"meta-llama": "meta",
|
|
1338
|
+
facebook: "meta",
|
|
1339
|
+
google: "google",
|
|
1340
|
+
mistralai: "mistral",
|
|
1341
|
+
nvidia: "nvidia",
|
|
1342
|
+
microsoft: "microsoft",
|
|
1343
|
+
"deepseek-ai": "deepseek",
|
|
1344
|
+
openai: "openai",
|
|
1345
|
+
anthropic: "anthropic",
|
|
1346
|
+
"zai-org": "zhipu",
|
|
1347
|
+
thudm: "zhipu",
|
|
1348
|
+
moonshotai: "moonshot",
|
|
1349
|
+
"ibm-granite": "ibm",
|
|
1350
|
+
ibm: "ibm",
|
|
1351
|
+
"xai-org": "xai",
|
|
1352
|
+
coherelabs: "cohere",
|
|
1353
|
+
cohereforai: "cohere",
|
|
1354
|
+
stabilityai: "stability",
|
|
1355
|
+
"stable-diffusion-v1-5": "stability",
|
|
1356
|
+
liquidai: "liquid",
|
|
1357
|
+
"01-ai": "yi",
|
|
1358
|
+
internlm: "internlm",
|
|
1359
|
+
minimaxai: "minimax",
|
|
1360
|
+
tencent: "hunyuan",
|
|
1361
|
+
"stepfun-ai": "stepfun",
|
|
1362
|
+
"arcee-ai": "arcee",
|
|
1363
|
+
nousresearch: "nousresearch",
|
|
1364
|
+
"perplexity-ai": "perplexity",
|
|
1365
|
+
huggingfacetb: "huggingface",
|
|
1366
|
+
huggingfacem4: "huggingface",
|
|
1367
|
+
"lmstudio-community": "lmstudio"
|
|
1368
|
+
};
|
|
1369
|
+
function brandOfPublisher(owner) {
|
|
1370
|
+
return PUBLISHERS[owner.toLowerCase()] ?? null;
|
|
1371
|
+
}
|
|
1372
|
+
|
|
1373
|
+
// ../ui/dist/ModelAvatar.js
|
|
1374
|
+
var PublisherPicturesContext = createContext4(() => void 0);
|
|
1375
|
+
function ModelAvatar({ identity, server, size: size3 = 24 }) {
|
|
1376
|
+
return _jsx27(PublisherAvatar, { identity, server, size: size3 }, `${server}:${identity.repository}:${identity.publisher}`);
|
|
1377
|
+
}
|
|
1378
|
+
function PublisherAvatar({ identity, server, size: size3 }) {
|
|
1379
|
+
const pictures = useContext3(PublisherPicturesContext);
|
|
1380
|
+
const owner = identity.repository?.split("/")[0];
|
|
1381
|
+
const picture = owner ? pictures(server, owner) : void 0;
|
|
1382
|
+
const [failed, setFailed] = useState9(false);
|
|
1383
|
+
const brand = brandOfPublisher(identity.publisher);
|
|
1384
|
+
const tips = useFloatingTips();
|
|
1385
|
+
const { hover, tip } = tips("avatar", identity.publisher);
|
|
1386
|
+
return _jsxs16("span", { className: "hs-model-avatar", style: { width: size3, height: size3 }, role: "img", "aria-label": identity.publisher, ...hover, children: [tip, picture && !failed ? _jsx27("img", { src: picture, alt: "", width: size3, height: size3, loading: "lazy", decoding: "async", onError: () => setFailed(true) }) : brand ? _jsx27(BrandMark, { brand, size: size3 }) : identity.publisher ? _jsx27("span", { className: "hs-model-avatar-initial", children: identity.publisher.slice(0, 1) }) : _jsx27(PackageGlyph, { size: size3 })] });
|
|
1387
|
+
}
|
|
1388
|
+
|
|
1389
|
+
// ../ui/dist/VirtualList.js
|
|
1390
|
+
import { jsx as _jsx28 } from "react/jsx-runtime";
|
|
1391
|
+
import { useImperativeHandle, useRef as useRef11 } from "react";
|
|
1392
|
+
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
1393
|
+
function VirtualList({ count, estimate, row, rowKey, className, ref }) {
|
|
1394
|
+
const scroller = useRef11(null);
|
|
1395
|
+
const list = useVirtualizer({
|
|
1396
|
+
count,
|
|
1397
|
+
getScrollElement: () => scroller.current,
|
|
1398
|
+
estimateSize: () => estimate,
|
|
1399
|
+
overscan: 6,
|
|
1400
|
+
...rowKey && { getItemKey: rowKey }
|
|
1401
|
+
});
|
|
1402
|
+
useImperativeHandle(ref, () => ({ scrollToIndex: (index, align = "auto") => list.scrollToIndex(index, { align }) }), [list]);
|
|
1403
|
+
return _jsx28("div", { ref: scroller, className: className ? `hs-virtual-list ${className}` : "hs-virtual-list", children: _jsx28("div", { className: "hs-virtual-list-rows", style: { height: list.getTotalSize() }, children: list.getVirtualItems().map((item) => _jsx28("div", { ref: list.measureElement, "data-index": item.index, className: "hs-virtual-list-row", style: { transform: `translateY(${item.start}px)` }, children: row(item.index) }, item.key)) }) });
|
|
1404
|
+
}
|
|
1405
|
+
|
|
1406
|
+
// ../ui/dist/PictureCompare.js
|
|
1407
|
+
import { jsx as _jsx29, jsxs as _jsxs17 } from "react/jsx-runtime";
|
|
1408
|
+
import { useRef as useRef12, useState as useState10 } from "react";
|
|
1409
|
+
var KEY_STEP = 5;
|
|
1410
|
+
function PictureCompare({ before, after }) {
|
|
1411
|
+
const [split, setSplit] = useState10(50);
|
|
1412
|
+
const box = useRef12(null);
|
|
1413
|
+
const follow = (event) => {
|
|
1414
|
+
const rect = box.current.getBoundingClientRect();
|
|
1415
|
+
setSplit(Math.max(0, Math.min(100, (event.clientX - rect.left) / rect.width * 100)));
|
|
1416
|
+
};
|
|
1417
|
+
return _jsxs17("div", { ref: box, className: "hs-picture-compare", onPointerDown: (event) => {
|
|
1418
|
+
if (event.button !== 0)
|
|
1419
|
+
return;
|
|
1420
|
+
event.currentTarget.setPointerCapture(event.pointerId);
|
|
1421
|
+
follow(event);
|
|
1422
|
+
}, onPointerMove: (event) => {
|
|
1423
|
+
if (event.currentTarget.hasPointerCapture(event.pointerId))
|
|
1424
|
+
follow(event);
|
|
1425
|
+
}, children: [_jsx29("img", { src: before.src, alt: before.name, draggable: false }), _jsx29("div", { className: "hs-picture-compare-after", style: { clipPath: `inset(0 0 0 ${split}%)` }, children: _jsx29("img", { src: after.src, alt: after.name, draggable: false }) }), _jsx29("span", { className: "hs-picture-compare-name", "data-side": "before", children: before.name }), _jsx29("span", { className: "hs-picture-compare-name", "data-side": "after", children: after.name }), _jsx29("div", { className: "hs-picture-compare-handle", role: "slider", tabIndex: 0, "aria-label": `${before.name} and ${after.name}`, "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": Math.round(split), style: { left: `${split}%` }, onKeyDown: (event) => {
|
|
1426
|
+
const next = event.key === "ArrowLeft" || event.key === "ArrowDown" ? split - KEY_STEP : event.key === "ArrowRight" || event.key === "ArrowUp" ? split + KEY_STEP : event.key === "Home" ? 0 : event.key === "End" ? 100 : null;
|
|
1427
|
+
if (next === null)
|
|
1428
|
+
return;
|
|
1429
|
+
event.preventDefault();
|
|
1430
|
+
setSplit(Math.max(0, Math.min(100, next)));
|
|
1431
|
+
}, children: _jsx29("span", { className: "hs-picture-compare-knob" }) })] });
|
|
1432
|
+
}
|
|
1433
|
+
|
|
1434
|
+
// src/Icon.tsx
|
|
1435
|
+
import { jsx } from "react/jsx-runtime";
|
|
1436
|
+
var OWN = /* @__PURE__ */ new Set(["side-wide", "side-narrow"]);
|
|
1437
|
+
function Icon({ name, size: size3, className, style }) {
|
|
1438
|
+
const mark = OWN.has(name) ? `hs-glyph-${name}` : `ri-${name}`;
|
|
1439
|
+
return /* @__PURE__ */ jsx(
|
|
1440
|
+
"i",
|
|
1441
|
+
{
|
|
1442
|
+
"aria-hidden": "true",
|
|
1443
|
+
className: `hs-icon ${mark}${className ? ` ${className}` : ""}`,
|
|
1444
|
+
style: size3 === void 0 ? style : { fontSize: size3, ...style }
|
|
1445
|
+
}
|
|
1446
|
+
);
|
|
1447
|
+
}
|
|
1448
|
+
export {
|
|
1449
|
+
Button,
|
|
1450
|
+
Card,
|
|
1451
|
+
Chip,
|
|
1452
|
+
DateGrid,
|
|
1453
|
+
DatePicker,
|
|
1454
|
+
EmptyState,
|
|
1455
|
+
FactRow,
|
|
1456
|
+
Icon,
|
|
1457
|
+
IconButton,
|
|
1458
|
+
InfoRow,
|
|
1459
|
+
Kbd,
|
|
1460
|
+
Label,
|
|
1461
|
+
Lightbox,
|
|
1462
|
+
LinkRow,
|
|
1463
|
+
ListRow,
|
|
1464
|
+
MDivider,
|
|
1465
|
+
MItem,
|
|
1466
|
+
MSection,
|
|
1467
|
+
MSub,
|
|
1468
|
+
MenuSurface,
|
|
1469
|
+
Meter,
|
|
1470
|
+
ModelAvatar,
|
|
1471
|
+
Mono,
|
|
1472
|
+
Notice,
|
|
1473
|
+
OverlayScroll,
|
|
1474
|
+
PageTitle,
|
|
1475
|
+
PersonMark,
|
|
1476
|
+
PictureCompare,
|
|
1477
|
+
Popover,
|
|
1478
|
+
PublisherPicturesContext,
|
|
1479
|
+
SWATCHES,
|
|
1480
|
+
SegmentedControl,
|
|
1481
|
+
SettingsCard,
|
|
1482
|
+
SettingsSearch,
|
|
1483
|
+
SettingsSection,
|
|
1484
|
+
SettingsSelect,
|
|
1485
|
+
SettingsTabs,
|
|
1486
|
+
ShellConfirm,
|
|
1487
|
+
Slider,
|
|
1488
|
+
StatusWord,
|
|
1489
|
+
SwatchPicker,
|
|
1490
|
+
TextField,
|
|
1491
|
+
TextInput,
|
|
1492
|
+
TimePicker,
|
|
1493
|
+
Toast,
|
|
1494
|
+
Toggle,
|
|
1495
|
+
ToggleRow,
|
|
1496
|
+
VirtualList,
|
|
1497
|
+
anchorFrom,
|
|
1498
|
+
useFloatingTips
|
|
1499
|
+
};
|