cyperful 0.1.7 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cyperful/driver.rb +6 -3
- data/lib/cyperful/framework_injections.rb +32 -24
- data/lib/cyperful/test_parser.rb +20 -7
- data/lib/cyperful/ui_server.rb +46 -1
- data/lib/cyperful.rb +6 -0
- data/public/assets/index--K1anXib.js +42 -0
- data/public/assets/index-Uj6YFMhM.css +1 -0
- data/public/assets/syntax-highlighter-worker-BSRAN01e.js +2798 -0
- data/public/frame-agent.js +41 -38
- data/public/index.html +4 -4
- metadata +5 -4
- data/public/assets/index-CDElGKtz.css +0 -1
- data/public/assets/index-DMlaSnZ7.js +0 -54
data/public/frame-agent.js
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
(() => {
|
2
|
+
if (window.__cyperfulAgentInitialized)
|
3
|
+
return;
|
4
|
+
window.__cyperfulAgentInitialized = !0;
|
2
5
|
const f = console.log, d = (...t) => f("[Cyperful Agent]", ...t);
|
3
6
|
d("Loading...");
|
4
7
|
const { CYPERFUL_ORIGIN: u } = __CYPERFUL_CONFIG__;
|
@@ -7,28 +10,28 @@
|
|
7
10
|
return;
|
8
11
|
}
|
9
12
|
let y = 0;
|
10
|
-
const
|
11
|
-
let
|
13
|
+
const s = (t, e, n = null) => {
|
14
|
+
let i = null;
|
12
15
|
try {
|
13
16
|
const r = Date.now(), c = `${r}-${y++}`;
|
14
|
-
if ("url" in
|
17
|
+
if ("url" in e && e.url != null)
|
15
18
|
try {
|
16
|
-
const o = new URL(
|
19
|
+
const o = new URL(e.url, window.location.origin);
|
17
20
|
if (o.origin === u)
|
18
21
|
return null;
|
19
|
-
o.origin === window.location.origin && (
|
22
|
+
o.origin === window.location.origin && (e.url = o.pathname + o.search + o.hash);
|
20
23
|
} catch {
|
21
24
|
}
|
22
|
-
|
25
|
+
i = {
|
23
26
|
type: t,
|
24
|
-
data:
|
27
|
+
data: e,
|
25
28
|
id: c,
|
26
29
|
timestamp: r,
|
27
|
-
start_id:
|
28
|
-
}, window.parent.postMessage(
|
30
|
+
start_id: n ? n.id : void 0
|
31
|
+
}, window.parent.postMessage(i, u);
|
29
32
|
} catch {
|
30
33
|
}
|
31
|
-
return
|
34
|
+
return i;
|
32
35
|
};
|
33
36
|
for (const t of [
|
34
37
|
"log",
|
@@ -38,15 +41,15 @@
|
|
38
41
|
"dir",
|
39
42
|
"debug"
|
40
43
|
]) {
|
41
|
-
const
|
42
|
-
|
43
|
-
|
44
|
+
const e = console[t];
|
45
|
+
e && (console[t] = (...n) => {
|
46
|
+
e.apply(console, n), s("log", { level: t, args: n });
|
44
47
|
});
|
45
48
|
}
|
46
49
|
window.addEventListener("error", (t) => {
|
47
|
-
|
50
|
+
s("global_error", { message: t.error.toString() });
|
48
51
|
}), window.addEventListener("unhandledrejection", (t) => {
|
49
|
-
|
52
|
+
s("unhandledrejection", { message: t.reason.toString() });
|
50
53
|
});
|
51
54
|
function w(t) {
|
52
55
|
try {
|
@@ -57,46 +60,46 @@
|
|
57
60
|
}
|
58
61
|
}
|
59
62
|
function g(t) {
|
60
|
-
const
|
61
|
-
for (const [
|
62
|
-
n[e] =
|
63
|
-
return
|
63
|
+
const e = {};
|
64
|
+
for (const [n, i] of t.entries())
|
65
|
+
i instanceof Blob ? e[n] = `[[ Blob: ${i.size} bytes ]]` : e[n] = i.toString();
|
66
|
+
return e;
|
64
67
|
}
|
65
68
|
const _ = window.XMLHttpRequest;
|
66
69
|
function m() {
|
67
|
-
const t = new _(),
|
68
|
-
return t.open = (...
|
69
|
-
const [
|
70
|
-
method:
|
70
|
+
const t = new _(), e = t.open;
|
71
|
+
return t.open = (...n) => {
|
72
|
+
const [i, r, c] = n, o = s("xhr", {
|
73
|
+
method: i,
|
71
74
|
url: r
|
72
75
|
// body,
|
73
76
|
});
|
74
77
|
return t.addEventListener("load", () => {
|
75
|
-
o &&
|
78
|
+
o && s(
|
76
79
|
"xhr:finished",
|
77
80
|
{ status: t.status, response: t.response },
|
78
81
|
o
|
79
82
|
);
|
80
|
-
}),
|
83
|
+
}), e.apply(this, n);
|
81
84
|
}, t;
|
82
85
|
}
|
83
86
|
window.XMLHttpRequest = m;
|
84
87
|
const L = window.fetch;
|
85
88
|
window.fetch = (...t) => {
|
86
|
-
const [
|
87
|
-
method:
|
88
|
-
url:
|
89
|
-
body:
|
89
|
+
const [e, n = {}] = typeof t[0] == "string" || t[0] instanceof URL ? [t[0], t[1]] : [t[0].url, t[0]], i = n.method ?? "GET", r = n.body, c = n.headers || {}, o = c["content-type"] || c["Content-Type"] || void 0, R = r instanceof FormData ? g(r) : o != null && o.includes("application/json") ? w(r) : r, p = s("fetch", {
|
90
|
+
method: i,
|
91
|
+
url: e.toString(),
|
92
|
+
body: R,
|
90
93
|
bodyType: o
|
91
94
|
}), h = L(...t);
|
92
|
-
return h.then(async (
|
93
|
-
const
|
94
|
-
p &&
|
95
|
+
return h.then(async (l) => {
|
96
|
+
const a = l.headers.get("content-type") || "", v = a.includes("application/json") ? await l.clone().json() : a.includes("text/") ? await l.clone().text() : `[[ Unhandled content-type: ${a || "<empty>"} ]]`;
|
97
|
+
p && s(
|
95
98
|
"fetch:finished",
|
96
99
|
{
|
97
|
-
status:
|
98
|
-
responseType:
|
99
|
-
response:
|
100
|
+
status: l.status,
|
101
|
+
responseType: a || void 0,
|
102
|
+
response: v
|
100
103
|
},
|
101
104
|
p
|
102
105
|
);
|
@@ -105,14 +108,14 @@
|
|
105
108
|
};
|
106
109
|
const S = history.pushState;
|
107
110
|
history.pushState = (...t) => {
|
108
|
-
S.apply(history, t),
|
111
|
+
S.apply(history, t), s("client_navigate", {
|
109
112
|
url: location.href,
|
110
113
|
replace: !1
|
111
114
|
});
|
112
115
|
};
|
113
|
-
const
|
116
|
+
const b = history.replaceState;
|
114
117
|
history.replaceState = (...t) => {
|
115
|
-
|
118
|
+
b.apply(history, t), s("client_navigate", {
|
116
119
|
url: location.href,
|
117
120
|
replace: !0
|
118
121
|
});
|
data/public/index.html
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
<!
|
1
|
+
<!doctype html>
|
2
2
|
<html lang="en">
|
3
3
|
<head>
|
4
4
|
<meta charset="UTF-8" />
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
6
6
|
<link rel="icon" href="/assets/favicon-DMdBZQlK.ico" />
|
7
7
|
<title>Cyperful</title>
|
8
|
-
<script type="module" crossorigin src="/assets/index
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
8
|
+
<script type="module" crossorigin src="/assets/index--K1anXib.js"></script>
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Uj6YFMhM.css">
|
10
10
|
</head>
|
11
|
-
<body>
|
11
|
+
<body class="bg-stone-900 text-slate-100">
|
12
12
|
<div id="root"></div>
|
13
13
|
</body>
|
14
14
|
</html>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cyperful
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wyatt Ades
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-03-
|
11
|
+
date: 2024-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capybara
|
@@ -65,8 +65,9 @@ files:
|
|
65
65
|
- lib/cyperful/test_parser.rb
|
66
66
|
- lib/cyperful/ui_server.rb
|
67
67
|
- public/assets/favicon-DMdBZQlK.ico
|
68
|
-
- public/assets/index
|
69
|
-
- public/assets/index-
|
68
|
+
- public/assets/index--K1anXib.js
|
69
|
+
- public/assets/index-Uj6YFMhM.css
|
70
|
+
- public/assets/syntax-highlighter-worker-BSRAN01e.js
|
70
71
|
- public/frame-agent.js
|
71
72
|
- public/index.html
|
72
73
|
homepage: https://github.com/stepful/cyperful
|
@@ -1 +0,0 @@
|
|
1
|
-
*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.static{position:static}.absolute{position:absolute}.relative{position:relative}.bottom-1{bottom:.25rem}.left-0{left:0}.left-1{left:.25rem}.right-0{right:0}.right-1{right:.25rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.m-4{margin:1rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.ml-1{margin-left:.25rem}.mr-2{margin-right:.5rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.hidden{display:none}.h-10{height:2.5rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-5{height:1.25rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-16{max-height:4rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-full{width:100%}.flex-1{flex:1 1 0%}.basis-96{flex-basis:24rem}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize{resize:both}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.items-stretch{align-items:stretch}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-blue-600{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-green-600{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity))}.border-orange-500{--tw-border-opacity: 1;border-color:rgb(249 115 22 / var(--tw-border-opacity))}.border-red-600{--tw-border-opacity: 1;border-color:rgb(220 38 38 / var(--tw-border-opacity))}.border-slate-800{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity))}.border-yellow-600{--tw-border-opacity: 1;border-color:rgb(202 138 4 / var(--tw-border-opacity))}.bg-\[\#121b2e\]{--tw-bg-opacity: 1;background-color:rgb(18 27 46 / var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity))}.bg-orange-400{--tw-bg-opacity: 1;background-color:rgb(251 146 60 / var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.bg-slate-950{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity))}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity))}.p-2{padding:.5rem}.p-4{padding:1rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.pt-0{padding-top:0}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-\[1\.25em\]{font-size:1.25em}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.capitalize{text-transform:capitalize}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-green-100{--tw-text-opacity: 1;color:rgb(220 252 231 / var(--tw-text-opacity))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity))}.text-red-100{--tw-text-opacity: 1;color:rgb(254 226 226 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity))}.opacity-50{opacity:.5}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / .05);--tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.Logo g{transform-origin:50% 50%;animation:rotate 5s linear infinite;animation-play-state:paused}.Logo.Logo--animating g{animation-play-state:running}.Logo g:nth-child(1){animation-duration:1s}.Logo g:nth-child(2){animation-duration:1.5s}.Logo g:nth-child(3){animation-duration:3s}.Logo g:nth-child(4){animation-duration:4s}.hover\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.hover\:bg-green-600:hover{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity))}.hover\:bg-orange-500:hover{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.hover\:bg-yellow-600:hover{--tw-bg-opacity: 1;background-color:rgb(202 138 4 / var(--tw-bg-opacity))}.hover\:underline:hover{text-decoration-line:underline}.group:hover .group-hover\:block{display:block}
|