@qwik.dev/devtools 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/plugin/index.js +231 -199
- package/dist/ui/devtools.qwik.mjs +46 -67
- package/dist/ui/features/Packages/components/DependencyCard/DependencyCard.qwik.mjs +14 -8
- package/dist/ui/global.css.qwik.mjs +1 -1
- package/dist/ui/lib-types/kit/src/types.d.ts +9 -0
- package/dist/ui/lib-types/ui/src/features/Packages/types.d.ts +10 -2
- package/package.json +1 -1
package/dist/plugin/index.js
CHANGED
|
@@ -8030,171 +8030,199 @@ var import_src = __toESM(require_src(), 1);
|
|
|
8030
8030
|
//#endregion
|
|
8031
8031
|
//#region src/npm/index.ts
|
|
8032
8032
|
const log$4 = (0, import_src.debug)("qwik:devtools:npm");
|
|
8033
|
-
const packageCache = new Map();
|
|
8034
|
-
const CACHE_TTL = 1e3 * 60 * 30;
|
|
8035
8033
|
let preloadedDependencies = null;
|
|
8036
8034
|
let isPreloading = false;
|
|
8037
8035
|
let preloadPromise = null;
|
|
8038
|
-
|
|
8039
|
-
|
|
8040
|
-
|
|
8041
|
-
|
|
8042
|
-
|
|
8043
|
-
|
|
8044
|
-
|
|
8045
|
-
|
|
8046
|
-
|
|
8047
|
-
|
|
8048
|
-
|
|
8036
|
+
let dependenciesStatus = {
|
|
8037
|
+
phase: "idle",
|
|
8038
|
+
loaded: 0,
|
|
8039
|
+
total: 0,
|
|
8040
|
+
startedAt: null,
|
|
8041
|
+
finishedAt: null
|
|
8042
|
+
};
|
|
8043
|
+
async function fileExists(filePath) {
|
|
8044
|
+
try {
|
|
8045
|
+
await fsp.access(filePath);
|
|
8046
|
+
return true;
|
|
8047
|
+
} catch {
|
|
8048
|
+
return false;
|
|
8049
|
+
}
|
|
8049
8050
|
}
|
|
8050
|
-
async function
|
|
8051
|
+
async function readJsonFile(filePath) {
|
|
8051
8052
|
try {
|
|
8052
|
-
|
|
8053
|
-
|
|
8054
|
-
const candidate = path.join(currentDir, fileName);
|
|
8055
|
-
const exists = await fsp.access(candidate).then(() => true).catch(() => false);
|
|
8056
|
-
if (exists) return candidate;
|
|
8057
|
-
const parent = path.dirname(currentDir);
|
|
8058
|
-
if (parent === currentDir) break;
|
|
8059
|
-
currentDir = parent;
|
|
8060
|
-
}
|
|
8061
|
-
return null;
|
|
8053
|
+
const content = await fsp.readFile(filePath, "utf-8");
|
|
8054
|
+
return JSON.parse(content);
|
|
8062
8055
|
} catch {
|
|
8063
8056
|
return null;
|
|
8064
8057
|
}
|
|
8065
8058
|
}
|
|
8059
|
+
async function findNearestFileUp(startDir, fileName) {
|
|
8060
|
+
let currentDir = path.resolve(startDir);
|
|
8061
|
+
for (let i = 0; i < 100; i++) {
|
|
8062
|
+
const candidate = path.join(currentDir, fileName);
|
|
8063
|
+
if (await fileExists(candidate)) return candidate;
|
|
8064
|
+
const parent = path.dirname(currentDir);
|
|
8065
|
+
if (parent === currentDir) break;
|
|
8066
|
+
currentDir = parent;
|
|
8067
|
+
}
|
|
8068
|
+
return null;
|
|
8069
|
+
}
|
|
8066
8070
|
function getProjectStartDirFromConfig(config) {
|
|
8067
8071
|
if (config?.root) return config.root;
|
|
8068
8072
|
if (config?.configFile) return path.dirname(config.configFile);
|
|
8069
8073
|
return process.cwd();
|
|
8070
8074
|
}
|
|
8071
|
-
|
|
8072
|
-
|
|
8073
|
-
|
|
8074
|
-
|
|
8075
|
-
|
|
8076
|
-
|
|
8077
|
-
|
|
8078
|
-
return "pnpm";
|
|
8079
|
-
}
|
|
8075
|
+
function nodeModulesPackageJsonPath(projectRoot, name) {
|
|
8076
|
+
return path.join(projectRoot, "node_modules", ...name.split("/"), "package.json");
|
|
8077
|
+
}
|
|
8078
|
+
function normalizeRepositoryUrl(repository) {
|
|
8079
|
+
const url = typeof repository === "string" ? repository : repository?.url;
|
|
8080
|
+
if (!url || typeof url !== "string") return void 0;
|
|
8081
|
+
return url.replace(/^git\+/, "").replace(/^ssh:\/\/git@/, "https://").replace(/\.git$/, "");
|
|
8080
8082
|
}
|
|
8081
|
-
|
|
8082
|
-
if (
|
|
8083
|
-
|
|
8084
|
-
return
|
|
8083
|
+
function guessIconUrl(name, repositoryUrl) {
|
|
8084
|
+
if (name.startsWith("@")) {
|
|
8085
|
+
const scope = name.split("/")[0].substring(1);
|
|
8086
|
+
return `https://avatars.githubusercontent.com/${scope}?size=64`;
|
|
8085
8087
|
}
|
|
8086
|
-
if (
|
|
8087
|
-
|
|
8088
|
-
return
|
|
8088
|
+
if (repositoryUrl?.includes("github.com")) {
|
|
8089
|
+
const match$1 = repositoryUrl.match(/github\.com\/([^\/]+)/);
|
|
8090
|
+
if (match$1) return `https://avatars.githubusercontent.com/${match$1[1]}?size=64`;
|
|
8089
8091
|
}
|
|
8092
|
+
return null;
|
|
8093
|
+
}
|
|
8094
|
+
function deferToEventLoop() {
|
|
8095
|
+
return new Promise((resolve$2) => setImmediate(resolve$2));
|
|
8096
|
+
}
|
|
8097
|
+
async function mapLimit(items, concurrency, fn) {
|
|
8098
|
+
if (items.length === 0) return [];
|
|
8099
|
+
const results = new Array(items.length);
|
|
8100
|
+
let cursor = 0;
|
|
8101
|
+
const workers = Array.from({ length: Math.min(concurrency, items.length) }, async () => {
|
|
8102
|
+
while (true) {
|
|
8103
|
+
const i = cursor++;
|
|
8104
|
+
if (i >= items.length) return;
|
|
8105
|
+
results[i] = await fn(items[i], i);
|
|
8106
|
+
}
|
|
8107
|
+
});
|
|
8108
|
+
await Promise.all(workers);
|
|
8109
|
+
return results;
|
|
8110
|
+
}
|
|
8111
|
+
async function detectPackageManager(projectRoot) {
|
|
8112
|
+
if (await fileExists(path.join(projectRoot, "pnpm-lock.yaml"))) return "pnpm";
|
|
8113
|
+
if (await fileExists(path.join(projectRoot, "yarn.lock"))) return "yarn";
|
|
8114
|
+
if (await fileExists(path.join(projectRoot, "package-lock.json"))) return "npm";
|
|
8115
|
+
return "pnpm";
|
|
8116
|
+
}
|
|
8117
|
+
async function phase1LocalIndex(projectRoot, deps) {
|
|
8118
|
+
const localConcurrency = 16;
|
|
8119
|
+
return mapLimit(deps, localConcurrency, async ([name, requestedVersion]) => {
|
|
8120
|
+
const pkgJsonPath = nodeModulesPackageJsonPath(projectRoot, name);
|
|
8121
|
+
const installedPkg = await readJsonFile(pkgJsonPath);
|
|
8122
|
+
const version = installedPkg?.version || requestedVersion;
|
|
8123
|
+
const repository = normalizeRepositoryUrl(installedPkg?.repository);
|
|
8124
|
+
const iconUrl = guessIconUrl(name, repository);
|
|
8125
|
+
const info = {
|
|
8126
|
+
name,
|
|
8127
|
+
version,
|
|
8128
|
+
description: installedPkg?.description || "No description available",
|
|
8129
|
+
author: installedPkg?.author,
|
|
8130
|
+
homepage: installedPkg?.homepage,
|
|
8131
|
+
repository,
|
|
8132
|
+
npmUrl: `https://www.npmjs.com/package/${name}`,
|
|
8133
|
+
iconUrl
|
|
8134
|
+
};
|
|
8135
|
+
dependenciesStatus.loaded++;
|
|
8136
|
+
if (dependenciesStatus.loaded % 50 === 0) await deferToEventLoop();
|
|
8137
|
+
return info;
|
|
8138
|
+
});
|
|
8139
|
+
}
|
|
8140
|
+
async function phase2BackgroundEnrich(deps) {
|
|
8141
|
+
const targets = deps.filter((p$1) => !p$1.repository || !p$1.iconUrl || p$1.description === "No description available");
|
|
8142
|
+
const enrichConcurrency = 6;
|
|
8143
|
+
await mapLimit(targets, enrichConcurrency, async (p$1) => {
|
|
8144
|
+
const repo = normalizeRepositoryUrl(p$1.repository);
|
|
8145
|
+
if (repo && repo !== p$1.repository) p$1.repository = repo;
|
|
8146
|
+
if (!p$1.iconUrl) p$1.iconUrl = guessIconUrl(p$1.name, p$1.repository);
|
|
8147
|
+
if (!p$1.repository || p$1.description === "No description available") try {
|
|
8148
|
+
const controller = new AbortController();
|
|
8149
|
+
const timeoutId = setTimeout(() => controller.abort(), 1500);
|
|
8150
|
+
const res = await fetch(`https://registry.npmjs.org/${encodeURIComponent(p$1.name)}/${encodeURIComponent(p$1.version)}`, {
|
|
8151
|
+
headers: { Accept: "application/json" },
|
|
8152
|
+
signal: controller.signal
|
|
8153
|
+
});
|
|
8154
|
+
clearTimeout(timeoutId);
|
|
8155
|
+
if (res.ok) {
|
|
8156
|
+
const data = await res.json();
|
|
8157
|
+
if (!p$1.repository) p$1.repository = normalizeRepositoryUrl(data?.repository);
|
|
8158
|
+
if (p$1.description === "No description available" && data?.description) p$1.description = data.description;
|
|
8159
|
+
if (!p$1.iconUrl) p$1.iconUrl = guessIconUrl(p$1.name, p$1.repository);
|
|
8160
|
+
}
|
|
8161
|
+
} catch {}
|
|
8162
|
+
await deferToEventLoop();
|
|
8163
|
+
return p$1;
|
|
8164
|
+
});
|
|
8165
|
+
}
|
|
8166
|
+
async function preloadDependencies(config) {
|
|
8167
|
+
if (preloadedDependencies) return preloadedDependencies;
|
|
8168
|
+
if (isPreloading && preloadPromise) return preloadPromise;
|
|
8090
8169
|
isPreloading = true;
|
|
8091
|
-
|
|
8170
|
+
dependenciesStatus = {
|
|
8171
|
+
phase: "phase1",
|
|
8172
|
+
loaded: 0,
|
|
8173
|
+
total: 0,
|
|
8174
|
+
startedAt: Date.now(),
|
|
8175
|
+
finishedAt: null
|
|
8176
|
+
};
|
|
8092
8177
|
preloadPromise = (async () => {
|
|
8093
8178
|
const startDir = getProjectStartDirFromConfig(config);
|
|
8094
|
-
const
|
|
8095
|
-
if (!
|
|
8179
|
+
const packageJsonPath = await findNearestFileUp(startDir, "package.json");
|
|
8180
|
+
if (!packageJsonPath) {
|
|
8096
8181
|
preloadedDependencies = [];
|
|
8182
|
+
dependenciesStatus.phase = "done";
|
|
8183
|
+
dependenciesStatus.finishedAt = Date.now();
|
|
8097
8184
|
isPreloading = false;
|
|
8098
|
-
log$4("[Qwik DevTools] No package.json found");
|
|
8099
8185
|
return [];
|
|
8100
8186
|
}
|
|
8187
|
+
const projectRoot = path.dirname(packageJsonPath);
|
|
8188
|
+
const pkg = await readJsonFile(packageJsonPath);
|
|
8189
|
+
const allDeps = {
|
|
8190
|
+
...pkg?.dependencies || {},
|
|
8191
|
+
...pkg?.devDependencies || {},
|
|
8192
|
+
...pkg?.peerDependencies || {}
|
|
8193
|
+
};
|
|
8194
|
+
const entries = Object.entries(allDeps);
|
|
8195
|
+
dependenciesStatus.total = entries.length;
|
|
8101
8196
|
try {
|
|
8102
|
-
const
|
|
8103
|
-
|
|
8104
|
-
|
|
8105
|
-
|
|
8106
|
-
|
|
8107
|
-
|
|
8108
|
-
|
|
8109
|
-
|
|
8110
|
-
|
|
8111
|
-
|
|
8112
|
-
|
|
8113
|
-
|
|
8114
|
-
|
|
8115
|
-
|
|
8116
|
-
|
|
8117
|
-
|
|
8118
|
-
|
|
8119
|
-
|
|
8120
|
-
if (uncachedDependencies.length === 0) {
|
|
8121
|
-
preloadedDependencies = cachedPackages;
|
|
8122
|
-
isPreloading = false;
|
|
8123
|
-
return cachedPackages;
|
|
8124
|
-
}
|
|
8125
|
-
const batchSize = 100;
|
|
8126
|
-
const batches = [];
|
|
8127
|
-
for (let i = 0; i < uncachedDependencies.length; i += batchSize) batches.push(uncachedDependencies.slice(i, i + batchSize));
|
|
8128
|
-
const fetchedPackages = [];
|
|
8129
|
-
log$4(`[Qwik DevTools] Fetching ${uncachedDependencies.length} packages in parallel...`);
|
|
8130
|
-
const allBatchPromises = batches.map(async (batch) => {
|
|
8131
|
-
const batchPromises = batch.map(async ([name, version]) => {
|
|
8132
|
-
try {
|
|
8133
|
-
const controller = new AbortController();
|
|
8134
|
-
const timeoutId = setTimeout(() => controller.abort(), 5e3);
|
|
8135
|
-
const response = await fetch(`https://registry.npmjs.org/${name}`, {
|
|
8136
|
-
headers: { "Accept": "application/json" },
|
|
8137
|
-
signal: controller.signal
|
|
8138
|
-
});
|
|
8139
|
-
clearTimeout(timeoutId);
|
|
8140
|
-
if (!response.ok) throw new Error(`HTTP ${response.status}`);
|
|
8141
|
-
const packageData = await response.json();
|
|
8142
|
-
const latestVersion = packageData["dist-tags"]?.latest || version;
|
|
8143
|
-
const versionData = packageData.versions?.[latestVersion] || packageData.versions?.[version];
|
|
8144
|
-
let repositoryUrl = versionData?.repository?.url || packageData.repository?.url;
|
|
8145
|
-
if (repositoryUrl) repositoryUrl = repositoryUrl.replace(/^git\+/, "").replace(/^ssh:\/\/git@/, "https://").replace(/\.git$/, "");
|
|
8146
|
-
let iconUrl = null;
|
|
8147
|
-
if (packageData.logo) iconUrl = packageData.logo;
|
|
8148
|
-
else if (name.startsWith("@")) {
|
|
8149
|
-
const scope = name.split("/")[0].substring(1);
|
|
8150
|
-
iconUrl = `https://avatars.githubusercontent.com/${scope}?size=64`;
|
|
8151
|
-
} else if (repositoryUrl?.includes("github.com")) {
|
|
8152
|
-
const repoMatch = repositoryUrl.match(/github\.com\/([^\/]+)/);
|
|
8153
|
-
if (repoMatch) iconUrl = `https://avatars.githubusercontent.com/${repoMatch[1]}?size=64`;
|
|
8154
|
-
}
|
|
8155
|
-
const packageInfo = {
|
|
8156
|
-
name,
|
|
8157
|
-
version,
|
|
8158
|
-
description: versionData?.description || packageData.description || "No description available",
|
|
8159
|
-
author: versionData?.author || packageData.author,
|
|
8160
|
-
homepage: versionData?.homepage || packageData.homepage,
|
|
8161
|
-
repository: repositoryUrl,
|
|
8162
|
-
npmUrl: `https://www.npmjs.com/package/${name}`,
|
|
8163
|
-
iconUrl
|
|
8164
|
-
};
|
|
8165
|
-
setCachedPackage(name, packageInfo);
|
|
8166
|
-
return packageInfo;
|
|
8167
|
-
} catch (error) {
|
|
8168
|
-
const basicInfo = {
|
|
8169
|
-
name,
|
|
8170
|
-
version,
|
|
8171
|
-
description: "No description available",
|
|
8172
|
-
npmUrl: `https://www.npmjs.com/package/${name}`,
|
|
8173
|
-
iconUrl: null
|
|
8174
|
-
};
|
|
8175
|
-
setCachedPackage(name, basicInfo);
|
|
8176
|
-
return basicInfo;
|
|
8177
|
-
}
|
|
8178
|
-
});
|
|
8179
|
-
const batchResults = await Promise.allSettled(batchPromises);
|
|
8180
|
-
return batchResults.filter((result) => result.status === "fulfilled").map((result) => result.value);
|
|
8181
|
-
});
|
|
8182
|
-
const allBatchResults = await Promise.all(allBatchPromises);
|
|
8183
|
-
for (const batchResult of allBatchResults) fetchedPackages.push(...batchResult);
|
|
8184
|
-
const allPackages = [...cachedPackages, ...fetchedPackages];
|
|
8185
|
-
preloadedDependencies = allPackages;
|
|
8186
|
-
isPreloading = false;
|
|
8187
|
-
log$4(`[Qwik DevTools] ✓ Successfully preloaded ${allPackages.length} dependencies`);
|
|
8188
|
-
return allPackages;
|
|
8189
|
-
} catch (error) {
|
|
8190
|
-
log$4("[Qwik DevTools] ✗ Failed to preload dependencies:", error);
|
|
8197
|
+
const list = await phase1LocalIndex(projectRoot, entries);
|
|
8198
|
+
preloadedDependencies = list;
|
|
8199
|
+
dependenciesStatus.phase = "phase2";
|
|
8200
|
+
(async () => {
|
|
8201
|
+
try {
|
|
8202
|
+
await phase2BackgroundEnrich(list);
|
|
8203
|
+
dependenciesStatus.phase = "done";
|
|
8204
|
+
} catch (e) {
|
|
8205
|
+
dependenciesStatus.phase = "error";
|
|
8206
|
+
dependenciesStatus.error = e instanceof Error ? e.message : String(e);
|
|
8207
|
+
} finally {
|
|
8208
|
+
dependenciesStatus.finishedAt = Date.now();
|
|
8209
|
+
isPreloading = false;
|
|
8210
|
+
}
|
|
8211
|
+
})();
|
|
8212
|
+
log$4(`[Qwik DevTools] ✓ Phase1 preloaded ${list.length} dependencies (local-first)`);
|
|
8213
|
+
return list;
|
|
8214
|
+
} catch (e) {
|
|
8191
8215
|
preloadedDependencies = [];
|
|
8216
|
+
dependenciesStatus.phase = "error";
|
|
8217
|
+
dependenciesStatus.error = e instanceof Error ? e.message : String(e);
|
|
8218
|
+
dependenciesStatus.finishedAt = Date.now();
|
|
8192
8219
|
isPreloading = false;
|
|
8220
|
+
log$4("[Qwik DevTools] ✗ Failed to preload dependencies (local-first):", e);
|
|
8193
8221
|
return [];
|
|
8194
8222
|
}
|
|
8195
8223
|
})();
|
|
8196
8224
|
return preloadPromise;
|
|
8197
|
-
}
|
|
8225
|
+
}
|
|
8198
8226
|
async function startPreloading({ config }) {
|
|
8199
8227
|
const startTime = Date.now();
|
|
8200
8228
|
log$4("[Qwik DevTools] 🚀 Initiating dependency preload (background)...");
|
|
@@ -8213,8 +8241,7 @@ function getNpmFunctions({ config }) {
|
|
|
8213
8241
|
const pathToPackageJson = await findNearestFileUp(startDir, "package.json");
|
|
8214
8242
|
if (!pathToPackageJson) return [];
|
|
8215
8243
|
try {
|
|
8216
|
-
const
|
|
8217
|
-
const pkg = JSON.parse(pkgJson);
|
|
8244
|
+
const pkg = await readJsonFile(pathToPackageJson);
|
|
8218
8245
|
return Object.entries(pkg.devDependencies).filter(([key]) => /@qwik/i.test(key));
|
|
8219
8246
|
} catch (error) {
|
|
8220
8247
|
return [];
|
|
@@ -8225,12 +8252,26 @@ function getNpmFunctions({ config }) {
|
|
|
8225
8252
|
log$4("[Qwik DevTools] Returning preloaded dependencies");
|
|
8226
8253
|
return preloadedDependencies;
|
|
8227
8254
|
}
|
|
8228
|
-
if (isPreloading
|
|
8229
|
-
log$4("[Qwik DevTools] Waiting for preload to complete...");
|
|
8230
|
-
return preloadPromise;
|
|
8231
|
-
}
|
|
8255
|
+
if (isPreloading) return [];
|
|
8232
8256
|
log$4("[Qwik DevTools] Warning: Preload not started, starting now...");
|
|
8233
|
-
|
|
8257
|
+
preloadDependencies(config);
|
|
8258
|
+
return [];
|
|
8259
|
+
},
|
|
8260
|
+
async getDependenciesStatus() {
|
|
8261
|
+
return dependenciesStatus;
|
|
8262
|
+
},
|
|
8263
|
+
async refreshDependencies() {
|
|
8264
|
+
preloadedDependencies = null;
|
|
8265
|
+
isPreloading = false;
|
|
8266
|
+
preloadPromise = null;
|
|
8267
|
+
dependenciesStatus = {
|
|
8268
|
+
phase: "idle",
|
|
8269
|
+
loaded: 0,
|
|
8270
|
+
total: 0,
|
|
8271
|
+
startedAt: null,
|
|
8272
|
+
finishedAt: null
|
|
8273
|
+
};
|
|
8274
|
+
preloadDependencies(config);
|
|
8234
8275
|
},
|
|
8235
8276
|
async installPackage(packageName, isDev = true) {
|
|
8236
8277
|
try {
|
|
@@ -9810,11 +9851,6 @@ const __qwik_perf_init_csr__ = () => {
|
|
|
9810
9851
|
const __qwik_perf_get_ssr_store__ = () =>
|
|
9811
9852
|
typeof process !== 'undefined' && process ? process : globalThis;
|
|
9812
9853
|
|
|
9813
|
-
const __qwik_perf_to_error__ = (err) => ({
|
|
9814
|
-
name: (err && err.name) || 'Error',
|
|
9815
|
-
message: err && err.message ? String(err.message) : String(err),
|
|
9816
|
-
});
|
|
9817
|
-
|
|
9818
9854
|
const __qwik_perf_next_id__ = (perf) => {
|
|
9819
9855
|
perf._id = (perf._id || 0) + 1;
|
|
9820
9856
|
return perf._id;
|
|
@@ -9936,31 +9972,17 @@ function componentQrl(qrl, options) {
|
|
|
9936
9972
|
if(qrl.dev){
|
|
9937
9973
|
viteId = qrl.dev.file.replace(/[^/]*$/, qrl.dev.displayName);
|
|
9938
9974
|
}
|
|
9939
|
-
|
|
9940
|
-
|
|
9941
|
-
|
|
9942
|
-
|
|
9943
|
-
|
|
9944
|
-
|
|
9945
|
-
|
|
9946
|
-
|
|
9947
|
-
|
|
9948
|
-
|
|
9949
|
-
|
|
9950
|
-
return result;
|
|
9951
|
-
} catch (err) {
|
|
9952
|
-
const duration = performance.now() - start;
|
|
9953
|
-
__qwik_perf_commit_componentqrl__({
|
|
9954
|
-
component,
|
|
9955
|
-
phase,
|
|
9956
|
-
duration,
|
|
9957
|
-
start,
|
|
9958
|
-
viteId,
|
|
9959
|
-
end: start + duration,
|
|
9960
|
-
error: __qwik_perf_to_error__(err),
|
|
9961
|
-
});
|
|
9962
|
-
throw err;
|
|
9963
|
-
}
|
|
9975
|
+
const result = originalComponentQrl(qrl, options);
|
|
9976
|
+
const duration = performance.now() - start;
|
|
9977
|
+
__qwik_perf_commit_componentqrl__({
|
|
9978
|
+
component,
|
|
9979
|
+
phase,
|
|
9980
|
+
duration,
|
|
9981
|
+
start,
|
|
9982
|
+
viteId,
|
|
9983
|
+
end: start + duration,
|
|
9984
|
+
});
|
|
9985
|
+
return result;
|
|
9964
9986
|
}
|
|
9965
9987
|
|
|
9966
9988
|
export { componentQrl };
|
|
@@ -10089,40 +10111,50 @@ const perfLazyWrapperPreamble = `${perfRuntime_default}
|
|
|
10089
10111
|
|
|
10090
10112
|
// [qwik-component-proxy] Render function wrapper
|
|
10091
10113
|
const __qwik_wrap__ = (fn, name, viteId) => {
|
|
10114
|
+
if (typeof fn !== 'function') return fn;
|
|
10092
10115
|
let renderCount = 0;
|
|
10093
|
-
|
|
10116
|
+
|
|
10117
|
+
function wrapped(...args) {
|
|
10094
10118
|
renderCount += 1;
|
|
10095
10119
|
const phase = __qwik_perf_is_server__() ? 'ssr' : 'csr';
|
|
10096
10120
|
const start = performance.now();
|
|
10097
10121
|
|
|
10098
|
-
|
|
10099
|
-
|
|
10100
|
-
|
|
10101
|
-
|
|
10102
|
-
|
|
10103
|
-
|
|
10104
|
-
|
|
10105
|
-
|
|
10106
|
-
|
|
10107
|
-
|
|
10108
|
-
|
|
10109
|
-
|
|
10110
|
-
|
|
10111
|
-
|
|
10112
|
-
|
|
10113
|
-
|
|
10114
|
-
|
|
10115
|
-
|
|
10116
|
-
|
|
10117
|
-
|
|
10118
|
-
|
|
10119
|
-
|
|
10120
|
-
viteId,
|
|
10121
|
-
renderCount,
|
|
10122
|
-
});
|
|
10123
|
-
throw err;
|
|
10124
|
-
}
|
|
10122
|
+
const result = fn.apply(this, args);
|
|
10123
|
+
const duration = performance.now() - start;
|
|
10124
|
+
__qwik_perf_commit__({
|
|
10125
|
+
component: name,
|
|
10126
|
+
phase,
|
|
10127
|
+
duration,
|
|
10128
|
+
start,
|
|
10129
|
+
end: start + duration,
|
|
10130
|
+
viteId,
|
|
10131
|
+
renderCount,
|
|
10132
|
+
});
|
|
10133
|
+
return result;
|
|
10134
|
+
}
|
|
10135
|
+
|
|
10136
|
+
// Preserve Qwik-compiler metadata attached to the original function.
|
|
10137
|
+
// (No try/catch per request; avoid touching special function props.)
|
|
10138
|
+
const skip = {
|
|
10139
|
+
length: true,
|
|
10140
|
+
name: true,
|
|
10141
|
+
arguments: true,
|
|
10142
|
+
caller: true,
|
|
10143
|
+
prototype: true,
|
|
10125
10144
|
};
|
|
10145
|
+
|
|
10146
|
+
const descriptors = Object.getOwnPropertyDescriptors(fn);
|
|
10147
|
+
for (const key of Object.keys(descriptors)) {
|
|
10148
|
+
if (skip[key]) continue;
|
|
10149
|
+
Object.defineProperty(wrapped, key, descriptors[key]);
|
|
10150
|
+
}
|
|
10151
|
+
|
|
10152
|
+
for (const sym of Object.getOwnPropertySymbols(fn)) {
|
|
10153
|
+
const desc = Object.getOwnPropertyDescriptor(fn, sym);
|
|
10154
|
+
if (desc) Object.defineProperty(wrapped, sym, desc);
|
|
10155
|
+
}
|
|
10156
|
+
|
|
10157
|
+
return wrapped;
|
|
10126
10158
|
};
|
|
10127
10159
|
`;
|
|
10128
10160
|
var perfLazyWrapperPreamble_default = perfLazyWrapperPreamble;
|
|
@@ -32,6 +32,21 @@ function getClientRpcFunctions() {
|
|
|
32
32
|
healthCheck: () => true
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
|
+
function toDevtoolsRoutes(routes) {
|
|
36
|
+
const children = routes?.children || [];
|
|
37
|
+
const directories = children.filter((child) => child.type === re.DIRECTORY);
|
|
38
|
+
return [
|
|
39
|
+
{
|
|
40
|
+
relativePath: "",
|
|
41
|
+
name: "index",
|
|
42
|
+
type: re.DIRECTORY,
|
|
43
|
+
path: "",
|
|
44
|
+
isSymbolicLink: false,
|
|
45
|
+
children: void 0
|
|
46
|
+
},
|
|
47
|
+
...directories
|
|
48
|
+
];
|
|
49
|
+
}
|
|
35
50
|
const QwikDevtools = component$(() => {
|
|
36
51
|
useStyles$(globalCss);
|
|
37
52
|
const state = useStore({
|
|
@@ -44,7 +59,6 @@ const QwikDevtools = component$(() => {
|
|
|
44
59
|
allDependencies: [],
|
|
45
60
|
isLoadingDependencies: false
|
|
46
61
|
});
|
|
47
|
-
const clientReady = useSignal(false);
|
|
48
62
|
useVisibleTask$(async () => {
|
|
49
63
|
const hot = await tryCreateHotContext(void 0, [
|
|
50
64
|
"/"
|
|
@@ -54,78 +68,43 @@ const QwikDevtools = component$(() => {
|
|
|
54
68
|
}
|
|
55
69
|
setViteClientContext(hot);
|
|
56
70
|
createClientRpc(getClientRpcFunctions());
|
|
57
|
-
clientReady.value = true;
|
|
58
|
-
});
|
|
59
|
-
useVisibleTask$(async ({ track }) => {
|
|
60
|
-
track(() => clientReady.value);
|
|
61
|
-
if (!clientReady.value) return;
|
|
62
|
-
const rpc = getViteClientRpc();
|
|
63
|
-
try {
|
|
64
|
-
const assets = await rpc.getAssetsFromPublicDir();
|
|
65
|
-
state.assets = assets;
|
|
66
|
-
} catch (error) {
|
|
67
|
-
log("Failed to load assets:", error);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
useVisibleTask$(async ({ track }) => {
|
|
71
|
-
track(() => clientReady.value);
|
|
72
|
-
if (!clientReady.value) return;
|
|
73
|
-
const rpc = getViteClientRpc();
|
|
74
|
-
try {
|
|
75
|
-
const components = await rpc.getComponents();
|
|
76
|
-
state.components = components;
|
|
77
|
-
} catch (error) {
|
|
78
|
-
log("Failed to load components:", error);
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
useVisibleTask$(async ({ track }) => {
|
|
82
|
-
track(() => clientReady.value);
|
|
83
|
-
if (!clientReady.value) return;
|
|
84
|
-
const rpc = getViteClientRpc();
|
|
85
|
-
try {
|
|
86
|
-
const routes = await rpc.getRoutes();
|
|
87
|
-
const children = routes?.children || [];
|
|
88
|
-
const directories = children.filter((child) => child.type === "directory");
|
|
89
|
-
const values = [
|
|
90
|
-
{
|
|
91
|
-
relativePath: "",
|
|
92
|
-
name: "index",
|
|
93
|
-
type: re.DIRECTORY,
|
|
94
|
-
path: "",
|
|
95
|
-
isSymbolicLink: false,
|
|
96
|
-
children: void 0
|
|
97
|
-
},
|
|
98
|
-
...directories
|
|
99
|
-
];
|
|
100
|
-
state.routes = noSerialize(values);
|
|
101
|
-
} catch (error) {
|
|
102
|
-
log("Failed to load routes:", error);
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
useVisibleTask$(async ({ track }) => {
|
|
106
|
-
track(() => clientReady.value);
|
|
107
|
-
if (!clientReady.value) return;
|
|
108
|
-
const rpc = getViteClientRpc();
|
|
109
|
-
try {
|
|
110
|
-
const qwikPackages = await rpc.getQwikPackages();
|
|
111
|
-
state.npmPackages = qwikPackages;
|
|
112
|
-
} catch (error) {
|
|
113
|
-
log("Failed to load Qwik packages:", error);
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
useVisibleTask$(async ({ track }) => {
|
|
117
|
-
track(() => clientReady.value);
|
|
118
|
-
if (!clientReady.value) return;
|
|
119
71
|
const rpc = getViteClientRpc();
|
|
72
|
+
const group1 = Promise.allSettled([
|
|
73
|
+
rpc.getAssetsFromPublicDir(),
|
|
74
|
+
rpc.getComponents(),
|
|
75
|
+
rpc.getRoutes(),
|
|
76
|
+
rpc.getQwikPackages()
|
|
77
|
+
]);
|
|
120
78
|
state.isLoadingDependencies = true;
|
|
121
|
-
|
|
122
|
-
const allDeps = await rpc.getAllDependencies();
|
|
79
|
+
const depsPromise = rpc.getAllDependencies().then((allDeps) => {
|
|
123
80
|
state.allDependencies = allDeps;
|
|
124
|
-
}
|
|
81
|
+
}).catch((error) => {
|
|
125
82
|
log("Failed to load all dependencies:", error);
|
|
126
|
-
}
|
|
83
|
+
}).finally(() => {
|
|
127
84
|
state.isLoadingDependencies = false;
|
|
85
|
+
});
|
|
86
|
+
const [assetsRes, componentsRes, routesRes, packagesRes] = await group1;
|
|
87
|
+
if (assetsRes.status === "fulfilled") {
|
|
88
|
+
state.assets = assetsRes.value;
|
|
89
|
+
} else {
|
|
90
|
+
log("Failed to load assets:", assetsRes.reason);
|
|
91
|
+
}
|
|
92
|
+
if (componentsRes.status === "fulfilled") {
|
|
93
|
+
state.components = componentsRes.value;
|
|
94
|
+
} else {
|
|
95
|
+
log("Failed to load components:", componentsRes.reason);
|
|
96
|
+
}
|
|
97
|
+
if (routesRes.status === "fulfilled") {
|
|
98
|
+
state.routes = noSerialize(toDevtoolsRoutes(routesRes.value));
|
|
99
|
+
} else {
|
|
100
|
+
log("Failed to load routes:", routesRes.reason);
|
|
101
|
+
}
|
|
102
|
+
if (packagesRes.status === "fulfilled") {
|
|
103
|
+
state.npmPackages = packagesRes.value;
|
|
104
|
+
} else {
|
|
105
|
+
log("Failed to load Qwik packages:", packagesRes.reason);
|
|
128
106
|
}
|
|
107
|
+
await depsPromise;
|
|
129
108
|
});
|
|
130
109
|
return /* @__PURE__ */ jsxs(Fragment, {
|
|
131
110
|
children: [
|
|
@@ -2,11 +2,17 @@ import { jsxs, jsx } from "@qwik.dev/core/jsx-runtime";
|
|
|
2
2
|
import { component$, $ } from "@qwik.dev/core";
|
|
3
3
|
import { PackageIcon } from "../PackageIcon/PackageIcon.qwik.mjs";
|
|
4
4
|
const DependencyCard = component$(({ pkg }) => {
|
|
5
|
+
const author = pkg.author;
|
|
6
|
+
const authorName = typeof author === "string" ? author.trim() : (author?.name || "").trim();
|
|
7
|
+
const authorDisplayName = authorName || "Unknown";
|
|
8
|
+
const authorInitials = authorDisplayName.split(/\s+/).filter(Boolean).map((n) => n.charAt(0)).join("").substring(0, 2).toUpperCase() || "??";
|
|
5
9
|
const handleAuthorClick = $(() => {
|
|
6
|
-
if (
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
if (typeof author !== "string") {
|
|
11
|
+
if (author?.url) {
|
|
12
|
+
window.open(author.url, "_blank");
|
|
13
|
+
} else if (author?.email) {
|
|
14
|
+
window.open(`mailto:${author.email}`, "_blank");
|
|
15
|
+
}
|
|
10
16
|
}
|
|
11
17
|
});
|
|
12
18
|
const handlePackageClick = $(() => {
|
|
@@ -87,23 +93,23 @@ const DependencyCard = component$(({ pkg }) => {
|
|
|
87
93
|
/* @__PURE__ */ jsxs("div", {
|
|
88
94
|
class: "flex items-center justify-between gap-3",
|
|
89
95
|
children: [
|
|
90
|
-
|
|
96
|
+
author ? /* @__PURE__ */ jsxs("div", {
|
|
91
97
|
class: "flex min-w-0 flex-1 items-center gap-2",
|
|
92
98
|
children: [
|
|
93
99
|
/* @__PURE__ */ jsx("div", {
|
|
94
100
|
class: "from-accent/20 to-accent/40 border-accent/30 flex h-7 w-7 flex-shrink-0 cursor-pointer items-center justify-center rounded-full border bg-gradient-to-br transition-transform hover:scale-110",
|
|
95
101
|
onClick$: handleAuthorClick,
|
|
96
|
-
title: `Contact ${
|
|
102
|
+
title: `Contact ${authorDisplayName}`,
|
|
97
103
|
children: /* @__PURE__ */ jsx("span", {
|
|
98
104
|
class: "text-accent text-[10px] font-semibold",
|
|
99
|
-
children:
|
|
105
|
+
children: authorInitials
|
|
100
106
|
})
|
|
101
107
|
}),
|
|
102
108
|
/* @__PURE__ */ jsx("span", {
|
|
103
109
|
class: "text-muted-foreground truncate text-xs",
|
|
104
110
|
children: /* @__PURE__ */ jsx("span", {
|
|
105
111
|
class: "text-foreground font-medium",
|
|
106
|
-
children:
|
|
112
|
+
children: authorDisplayName
|
|
107
113
|
})
|
|
108
114
|
})
|
|
109
115
|
]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const globalCss = '/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n@layer properties {\n @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {\n *, :before, :after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-divide-y-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n }\n }\n}\n\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n --color-red-400: oklch(70.4% .191 22.216);\n --color-amber-400: oklch(82.8% .189 84.429);\n --color-green-400: oklch(79.2% .209 151.711);\n --color-emerald-100: oklch(95% .052 163.051);\n --color-emerald-300: oklch(84.5% .143 164.978);\n --color-emerald-700: oklch(50.8% .118 165.612);\n --color-emerald-900: oklch(37.8% .077 168.94);\n --color-blue-400: oklch(70.7% .165 254.624);\n --color-violet-300: oklch(81.1% .111 293.571);\n --color-violet-400: oklch(70.2% .183 293.541);\n --color-purple-400: oklch(71.4% .203 305.504);\n --color-pink-400: oklch(71.8% .202 349.761);\n --color-black: #000;\n --color-white: #fff;\n --spacing: .25rem;\n --text-xs: .75rem;\n --text-xs--line-height: calc(1 / .75);\n --text-sm: .875rem;\n --text-sm--line-height: calc(1.25 / .875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 1.875rem;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --leading-relaxed: 1.625;\n --radius-md: .375rem;\n --radius-lg: .5rem;\n --radius-xl: .75rem;\n --drop-shadow-md: 0 3px 3px #0000001f;\n --ease-out: cubic-bezier(0, 0, .2, 1);\n --ease-in-out: cubic-bezier(.4, 0, .2, 1);\n --animate-spin: spin 1s linear infinite;\n --blur-md: 12px;\n --blur-lg: 16px;\n --default-transition-duration: .15s;\n --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --color-background: #fff;\n --color-foreground: #000;\n --color-primary: #10b981;\n --color-primary-active: #047857;\n --color-muted-foreground: #6b7280;\n --color-accent: #10b981;\n --color-border: #e5e7eb;\n --color-card: #f2f2f2;\n --color-card-item-bg: #00000005;\n --color-card-item-hover-bg: #00000008;\n }\n}\n\n@layer base {\n *, :after, :before, ::backdrop {\n box-sizing: border-box;\n border: 0 solid;\n margin: 0;\n padding: 0;\n }\n\n ::file-selector-button {\n box-sizing: border-box;\n border: 0 solid;\n margin: 0;\n padding: 0;\n }\n\n html, :host {\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n line-height: 1.5;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n -webkit-text-decoration: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n\n b, strong {\n font-weight: bolder;\n }\n\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n\n small {\n font-size: 80%;\n }\n\n sub, sup {\n vertical-align: baseline;\n font-size: 75%;\n line-height: 0;\n position: relative;\n }\n\n sub {\n bottom: -.25em;\n }\n\n sup {\n top: -.5em;\n }\n\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n\n :-moz-focusring {\n outline: auto;\n }\n\n progress {\n vertical-align: baseline;\n }\n\n summary {\n display: list-item;\n }\n\n ol, ul, menu {\n list-style: none;\n }\n\n img, svg, video, canvas, audio, iframe, embed, object {\n vertical-align: middle;\n display: block;\n }\n\n img, video {\n max-width: 100%;\n height: auto;\n }\n\n button, input, select, optgroup, textarea {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n opacity: 1;\n background-color: #0000;\n border-radius: 0;\n }\n\n ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n opacity: 1;\n background-color: #0000;\n border-radius: 0;\n }\n\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n\n ::placeholder {\n opacity: 1;\n }\n\n @supports (not ((-webkit-appearance: -apple-pay-button))) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentColor;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n ::placeholder {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n\n textarea {\n resize: vertical;\n }\n\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n\n ::-webkit-datetime-edit {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-year-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-month-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-day-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-hour-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-minute-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-second-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-millisecond-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n\n :-moz-ui-invalid {\n box-shadow: none;\n }\n\n button, input:where([type="button"], [type="reset"], [type="submit"]) {\n appearance: button;\n }\n\n ::file-selector-button {\n appearance: button;\n }\n\n ::-webkit-inner-spin-button {\n height: auto;\n }\n\n ::-webkit-outer-spin-button {\n height: auto;\n }\n\n [hidden]:where(:not([hidden="until-found"])) {\n display: none !important;\n }\n}\n\n@layer components;\n\n@layer utilities {\n .qwik-devtools .pointer-events-none {\n pointer-events: none;\n }\n\n .qwik-devtools .visible {\n visibility: visible;\n }\n\n .qwik-devtools .absolute {\n position: absolute;\n }\n\n .qwik-devtools .fixed {\n position: fixed;\n }\n\n .qwik-devtools .relative {\n position: relative;\n }\n\n .qwik-devtools .static {\n position: static;\n }\n\n .qwik-devtools .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n\n .qwik-devtools .right-0 {\n right: calc(var(--spacing) * 0);\n }\n\n .qwik-devtools .right-6 {\n right: calc(var(--spacing) * 6);\n }\n\n .qwik-devtools .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n\n .qwik-devtools .bottom-6 {\n bottom: calc(var(--spacing) * 6);\n }\n\n .qwik-devtools .z-\\[9999\\] {\n z-index: 9999;\n }\n\n .qwik-devtools .col-start-1 {\n grid-column-start: 1;\n }\n\n .qwik-devtools .row-start-1 {\n grid-row-start: 1;\n }\n\n .qwik-devtools .container {\n width: 100%;\n }\n\n @media (min-width: 40rem) {\n .qwik-devtools .container {\n max-width: 40rem;\n }\n }\n\n @media (min-width: 48rem) {\n .qwik-devtools .container {\n max-width: 48rem;\n }\n }\n\n @media (min-width: 64rem) {\n .qwik-devtools .container {\n max-width: 64rem;\n }\n }\n\n @media (min-width: 80rem) {\n .qwik-devtools .container {\n max-width: 80rem;\n }\n }\n\n @media (min-width: 96rem) {\n .qwik-devtools .container {\n max-width: 96rem;\n }\n }\n\n .qwik-devtools .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n\n .qwik-devtools .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .mt-5 {\n margin-top: calc(var(--spacing) * 5);\n }\n\n .qwik-devtools .mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n\n .qwik-devtools .mt-auto {\n margin-top: auto;\n }\n\n .qwik-devtools .mr-2 {\n margin-right: calc(var(--spacing) * 2);\n }\n\n .qwik-devtools .mb-1\\.5 {\n margin-bottom: calc(var(--spacing) * 1.5);\n }\n\n .qwik-devtools .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n\n .qwik-devtools .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n\n .qwik-devtools .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n\n .qwik-devtools .line-clamp-2 {\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n }\n\n .qwik-devtools .flex {\n display: flex;\n }\n\n .qwik-devtools .grid {\n display: grid;\n }\n\n .qwik-devtools .hidden {\n display: none;\n }\n\n .qwik-devtools .inline-flex {\n display: inline-flex;\n }\n\n .qwik-devtools .aspect-square {\n aspect-ratio: 1;\n }\n\n .qwik-devtools .h-3 {\n height: calc(var(--spacing) * 3);\n }\n\n .qwik-devtools .h-4 {\n height: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .h-5 {\n height: calc(var(--spacing) * 5);\n }\n\n .qwik-devtools .h-6 {\n height: calc(var(--spacing) * 6);\n }\n\n .qwik-devtools .h-7 {\n height: calc(var(--spacing) * 7);\n }\n\n .qwik-devtools .h-8 {\n height: calc(var(--spacing) * 8);\n }\n\n .qwik-devtools .h-9 {\n height: calc(var(--spacing) * 9);\n }\n\n .qwik-devtools .h-10 {\n height: calc(var(--spacing) * 10);\n }\n\n .qwik-devtools .h-12 {\n height: calc(var(--spacing) * 12);\n }\n\n .qwik-devtools .h-\\[60vh\\] {\n height: 60vh;\n }\n\n .qwik-devtools .h-\\[calc\\(100vh-3rem\\)\\] {\n height: calc(100vh - 3rem);\n }\n\n .qwik-devtools .h-full {\n height: 100%;\n }\n\n .qwik-devtools .min-h-0 {\n min-height: calc(var(--spacing) * 0);\n }\n\n .qwik-devtools .min-h-\\[2\\.5rem\\] {\n min-height: 2.5rem;\n }\n\n .qwik-devtools .w-1\\/2 {\n width: 50%;\n }\n\n .qwik-devtools .w-3 {\n width: calc(var(--spacing) * 3);\n }\n\n .qwik-devtools .w-4 {\n width: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .w-5 {\n width: calc(var(--spacing) * 5);\n }\n\n .qwik-devtools .w-6 {\n width: calc(var(--spacing) * 6);\n }\n\n .qwik-devtools .w-7 {\n width: calc(var(--spacing) * 7);\n }\n\n .qwik-devtools .w-8 {\n width: calc(var(--spacing) * 8);\n }\n\n .qwik-devtools .w-9 {\n width: calc(var(--spacing) * 9);\n }\n\n .qwik-devtools .w-10 {\n width: calc(var(--spacing) * 10);\n }\n\n .qwik-devtools .w-12 {\n width: calc(var(--spacing) * 12);\n }\n\n .qwik-devtools .w-\\[420px\\] {\n width: 420px;\n }\n\n .qwik-devtools .w-\\[calc\\(100vw-3rem\\)\\] {\n width: calc(100vw - 3rem);\n }\n\n .qwik-devtools .w-full {\n width: 100%;\n }\n\n .qwik-devtools .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n\n .qwik-devtools .min-w-\\[320px\\] {\n min-width: 320px;\n }\n\n .qwik-devtools .flex-1 {\n flex: 1;\n }\n\n .qwik-devtools .flex-shrink-0, .qwik-devtools .shrink-0 {\n flex-shrink: 0;\n }\n\n .qwik-devtools .origin-center {\n transform-origin: center;\n }\n\n .qwik-devtools .translate-y-0 {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .qwik-devtools .-rotate-90 {\n rotate: -90deg;\n }\n\n .qwik-devtools .rotate-90 {\n rotate: 90deg;\n }\n\n .qwik-devtools .rotate-180 {\n rotate: 180deg;\n }\n\n .qwik-devtools .transform {\n transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );\n }\n\n .qwik-devtools .animate-spin {\n animation: var(--animate-spin);\n }\n\n .qwik-devtools .cursor-grab {\n cursor: grab;\n }\n\n .qwik-devtools .cursor-grabbing {\n cursor: grabbing;\n }\n\n .qwik-devtools .cursor-not-allowed {\n cursor: not-allowed;\n }\n\n .qwik-devtools .cursor-pointer {\n cursor: pointer;\n }\n\n .qwik-devtools .resize-none {\n resize: none;\n }\n\n .qwik-devtools .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n\n .qwik-devtools .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n\n .qwik-devtools .grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .qwik-devtools .grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n\n .qwik-devtools .flex-col {\n flex-direction: column;\n }\n\n .qwik-devtools .place-items-center {\n place-items: center;\n }\n\n .qwik-devtools .items-center {\n align-items: center;\n }\n\n .qwik-devtools .items-start {\n align-items: flex-start;\n }\n\n .qwik-devtools .justify-between {\n justify-content: space-between;\n }\n\n .qwik-devtools .justify-center {\n justify-content: center;\n }\n\n .qwik-devtools .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n\n .qwik-devtools .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n\n .qwik-devtools .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n\n .qwik-devtools .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n\n .qwik-devtools .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .gap-5 {\n gap: calc(var(--spacing) * 5);\n }\n\n :where(.qwik-devtools .space-y-2 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.qwik-devtools .space-y-3 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.qwik-devtools .space-y-4 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.qwik-devtools .space-y-6 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n .qwik-devtools .gap-x-6 {\n column-gap: calc(var(--spacing) * 6);\n }\n\n :where(.qwik-devtools .space-x-2 > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n\n :where(.qwik-devtools .space-x-4 > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .qwik-devtools .gap-y-3 {\n row-gap: calc(var(--spacing) * 3);\n }\n\n :where(.qwik-devtools .divide-y > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n\n :where(.qwik-devtools .divide-border > :not(:last-child)) {\n border-color: var(--color-border);\n }\n\n .qwik-devtools .truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n .qwik-devtools .overflow-auto {\n overflow: auto;\n }\n\n .qwik-devtools .overflow-hidden {\n overflow: hidden;\n }\n\n .qwik-devtools .overflow-x-auto {\n overflow-x: auto;\n }\n\n .qwik-devtools .overflow-y-auto {\n overflow-y: auto;\n }\n\n .qwik-devtools .rounded {\n border-radius: .25rem;\n }\n\n .qwik-devtools .rounded-full {\n border-radius: 3.40282e38px;\n }\n\n .qwik-devtools .rounded-lg {\n border-radius: var(--radius-lg);\n }\n\n .qwik-devtools .rounded-md {\n border-radius: var(--radius-md);\n }\n\n .qwik-devtools .rounded-xl {\n border-radius: var(--radius-xl);\n }\n\n .qwik-devtools .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n\n .qwik-devtools .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n\n .qwik-devtools .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n\n .qwik-devtools .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n\n .qwik-devtools .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n\n .qwik-devtools .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n\n .qwik-devtools .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n\n .qwik-devtools .border-accent\\/30 {\n border-color: #10b9814d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .border-accent\\/30 {\n border-color: color-mix(in oklab, var(--color-accent) 30%, transparent);\n }\n }\n\n .qwik-devtools .border-accent\\/50 {\n border-color: #10b98180;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .border-accent\\/50 {\n border-color: color-mix(in oklab, var(--color-accent) 50%, transparent);\n }\n }\n\n .qwik-devtools .border-border {\n border-color: var(--color-border);\n }\n\n .qwik-devtools .border-border\\/50 {\n border-color: #e5e7eb80;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .border-border\\/50 {\n border-color: color-mix(in oklab, var(--color-border) 50%, transparent);\n }\n }\n\n .qwik-devtools .border-current {\n border-color: currentColor;\n }\n\n .qwik-devtools .border-emerald-300 {\n border-color: var(--color-emerald-300);\n }\n\n .qwik-devtools .border-primary\\/20 {\n border-color: #10b98133;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .border-primary\\/20 {\n border-color: color-mix(in oklab, var(--color-primary) 20%, transparent);\n }\n }\n\n .qwik-devtools .border-t-foreground\\/40 {\n border-top-color: #0006;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .border-t-foreground\\/40 {\n border-top-color: color-mix(in oklab, var(--color-foreground) 40%, transparent);\n }\n }\n\n .qwik-devtools .border-t-transparent {\n border-top-color: #0000;\n }\n\n .qwik-devtools .border-b-transparent {\n border-bottom-color: #0000;\n }\n\n .qwik-devtools .bg-accent {\n background-color: var(--color-accent);\n }\n\n .qwik-devtools .bg-background {\n background-color: var(--color-background);\n }\n\n .qwik-devtools .bg-background\\/95 {\n background-color: #fffffff2;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .bg-background\\/95 {\n background-color: color-mix(in oklab, var(--color-background) 95%, transparent);\n }\n }\n\n .qwik-devtools .bg-black\\/20 {\n background-color: #0003;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .bg-black\\/20 {\n background-color: color-mix(in oklab, var(--color-black) 20%, transparent);\n }\n }\n\n .qwik-devtools .bg-card {\n background-color: var(--color-card);\n }\n\n .qwik-devtools .bg-card-item-bg {\n background-color: var(--color-card-item-bg);\n }\n\n .qwik-devtools .bg-emerald-100 {\n background-color: var(--color-emerald-100);\n }\n\n .qwik-devtools .bg-foreground\\/5 {\n background-color: #0000000d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .bg-foreground\\/5 {\n background-color: color-mix(in oklab, var(--color-foreground) 5%, transparent);\n }\n }\n\n .qwik-devtools .bg-primary\\/5 {\n background-color: #10b9810d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .bg-primary\\/5 {\n background-color: color-mix(in oklab, var(--color-primary) 5%, transparent);\n }\n }\n\n .qwik-devtools .bg-primary\\/10 {\n background-color: #10b9811a;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .bg-primary\\/10 {\n background-color: color-mix(in oklab, var(--color-primary) 10%, transparent);\n }\n }\n\n .qwik-devtools .bg-transparent {\n background-color: #0000;\n }\n\n .qwik-devtools .bg-gradient-to-br {\n --tw-gradient-position: to bottom right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n\n .qwik-devtools .from-accent\\/20 {\n --tw-gradient-from: #10b98133;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .from-accent\\/20 {\n --tw-gradient-from: color-mix(in oklab, var(--color-accent) 20%, transparent);\n }\n }\n\n .qwik-devtools .from-accent\\/20 {\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n\n .qwik-devtools .from-primary\\/0 {\n --tw-gradient-from: #0000;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .from-primary\\/0 {\n --tw-gradient-from: color-mix(in oklab, var(--color-primary) 0%, transparent);\n }\n }\n\n .qwik-devtools .from-primary\\/0 {\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n\n .qwik-devtools .from-primary\\/10 {\n --tw-gradient-from: #10b9811a;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .from-primary\\/10 {\n --tw-gradient-from: color-mix(in oklab, var(--color-primary) 10%, transparent);\n }\n }\n\n .qwik-devtools .from-primary\\/10 {\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n\n .qwik-devtools .via-primary\\/0 {\n --tw-gradient-via: #0000;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .via-primary\\/0 {\n --tw-gradient-via: color-mix(in oklab, var(--color-primary) 0%, transparent);\n }\n }\n\n .qwik-devtools .via-primary\\/0 {\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n\n .qwik-devtools .via-primary\\/20 {\n --tw-gradient-via: #10b98133;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .via-primary\\/20 {\n --tw-gradient-via: color-mix(in oklab, var(--color-primary) 20%, transparent);\n }\n }\n\n .qwik-devtools .via-primary\\/20 {\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n\n .qwik-devtools .to-accent\\/40 {\n --tw-gradient-to: #10b98166;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .to-accent\\/40 {\n --tw-gradient-to: color-mix(in oklab, var(--color-accent) 40%, transparent);\n }\n }\n\n .qwik-devtools .to-accent\\/40 {\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n\n .qwik-devtools .to-primary\\/5 {\n --tw-gradient-to: #10b9810d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .to-primary\\/5 {\n --tw-gradient-to: color-mix(in oklab, var(--color-primary) 5%, transparent);\n }\n }\n\n .qwik-devtools .to-primary\\/5 {\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n\n .qwik-devtools .to-primary\\/30 {\n --tw-gradient-to: #10b9814d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .to-primary\\/30 {\n --tw-gradient-to: color-mix(in oklab, var(--color-primary) 30%, transparent);\n }\n }\n\n .qwik-devtools .to-primary\\/30 {\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n\n .qwik-devtools .object-cover {\n object-fit: cover;\n }\n\n .qwik-devtools .p-0\\.5 {\n padding: calc(var(--spacing) * .5);\n }\n\n .qwik-devtools .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n\n .qwik-devtools .p-1\\.5 {\n padding: calc(var(--spacing) * 1.5);\n }\n\n .qwik-devtools .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n\n .qwik-devtools .p-2\\.5 {\n padding: calc(var(--spacing) * 2.5);\n }\n\n .qwik-devtools .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n\n .qwik-devtools .p-3\\.5 {\n padding: calc(var(--spacing) * 3.5);\n }\n\n .qwik-devtools .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .p-5 {\n padding: calc(var(--spacing) * 5);\n }\n\n .qwik-devtools .p-8 {\n padding: calc(var(--spacing) * 8);\n }\n\n .qwik-devtools .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n\n .qwik-devtools .px-2\\.5 {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n\n .qwik-devtools .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n\n .qwik-devtools .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .py-0\\.5 {\n padding-block: calc(var(--spacing) * .5);\n }\n\n .qwik-devtools .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n\n .qwik-devtools .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n\n .qwik-devtools .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n\n .qwik-devtools .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n\n .qwik-devtools .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .py-8 {\n padding-block: calc(var(--spacing) * 8);\n }\n\n .qwik-devtools .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .pb-6 {\n padding-bottom: calc(var(--spacing) * 6);\n }\n\n .qwik-devtools .text-center {\n text-align: center;\n }\n\n .qwik-devtools .text-left {\n text-align: left;\n }\n\n .qwik-devtools .text-right {\n text-align: right;\n }\n\n .qwik-devtools .font-mono {\n font-family: var(--font-mono);\n }\n\n .qwik-devtools .font-sans {\n font-family: var(--font-sans);\n }\n\n .qwik-devtools .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n\n .qwik-devtools .text-3xl {\n font-size: var(--text-3xl);\n line-height: var(--tw-leading, var(--text-3xl--line-height));\n }\n\n .qwik-devtools .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n\n .qwik-devtools .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n\n .qwik-devtools .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n\n .qwik-devtools .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n\n .qwik-devtools .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n\n .qwik-devtools .text-\\[10px\\] {\n font-size: 10px;\n }\n\n .qwik-devtools .leading-relaxed {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n\n .qwik-devtools .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n\n .qwik-devtools .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n\n .qwik-devtools .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n\n .qwik-devtools .break-all {\n word-break: break-all;\n }\n\n .qwik-devtools .whitespace-nowrap {\n white-space: nowrap;\n }\n\n .qwik-devtools .text-accent {\n color: var(--color-accent);\n }\n\n .qwik-devtools .text-amber-400 {\n color: var(--color-amber-400);\n }\n\n .qwik-devtools .text-blue-400 {\n color: var(--color-blue-400);\n }\n\n .qwik-devtools .text-emerald-700 {\n color: var(--color-emerald-700);\n }\n\n .qwik-devtools .text-foreground {\n color: var(--color-foreground);\n }\n\n .qwik-devtools .text-foreground\\/70 {\n color: #000000b3;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .text-foreground\\/70 {\n color: color-mix(in oklab, var(--color-foreground) 70%, transparent);\n }\n }\n\n .qwik-devtools .text-green-400 {\n color: var(--color-green-400);\n }\n\n .qwik-devtools .text-muted-foreground {\n color: var(--color-muted-foreground);\n }\n\n .qwik-devtools .text-pink-400 {\n color: var(--color-pink-400);\n }\n\n .qwik-devtools .text-primary {\n color: var(--color-primary);\n }\n\n .qwik-devtools .text-primary\\/50 {\n color: #10b98180;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .text-primary\\/50 {\n color: color-mix(in oklab, var(--color-primary) 50%, transparent);\n }\n }\n\n .qwik-devtools .text-purple-400 {\n color: var(--color-purple-400);\n }\n\n .qwik-devtools .text-red-400 {\n color: var(--color-red-400);\n }\n\n .qwik-devtools .text-violet-400 {\n color: var(--color-violet-400);\n }\n\n .qwik-devtools .text-white {\n color: var(--color-white);\n }\n\n .qwik-devtools .opacity-0 {\n opacity: 0;\n }\n\n .qwik-devtools .opacity-90 {\n opacity: .9;\n }\n\n .qwik-devtools .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .qwik-devtools .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, #0000001a), 0 4px 6px -4px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .qwik-devtools .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, #0000001a), 0 2px 4px -2px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .qwik-devtools .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .qwik-devtools .ring-2 {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .qwik-devtools .shadow-accent\\/35 {\n --tw-shadow-color: #10b98159;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .shadow-accent\\/35 {\n --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-accent) 35%, transparent) var(--tw-shadow-alpha), transparent);\n }\n }\n\n .qwik-devtools .ring-primary-active {\n --tw-ring-color: var(--color-primary-active);\n }\n\n .qwik-devtools .drop-shadow-md {\n --tw-drop-shadow-size: drop-shadow(0 3px 3px var(--tw-drop-shadow-color, #0000001f));\n --tw-drop-shadow: drop-shadow(var(--drop-shadow-md));\n 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, );\n }\n\n .qwik-devtools .filter {\n 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, );\n }\n\n .qwik-devtools .backdrop-blur-lg {\n --tw-backdrop-blur: blur(var(--blur-lg));\n -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );\n backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );\n }\n\n .qwik-devtools .backdrop-blur-md {\n --tw-backdrop-blur: blur(var(--blur-md));\n -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );\n backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );\n }\n\n .qwik-devtools .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .qwik-devtools .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .qwik-devtools .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .qwik-devtools .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .qwik-devtools .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .qwik-devtools .duration-200 {\n --tw-duration: .2s;\n transition-duration: .2s;\n }\n\n .qwik-devtools .duration-300 {\n --tw-duration: .3s;\n transition-duration: .3s;\n }\n\n .qwik-devtools .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n\n .qwik-devtools .ease-out {\n --tw-ease: var(--ease-out);\n transition-timing-function: var(--ease-out);\n }\n\n .qwik-devtools .select-none {\n -webkit-user-select: none;\n user-select: none;\n }\n\n @media (hover: hover) {\n .qwik-devtools .group-hover\\:scale-110:is(:where(.group):hover *) {\n --tw-scale-x: 110%;\n --tw-scale-y: 110%;\n --tw-scale-z: 110%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n\n .qwik-devtools .group-hover\\:opacity-100:is(:where(.group):hover *) {\n opacity: 1;\n }\n\n .qwik-devtools .group-hover\\:shadow-primary\\/20:is(:where(.group):hover *) {\n --tw-shadow-color: #10b98133;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .group-hover\\:shadow-primary\\/20:is(:where(.group):hover *) {\n --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-primary) 20%, transparent) var(--tw-shadow-alpha), transparent);\n }\n }\n }\n\n .qwik-devtools .group-active\\:scale-75:is(:where(.group):active *) {\n --tw-scale-x: 75%;\n --tw-scale-y: 75%;\n --tw-scale-z: 75%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n\n @media (hover: hover) {\n .qwik-devtools .hover\\:-translate-y-0\\.5:hover {\n --tw-translate-y: calc(var(--spacing) * -.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .qwik-devtools .hover\\:scale-110:hover {\n --tw-scale-x: 110%;\n --tw-scale-y: 110%;\n --tw-scale-z: 110%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n\n .qwik-devtools .hover\\:rotate-3:hover {\n rotate: 3deg;\n }\n\n .qwik-devtools .hover\\:border-primary\\/30:hover {\n border-color: #10b9814d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .hover\\:border-primary\\/30:hover {\n border-color: color-mix(in oklab, var(--color-primary) 30%, transparent);\n }\n }\n\n .qwik-devtools .hover\\:bg-card-item-hover-bg:hover {\n background-color: var(--color-card-item-hover-bg);\n }\n\n .qwik-devtools .hover\\:bg-foreground\\/5:hover {\n background-color: #0000000d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .hover\\:bg-foreground\\/5:hover {\n background-color: color-mix(in oklab, var(--color-foreground) 5%, transparent);\n }\n }\n\n .qwik-devtools .hover\\:bg-primary\\/10:hover {\n background-color: #10b9811a;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .hover\\:bg-primary\\/10:hover {\n background-color: color-mix(in oklab, var(--color-primary) 10%, transparent);\n }\n }\n\n .qwik-devtools .hover\\:bg-primary\\/20:hover {\n background-color: #10b98133;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .hover\\:bg-primary\\/20:hover {\n background-color: color-mix(in oklab, var(--color-primary) 20%, transparent);\n }\n }\n\n .qwik-devtools .hover\\:text-foreground:hover {\n color: var(--color-foreground);\n }\n\n .qwik-devtools .hover\\:text-primary:hover {\n color: var(--color-primary);\n }\n\n .qwik-devtools .hover\\:underline:hover {\n text-decoration-line: underline;\n }\n\n .qwik-devtools .hover\\:opacity-60:hover {\n opacity: .6;\n }\n\n .qwik-devtools .hover\\:opacity-90:hover {\n opacity: .9;\n }\n\n .qwik-devtools .hover\\:shadow-lg:hover {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, #0000001a), 0 4px 6px -4px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .qwik-devtools .hover\\:shadow-primary\\/5:hover {\n --tw-shadow-color: #10b9810d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .hover\\:shadow-primary\\/5:hover {\n --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-primary) 5%, transparent) var(--tw-shadow-alpha), transparent);\n }\n }\n }\n\n .qwik-devtools .focus\\:ring-primary-active:focus {\n --tw-ring-color: var(--color-primary-active);\n }\n\n .qwik-devtools .focus\\:ring-offset-0:focus {\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n\n @media (min-width: 40rem) {\n .qwik-devtools .sm\\:grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n\n .qwik-devtools .sm\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n\n @media (min-width: 48rem) {\n .qwik-devtools .md\\:mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n\n .qwik-devtools .md\\:grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n\n .qwik-devtools .md\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .qwik-devtools .md\\:grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n\n .qwik-devtools .md\\:px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n }\n\n @media (min-width: 64rem) {\n .qwik-devtools .lg\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .qwik-devtools .lg\\:grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n\n @media (prefers-color-scheme: dark) {\n .qwik-devtools .dark\\:border-\\[\\#374151\\] {\n border-color: #374151;\n }\n\n .qwik-devtools .dark\\:border-emerald-700\\/40 {\n border-color: #00795666;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .dark\\:border-emerald-700\\/40 {\n border-color: color-mix(in oklab, var(--color-emerald-700) 40%, transparent);\n }\n }\n\n .qwik-devtools .dark\\:bg-\\[\\#1F2937\\] {\n background-color: #1f2937;\n }\n\n .qwik-devtools .dark\\:bg-emerald-900\\/30 {\n background-color: #004e3b4d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .dark\\:bg-emerald-900\\/30 {\n background-color: color-mix(in oklab, var(--color-emerald-900) 30%, transparent);\n }\n }\n\n .qwik-devtools .dark\\:text-emerald-300 {\n color: var(--color-emerald-300);\n }\n\n .qwik-devtools .dark\\:text-violet-300 {\n color: var(--color-violet-300);\n }\n }\n\n .custom-scrollbar {\n scrollbar-width: thin;\n scrollbar-color: var(--color-scrollbar-thumb) transparent;\n }\n\n .custom-scrollbar::-webkit-scrollbar {\n width: 6px;\n }\n\n .custom-scrollbar::-webkit-scrollbar-track {\n background: none;\n }\n\n .custom-scrollbar::-webkit-scrollbar-thumb {\n background-color: var(--color-scrollbar-thumb);\n border-radius: 20px;\n }\n\n .custom-scrollbar::-webkit-scrollbar-thumb:hover {\n background-color: var(--color-scrollbar-thumb-hover);\n }\n}\n\n:root {\n --theme-name: "light";\n --color-background: #fff;\n --color-foreground: #000;\n --color-primary: #10b981;\n --color-primary-hover: #f2f2f2;\n --color-primary-active: #047857;\n --color-secondary: #6b7280;\n --color-border: #e5e7eb;\n --color-card: #f2f2f2;\n --color-card-item-bg: #00000005;\n --color-card-item-hover-bg: #00000008;\n --color-scrollbar-thumb: #d1d5db;\n --color-scrollbar-thumb-hover: #a1a1aa;\n --color-muted: #9ca3af;\n --color-muted-foreground: #6b7280;\n --color-accent: #10b981;\n --color-input: var(--color-border);\n --color-ring: var(--color-primary);\n}\n\n:root[data-theme="dark"] {\n --theme-name: "dark";\n --color-background: #18181b;\n --color-foreground: #fff;\n --color-primary: #34d399;\n --color-primary-hover: #10b981;\n --color-primary-active: #059669;\n --color-secondary: #9ca3af;\n --color-border: #374151;\n --color-card: #27272a;\n --color-card-item-bg: #ffffff08;\n --color-card-item-hover-bg: #ffffff0d;\n --color-scrollbar-thumb: #3f3f46;\n --color-scrollbar-thumb-hover: #52525b;\n --color-muted: #374151;\n --color-muted-foreground: #9ca3af;\n --color-accent: #10b981;\n --color-input: var(--color-border);\n --color-ring: var(--color-primary);\n}\n\n@media (prefers-color-scheme: dark) {\n :root:not([data-theme]) {\n --theme-name: "dark";\n --color-background: #18181b;\n --color-foreground: #fff;\n --color-primary: #10b981;\n --color-secondary: #9ca3af;\n --color-border: #374151;\n --color-card: #27272a;\n --color-card-item-bg: #ffffff08;\n --color-card-item-hover-bg: #ffffff0d;\n --color-scrollbar-thumb: #3f3f46;\n --color-scrollbar-thumb-hover: #52525b;\n --color-muted: #374151;\n --color-muted-foreground: #9ca3af;\n --color-accent: #10b981;\n --color-input: var(--color-border);\n --color-ring: var(--color-primary);\n }\n}\n\n@property --tw-translate-x {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-translate-y {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-translate-z {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-rotate-x {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-rotate-y {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-rotate-z {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-skew-x {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-skew-y {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-space-y-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-space-x-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-divide-y-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-border-style {\n syntax: "*";\n inherits: false;\n initial-value: solid;\n}\n\n@property --tw-gradient-position {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-gradient-from {\n syntax: "<color>";\n inherits: false;\n initial-value: #0000;\n}\n\n@property --tw-gradient-via {\n syntax: "<color>";\n inherits: false;\n initial-value: #0000;\n}\n\n@property --tw-gradient-to {\n syntax: "<color>";\n inherits: false;\n initial-value: #0000;\n}\n\n@property --tw-gradient-stops {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-gradient-via-stops {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-gradient-from-position {\n syntax: "<length-percentage>";\n inherits: false;\n initial-value: 0%;\n}\n\n@property --tw-gradient-via-position {\n syntax: "<length-percentage>";\n inherits: false;\n initial-value: 50%;\n}\n\n@property --tw-gradient-to-position {\n syntax: "<length-percentage>";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-leading {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-font-weight {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-shadow-color {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-inset-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-inset-shadow-color {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-inset-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-ring-color {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-ring-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-inset-ring-color {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-inset-ring-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-ring-inset {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-ring-offset-width {\n syntax: "<length>";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-ring-offset-color {\n syntax: "*";\n inherits: false;\n initial-value: #fff;\n}\n\n@property --tw-ring-offset-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-blur {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-brightness {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-contrast {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-grayscale {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-hue-rotate {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-invert {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-opacity {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-saturate {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-sepia {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-drop-shadow {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-drop-shadow-color {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-drop-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-drop-shadow-size {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-blur {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-brightness {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-contrast {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-grayscale {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-hue-rotate {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-invert {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-opacity {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-saturate {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-sepia {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-duration {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-ease {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-scale-x {\n syntax: "*";\n inherits: false;\n initial-value: 1;\n}\n\n@property --tw-scale-y {\n syntax: "*";\n inherits: false;\n initial-value: 1;\n}\n\n@property --tw-scale-z {\n syntax: "*";\n inherits: false;\n initial-value: 1;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n';
|
|
1
|
+
const globalCss = '/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */\n@layer properties {\n @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {\n *, :before, :after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-divide-y-reverse: 0;\n --tw-border-style: solid;\n --tw-gradient-position: initial;\n --tw-gradient-from: #0000;\n --tw-gradient-via: #0000;\n --tw-gradient-to: #0000;\n --tw-gradient-stops: initial;\n --tw-gradient-via-stops: initial;\n --tw-gradient-from-position: 0%;\n --tw-gradient-via-position: 50%;\n --tw-gradient-to-position: 100%;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-backdrop-blur: initial;\n --tw-backdrop-brightness: initial;\n --tw-backdrop-contrast: initial;\n --tw-backdrop-grayscale: initial;\n --tw-backdrop-hue-rotate: initial;\n --tw-backdrop-invert: initial;\n --tw-backdrop-opacity: initial;\n --tw-backdrop-saturate: initial;\n --tw-backdrop-sepia: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\n }\n }\n}\n\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;\n --color-red-400: oklch(70.4% .191 22.216);\n --color-amber-400: oklch(82.8% .189 84.429);\n --color-green-400: oklch(79.2% .209 151.711);\n --color-emerald-100: oklch(95% .052 163.051);\n --color-emerald-300: oklch(84.5% .143 164.978);\n --color-emerald-700: oklch(50.8% .118 165.612);\n --color-emerald-900: oklch(37.8% .077 168.94);\n --color-blue-400: oklch(70.7% .165 254.624);\n --color-violet-300: oklch(81.1% .111 293.571);\n --color-violet-400: oklch(70.2% .183 293.541);\n --color-purple-400: oklch(71.4% .203 305.504);\n --color-pink-400: oklch(71.8% .202 349.761);\n --color-black: #000;\n --color-white: #fff;\n --spacing: .25rem;\n --text-xs: .75rem;\n --text-xs--line-height: calc(1 / .75);\n --text-sm: .875rem;\n --text-sm--line-height: calc(1.25 / .875);\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-lg: 1.125rem;\n --text-lg--line-height: calc(1.75 / 1.125);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --text-2xl: 1.5rem;\n --text-2xl--line-height: calc(2 / 1.5);\n --text-3xl: 1.875rem;\n --text-3xl--line-height: calc(2.25 / 1.875);\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --leading-relaxed: 1.625;\n --radius-md: .375rem;\n --radius-lg: .5rem;\n --radius-xl: .75rem;\n --drop-shadow-md: 0 3px 3px #0000001f;\n --ease-out: cubic-bezier(0, 0, .2, 1);\n --ease-in-out: cubic-bezier(.4, 0, .2, 1);\n --animate-spin: spin 1s linear infinite;\n --blur-md: 12px;\n --blur-lg: 16px;\n --default-transition-duration: .15s;\n --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --color-background: #fff;\n --color-foreground: #000;\n --color-primary: #16b6f6;\n --color-primary-active: #0ea5e9;\n --color-muted-foreground: #6b7280;\n --color-accent: #16b6f6;\n --color-border: #e5e7eb;\n --color-card: #f2f2f2;\n --color-card-item-bg: #00000005;\n --color-card-item-hover-bg: #00000008;\n }\n}\n\n@layer base {\n *, :after, :before, ::backdrop {\n box-sizing: border-box;\n border: 0 solid;\n margin: 0;\n padding: 0;\n }\n\n ::file-selector-button {\n box-sizing: border-box;\n border: 0 solid;\n margin: 0;\n padding: 0;\n }\n\n html, :host {\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n line-height: 1.5;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n -webkit-text-decoration: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n\n b, strong {\n font-weight: bolder;\n }\n\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n\n small {\n font-size: 80%;\n }\n\n sub, sup {\n vertical-align: baseline;\n font-size: 75%;\n line-height: 0;\n position: relative;\n }\n\n sub {\n bottom: -.25em;\n }\n\n sup {\n top: -.5em;\n }\n\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n\n :-moz-focusring {\n outline: auto;\n }\n\n progress {\n vertical-align: baseline;\n }\n\n summary {\n display: list-item;\n }\n\n ol, ul, menu {\n list-style: none;\n }\n\n img, svg, video, canvas, audio, iframe, embed, object {\n vertical-align: middle;\n display: block;\n }\n\n img, video {\n max-width: 100%;\n height: auto;\n }\n\n button, input, select, optgroup, textarea {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n opacity: 1;\n background-color: #0000;\n border-radius: 0;\n }\n\n ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n opacity: 1;\n background-color: #0000;\n border-radius: 0;\n }\n\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n\n ::placeholder {\n opacity: 1;\n }\n\n @supports (not ((-webkit-appearance: -apple-pay-button))) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentColor;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n ::placeholder {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n\n textarea {\n resize: vertical;\n }\n\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n\n ::-webkit-datetime-edit {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-year-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-month-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-day-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-hour-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-minute-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-second-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-millisecond-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n\n :-moz-ui-invalid {\n box-shadow: none;\n }\n\n button, input:where([type="button"], [type="reset"], [type="submit"]) {\n appearance: button;\n }\n\n ::file-selector-button {\n appearance: button;\n }\n\n ::-webkit-inner-spin-button {\n height: auto;\n }\n\n ::-webkit-outer-spin-button {\n height: auto;\n }\n\n [hidden]:where(:not([hidden="until-found"])) {\n display: none !important;\n }\n}\n\n@layer components;\n\n@layer utilities {\n .qwik-devtools .pointer-events-none {\n pointer-events: none;\n }\n\n .qwik-devtools .visible {\n visibility: visible;\n }\n\n .qwik-devtools .absolute {\n position: absolute;\n }\n\n .qwik-devtools .fixed {\n position: fixed;\n }\n\n .qwik-devtools .relative {\n position: relative;\n }\n\n .qwik-devtools .static {\n position: static;\n }\n\n .qwik-devtools .inset-0 {\n inset: calc(var(--spacing) * 0);\n }\n\n .qwik-devtools .right-0 {\n right: calc(var(--spacing) * 0);\n }\n\n .qwik-devtools .right-6 {\n right: calc(var(--spacing) * 6);\n }\n\n .qwik-devtools .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n\n .qwik-devtools .bottom-6 {\n bottom: calc(var(--spacing) * 6);\n }\n\n .qwik-devtools .z-\\[9999\\] {\n z-index: 9999;\n }\n\n .qwik-devtools .col-start-1 {\n grid-column-start: 1;\n }\n\n .qwik-devtools .row-start-1 {\n grid-row-start: 1;\n }\n\n .qwik-devtools .container {\n width: 100%;\n }\n\n @media (min-width: 40rem) {\n .qwik-devtools .container {\n max-width: 40rem;\n }\n }\n\n @media (min-width: 48rem) {\n .qwik-devtools .container {\n max-width: 48rem;\n }\n }\n\n @media (min-width: 64rem) {\n .qwik-devtools .container {\n max-width: 64rem;\n }\n }\n\n @media (min-width: 80rem) {\n .qwik-devtools .container {\n max-width: 80rem;\n }\n }\n\n @media (min-width: 96rem) {\n .qwik-devtools .container {\n max-width: 96rem;\n }\n }\n\n .qwik-devtools .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n\n .qwik-devtools .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .mt-5 {\n margin-top: calc(var(--spacing) * 5);\n }\n\n .qwik-devtools .mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n\n .qwik-devtools .mt-auto {\n margin-top: auto;\n }\n\n .qwik-devtools .mr-2 {\n margin-right: calc(var(--spacing) * 2);\n }\n\n .qwik-devtools .mb-1\\.5 {\n margin-bottom: calc(var(--spacing) * 1.5);\n }\n\n .qwik-devtools .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n\n .qwik-devtools .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n\n .qwik-devtools .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n\n .qwik-devtools .line-clamp-2 {\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n }\n\n .qwik-devtools .flex {\n display: flex;\n }\n\n .qwik-devtools .grid {\n display: grid;\n }\n\n .qwik-devtools .hidden {\n display: none;\n }\n\n .qwik-devtools .inline-flex {\n display: inline-flex;\n }\n\n .qwik-devtools .aspect-square {\n aspect-ratio: 1;\n }\n\n .qwik-devtools .h-3 {\n height: calc(var(--spacing) * 3);\n }\n\n .qwik-devtools .h-4 {\n height: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .h-5 {\n height: calc(var(--spacing) * 5);\n }\n\n .qwik-devtools .h-6 {\n height: calc(var(--spacing) * 6);\n }\n\n .qwik-devtools .h-7 {\n height: calc(var(--spacing) * 7);\n }\n\n .qwik-devtools .h-8 {\n height: calc(var(--spacing) * 8);\n }\n\n .qwik-devtools .h-9 {\n height: calc(var(--spacing) * 9);\n }\n\n .qwik-devtools .h-10 {\n height: calc(var(--spacing) * 10);\n }\n\n .qwik-devtools .h-12 {\n height: calc(var(--spacing) * 12);\n }\n\n .qwik-devtools .h-\\[60vh\\] {\n height: 60vh;\n }\n\n .qwik-devtools .h-\\[calc\\(100vh-3rem\\)\\] {\n height: calc(100vh - 3rem);\n }\n\n .qwik-devtools .h-full {\n height: 100%;\n }\n\n .qwik-devtools .min-h-0 {\n min-height: calc(var(--spacing) * 0);\n }\n\n .qwik-devtools .min-h-\\[2\\.5rem\\] {\n min-height: 2.5rem;\n }\n\n .qwik-devtools .w-1\\/2 {\n width: 50%;\n }\n\n .qwik-devtools .w-3 {\n width: calc(var(--spacing) * 3);\n }\n\n .qwik-devtools .w-4 {\n width: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .w-5 {\n width: calc(var(--spacing) * 5);\n }\n\n .qwik-devtools .w-6 {\n width: calc(var(--spacing) * 6);\n }\n\n .qwik-devtools .w-7 {\n width: calc(var(--spacing) * 7);\n }\n\n .qwik-devtools .w-8 {\n width: calc(var(--spacing) * 8);\n }\n\n .qwik-devtools .w-9 {\n width: calc(var(--spacing) * 9);\n }\n\n .qwik-devtools .w-10 {\n width: calc(var(--spacing) * 10);\n }\n\n .qwik-devtools .w-12 {\n width: calc(var(--spacing) * 12);\n }\n\n .qwik-devtools .w-\\[420px\\] {\n width: 420px;\n }\n\n .qwik-devtools .w-\\[calc\\(100vw-3rem\\)\\] {\n width: calc(100vw - 3rem);\n }\n\n .qwik-devtools .w-full {\n width: 100%;\n }\n\n .qwik-devtools .min-w-0 {\n min-width: calc(var(--spacing) * 0);\n }\n\n .qwik-devtools .min-w-\\[320px\\] {\n min-width: 320px;\n }\n\n .qwik-devtools .flex-1 {\n flex: 1;\n }\n\n .qwik-devtools .flex-shrink-0, .qwik-devtools .shrink-0 {\n flex-shrink: 0;\n }\n\n .qwik-devtools .origin-center {\n transform-origin: center;\n }\n\n .qwik-devtools .translate-y-0 {\n --tw-translate-y: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .qwik-devtools .-rotate-90 {\n rotate: -90deg;\n }\n\n .qwik-devtools .rotate-90 {\n rotate: 90deg;\n }\n\n .qwik-devtools .rotate-180 {\n rotate: 180deg;\n }\n\n .qwik-devtools .transform {\n transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );\n }\n\n .qwik-devtools .animate-spin {\n animation: var(--animate-spin);\n }\n\n .qwik-devtools .cursor-grab {\n cursor: grab;\n }\n\n .qwik-devtools .cursor-grabbing {\n cursor: grabbing;\n }\n\n .qwik-devtools .cursor-not-allowed {\n cursor: not-allowed;\n }\n\n .qwik-devtools .cursor-pointer {\n cursor: pointer;\n }\n\n .qwik-devtools .resize-none {\n resize: none;\n }\n\n .qwik-devtools .grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n\n .qwik-devtools .grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n\n .qwik-devtools .grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .qwik-devtools .grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n\n .qwik-devtools .flex-col {\n flex-direction: column;\n }\n\n .qwik-devtools .place-items-center {\n place-items: center;\n }\n\n .qwik-devtools .items-center {\n align-items: center;\n }\n\n .qwik-devtools .items-start {\n align-items: flex-start;\n }\n\n .qwik-devtools .justify-between {\n justify-content: space-between;\n }\n\n .qwik-devtools .justify-center {\n justify-content: center;\n }\n\n .qwik-devtools .gap-1 {\n gap: calc(var(--spacing) * 1);\n }\n\n .qwik-devtools .gap-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n\n .qwik-devtools .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n\n .qwik-devtools .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n\n .qwik-devtools .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .gap-5 {\n gap: calc(var(--spacing) * 5);\n }\n\n :where(.qwik-devtools .space-y-2 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.qwik-devtools .space-y-3 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.qwik-devtools .space-y-4 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.qwik-devtools .space-y-6 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n .qwik-devtools .gap-x-6 {\n column-gap: calc(var(--spacing) * 6);\n }\n\n :where(.qwik-devtools .space-x-2 > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n\n :where(.qwik-devtools .space-x-4 > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)));\n }\n\n .qwik-devtools .gap-y-3 {\n row-gap: calc(var(--spacing) * 3);\n }\n\n :where(.qwik-devtools .divide-y > :not(:last-child)) {\n --tw-divide-y-reverse: 0;\n border-bottom-style: var(--tw-border-style);\n border-top-style: var(--tw-border-style);\n border-top-width: calc(1px * var(--tw-divide-y-reverse));\n border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n }\n\n :where(.qwik-devtools .divide-border > :not(:last-child)) {\n border-color: var(--color-border);\n }\n\n .qwik-devtools .truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n .qwik-devtools .overflow-auto {\n overflow: auto;\n }\n\n .qwik-devtools .overflow-hidden {\n overflow: hidden;\n }\n\n .qwik-devtools .overflow-x-auto {\n overflow-x: auto;\n }\n\n .qwik-devtools .overflow-y-auto {\n overflow-y: auto;\n }\n\n .qwik-devtools .rounded {\n border-radius: .25rem;\n }\n\n .qwik-devtools .rounded-full {\n border-radius: 3.40282e38px;\n }\n\n .qwik-devtools .rounded-lg {\n border-radius: var(--radius-lg);\n }\n\n .qwik-devtools .rounded-md {\n border-radius: var(--radius-md);\n }\n\n .qwik-devtools .rounded-xl {\n border-radius: var(--radius-xl);\n }\n\n .qwik-devtools .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n\n .qwik-devtools .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n\n .qwik-devtools .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n\n .qwik-devtools .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n\n .qwik-devtools .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n\n .qwik-devtools .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n\n .qwik-devtools .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n\n .qwik-devtools .border-accent\\/30 {\n border-color: #16b6f64d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .border-accent\\/30 {\n border-color: color-mix(in oklab, var(--color-accent) 30%, transparent);\n }\n }\n\n .qwik-devtools .border-accent\\/50 {\n border-color: #16b6f680;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .border-accent\\/50 {\n border-color: color-mix(in oklab, var(--color-accent) 50%, transparent);\n }\n }\n\n .qwik-devtools .border-border {\n border-color: var(--color-border);\n }\n\n .qwik-devtools .border-border\\/50 {\n border-color: #e5e7eb80;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .border-border\\/50 {\n border-color: color-mix(in oklab, var(--color-border) 50%, transparent);\n }\n }\n\n .qwik-devtools .border-current {\n border-color: currentColor;\n }\n\n .qwik-devtools .border-emerald-300 {\n border-color: var(--color-emerald-300);\n }\n\n .qwik-devtools .border-primary\\/20 {\n border-color: #16b6f633;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .border-primary\\/20 {\n border-color: color-mix(in oklab, var(--color-primary) 20%, transparent);\n }\n }\n\n .qwik-devtools .border-t-foreground\\/40 {\n border-top-color: #0006;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .border-t-foreground\\/40 {\n border-top-color: color-mix(in oklab, var(--color-foreground) 40%, transparent);\n }\n }\n\n .qwik-devtools .border-t-transparent {\n border-top-color: #0000;\n }\n\n .qwik-devtools .border-b-transparent {\n border-bottom-color: #0000;\n }\n\n .qwik-devtools .bg-accent {\n background-color: var(--color-accent);\n }\n\n .qwik-devtools .bg-background {\n background-color: var(--color-background);\n }\n\n .qwik-devtools .bg-background\\/95 {\n background-color: #fffffff2;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .bg-background\\/95 {\n background-color: color-mix(in oklab, var(--color-background) 95%, transparent);\n }\n }\n\n .qwik-devtools .bg-black\\/20 {\n background-color: #0003;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .bg-black\\/20 {\n background-color: color-mix(in oklab, var(--color-black) 20%, transparent);\n }\n }\n\n .qwik-devtools .bg-card {\n background-color: var(--color-card);\n }\n\n .qwik-devtools .bg-card-item-bg {\n background-color: var(--color-card-item-bg);\n }\n\n .qwik-devtools .bg-emerald-100 {\n background-color: var(--color-emerald-100);\n }\n\n .qwik-devtools .bg-foreground\\/5 {\n background-color: #0000000d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .bg-foreground\\/5 {\n background-color: color-mix(in oklab, var(--color-foreground) 5%, transparent);\n }\n }\n\n .qwik-devtools .bg-primary\\/5 {\n background-color: #16b6f60d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .bg-primary\\/5 {\n background-color: color-mix(in oklab, var(--color-primary) 5%, transparent);\n }\n }\n\n .qwik-devtools .bg-primary\\/10 {\n background-color: #16b6f61a;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .bg-primary\\/10 {\n background-color: color-mix(in oklab, var(--color-primary) 10%, transparent);\n }\n }\n\n .qwik-devtools .bg-transparent {\n background-color: #0000;\n }\n\n .qwik-devtools .bg-gradient-to-br {\n --tw-gradient-position: to bottom right in oklab;\n background-image: linear-gradient(var(--tw-gradient-stops));\n }\n\n .qwik-devtools .from-accent\\/20 {\n --tw-gradient-from: #16b6f633;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .from-accent\\/20 {\n --tw-gradient-from: color-mix(in oklab, var(--color-accent) 20%, transparent);\n }\n }\n\n .qwik-devtools .from-accent\\/20 {\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n\n .qwik-devtools .from-primary\\/0 {\n --tw-gradient-from: #0000;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .from-primary\\/0 {\n --tw-gradient-from: color-mix(in oklab, var(--color-primary) 0%, transparent);\n }\n }\n\n .qwik-devtools .from-primary\\/0 {\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n\n .qwik-devtools .from-primary\\/10 {\n --tw-gradient-from: #16b6f61a;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .from-primary\\/10 {\n --tw-gradient-from: color-mix(in oklab, var(--color-primary) 10%, transparent);\n }\n }\n\n .qwik-devtools .from-primary\\/10 {\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n\n .qwik-devtools .via-primary\\/0 {\n --tw-gradient-via: #0000;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .via-primary\\/0 {\n --tw-gradient-via: color-mix(in oklab, var(--color-primary) 0%, transparent);\n }\n }\n\n .qwik-devtools .via-primary\\/0 {\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n\n .qwik-devtools .via-primary\\/20 {\n --tw-gradient-via: #16b6f633;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .via-primary\\/20 {\n --tw-gradient-via: color-mix(in oklab, var(--color-primary) 20%, transparent);\n }\n }\n\n .qwik-devtools .via-primary\\/20 {\n --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);\n --tw-gradient-stops: var(--tw-gradient-via-stops);\n }\n\n .qwik-devtools .to-accent\\/40 {\n --tw-gradient-to: #16b6f666;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .to-accent\\/40 {\n --tw-gradient-to: color-mix(in oklab, var(--color-accent) 40%, transparent);\n }\n }\n\n .qwik-devtools .to-accent\\/40 {\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n\n .qwik-devtools .to-primary\\/5 {\n --tw-gradient-to: #16b6f60d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .to-primary\\/5 {\n --tw-gradient-to: color-mix(in oklab, var(--color-primary) 5%, transparent);\n }\n }\n\n .qwik-devtools .to-primary\\/5 {\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n\n .qwik-devtools .to-primary\\/30 {\n --tw-gradient-to: #16b6f64d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .to-primary\\/30 {\n --tw-gradient-to: color-mix(in oklab, var(--color-primary) 30%, transparent);\n }\n }\n\n .qwik-devtools .to-primary\\/30 {\n --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));\n }\n\n .qwik-devtools .object-cover {\n object-fit: cover;\n }\n\n .qwik-devtools .p-0\\.5 {\n padding: calc(var(--spacing) * .5);\n }\n\n .qwik-devtools .p-1 {\n padding: calc(var(--spacing) * 1);\n }\n\n .qwik-devtools .p-1\\.5 {\n padding: calc(var(--spacing) * 1.5);\n }\n\n .qwik-devtools .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n\n .qwik-devtools .p-2\\.5 {\n padding: calc(var(--spacing) * 2.5);\n }\n\n .qwik-devtools .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n\n .qwik-devtools .p-3\\.5 {\n padding: calc(var(--spacing) * 3.5);\n }\n\n .qwik-devtools .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .p-5 {\n padding: calc(var(--spacing) * 5);\n }\n\n .qwik-devtools .p-8 {\n padding: calc(var(--spacing) * 8);\n }\n\n .qwik-devtools .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n\n .qwik-devtools .px-2\\.5 {\n padding-inline: calc(var(--spacing) * 2.5);\n }\n\n .qwik-devtools .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n\n .qwik-devtools .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .py-0\\.5 {\n padding-block: calc(var(--spacing) * .5);\n }\n\n .qwik-devtools .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n\n .qwik-devtools .py-1\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\n }\n\n .qwik-devtools .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n\n .qwik-devtools .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n\n .qwik-devtools .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .py-8 {\n padding-block: calc(var(--spacing) * 8);\n }\n\n .qwik-devtools .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n\n .qwik-devtools .pb-6 {\n padding-bottom: calc(var(--spacing) * 6);\n }\n\n .qwik-devtools .text-center {\n text-align: center;\n }\n\n .qwik-devtools .text-left {\n text-align: left;\n }\n\n .qwik-devtools .text-right {\n text-align: right;\n }\n\n .qwik-devtools .font-mono {\n font-family: var(--font-mono);\n }\n\n .qwik-devtools .font-sans {\n font-family: var(--font-sans);\n }\n\n .qwik-devtools .text-2xl {\n font-size: var(--text-2xl);\n line-height: var(--tw-leading, var(--text-2xl--line-height));\n }\n\n .qwik-devtools .text-3xl {\n font-size: var(--text-3xl);\n line-height: var(--tw-leading, var(--text-3xl--line-height));\n }\n\n .qwik-devtools .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n\n .qwik-devtools .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n\n .qwik-devtools .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n\n .qwik-devtools .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n\n .qwik-devtools .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n\n .qwik-devtools .text-\\[10px\\] {\n font-size: 10px;\n }\n\n .qwik-devtools .leading-relaxed {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\n }\n\n .qwik-devtools .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n\n .qwik-devtools .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n\n .qwik-devtools .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n\n .qwik-devtools .break-all {\n word-break: break-all;\n }\n\n .qwik-devtools .whitespace-nowrap {\n white-space: nowrap;\n }\n\n .qwik-devtools .text-accent {\n color: var(--color-accent);\n }\n\n .qwik-devtools .text-amber-400 {\n color: var(--color-amber-400);\n }\n\n .qwik-devtools .text-blue-400 {\n color: var(--color-blue-400);\n }\n\n .qwik-devtools .text-emerald-700 {\n color: var(--color-emerald-700);\n }\n\n .qwik-devtools .text-foreground {\n color: var(--color-foreground);\n }\n\n .qwik-devtools .text-foreground\\/70 {\n color: #000000b3;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .text-foreground\\/70 {\n color: color-mix(in oklab, var(--color-foreground) 70%, transparent);\n }\n }\n\n .qwik-devtools .text-green-400 {\n color: var(--color-green-400);\n }\n\n .qwik-devtools .text-muted-foreground {\n color: var(--color-muted-foreground);\n }\n\n .qwik-devtools .text-pink-400 {\n color: var(--color-pink-400);\n }\n\n .qwik-devtools .text-primary {\n color: var(--color-primary);\n }\n\n .qwik-devtools .text-primary\\/50 {\n color: #16b6f680;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .text-primary\\/50 {\n color: color-mix(in oklab, var(--color-primary) 50%, transparent);\n }\n }\n\n .qwik-devtools .text-purple-400 {\n color: var(--color-purple-400);\n }\n\n .qwik-devtools .text-red-400 {\n color: var(--color-red-400);\n }\n\n .qwik-devtools .text-violet-400 {\n color: var(--color-violet-400);\n }\n\n .qwik-devtools .text-white {\n color: var(--color-white);\n }\n\n .qwik-devtools .opacity-0 {\n opacity: 0;\n }\n\n .qwik-devtools .opacity-90 {\n opacity: .9;\n }\n\n .qwik-devtools .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .qwik-devtools .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, #0000001a), 0 4px 6px -4px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .qwik-devtools .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, #0000001a), 0 2px 4px -2px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .qwik-devtools .shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .qwik-devtools .ring-2 {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .qwik-devtools .shadow-accent\\/35 {\n --tw-shadow-color: #16b6f659;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .shadow-accent\\/35 {\n --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-accent) 35%, transparent) var(--tw-shadow-alpha), transparent);\n }\n }\n\n .qwik-devtools .ring-primary-active {\n --tw-ring-color: var(--color-primary-active);\n }\n\n .qwik-devtools .drop-shadow-md {\n --tw-drop-shadow-size: drop-shadow(0 3px 3px var(--tw-drop-shadow-color, #0000001f));\n --tw-drop-shadow: drop-shadow(var(--drop-shadow-md));\n 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, );\n }\n\n .qwik-devtools .filter {\n 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, );\n }\n\n .qwik-devtools .backdrop-blur-lg {\n --tw-backdrop-blur: blur(var(--blur-lg));\n -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );\n backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );\n }\n\n .qwik-devtools .backdrop-blur-md {\n --tw-backdrop-blur: blur(var(--blur-md));\n -webkit-backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );\n backdrop-filter: var(--tw-backdrop-blur, ) var(--tw-backdrop-brightness, ) var(--tw-backdrop-contrast, ) var(--tw-backdrop-grayscale, ) var(--tw-backdrop-hue-rotate, ) var(--tw-backdrop-invert, ) var(--tw-backdrop-opacity, ) var(--tw-backdrop-saturate, ) var(--tw-backdrop-sepia, );\n }\n\n .qwik-devtools .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .qwik-devtools .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .qwik-devtools .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .qwik-devtools .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .qwik-devtools .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .qwik-devtools .duration-200 {\n --tw-duration: .2s;\n transition-duration: .2s;\n }\n\n .qwik-devtools .duration-300 {\n --tw-duration: .3s;\n transition-duration: .3s;\n }\n\n .qwik-devtools .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n\n .qwik-devtools .ease-out {\n --tw-ease: var(--ease-out);\n transition-timing-function: var(--ease-out);\n }\n\n .qwik-devtools .select-none {\n -webkit-user-select: none;\n user-select: none;\n }\n\n @media (hover: hover) {\n .qwik-devtools .group-hover\\:scale-110:is(:where(.group):hover *) {\n --tw-scale-x: 110%;\n --tw-scale-y: 110%;\n --tw-scale-z: 110%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n\n .qwik-devtools .group-hover\\:opacity-100:is(:where(.group):hover *) {\n opacity: 1;\n }\n\n .qwik-devtools .group-hover\\:shadow-primary\\/20:is(:where(.group):hover *) {\n --tw-shadow-color: #16b6f633;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .group-hover\\:shadow-primary\\/20:is(:where(.group):hover *) {\n --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-primary) 20%, transparent) var(--tw-shadow-alpha), transparent);\n }\n }\n }\n\n .qwik-devtools .group-active\\:scale-75:is(:where(.group):active *) {\n --tw-scale-x: 75%;\n --tw-scale-y: 75%;\n --tw-scale-z: 75%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n\n @media (hover: hover) {\n .qwik-devtools .hover\\:-translate-y-0\\.5:hover {\n --tw-translate-y: calc(var(--spacing) * -.5);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .qwik-devtools .hover\\:scale-110:hover {\n --tw-scale-x: 110%;\n --tw-scale-y: 110%;\n --tw-scale-z: 110%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n\n .qwik-devtools .hover\\:rotate-3:hover {\n rotate: 3deg;\n }\n\n .qwik-devtools .hover\\:border-primary\\/30:hover {\n border-color: #16b6f64d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .hover\\:border-primary\\/30:hover {\n border-color: color-mix(in oklab, var(--color-primary) 30%, transparent);\n }\n }\n\n .qwik-devtools .hover\\:bg-card-item-hover-bg:hover {\n background-color: var(--color-card-item-hover-bg);\n }\n\n .qwik-devtools .hover\\:bg-foreground\\/5:hover {\n background-color: #0000000d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .hover\\:bg-foreground\\/5:hover {\n background-color: color-mix(in oklab, var(--color-foreground) 5%, transparent);\n }\n }\n\n .qwik-devtools .hover\\:bg-primary\\/10:hover {\n background-color: #16b6f61a;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .hover\\:bg-primary\\/10:hover {\n background-color: color-mix(in oklab, var(--color-primary) 10%, transparent);\n }\n }\n\n .qwik-devtools .hover\\:bg-primary\\/20:hover {\n background-color: #16b6f633;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .hover\\:bg-primary\\/20:hover {\n background-color: color-mix(in oklab, var(--color-primary) 20%, transparent);\n }\n }\n\n .qwik-devtools .hover\\:text-foreground:hover {\n color: var(--color-foreground);\n }\n\n .qwik-devtools .hover\\:text-primary:hover {\n color: var(--color-primary);\n }\n\n .qwik-devtools .hover\\:underline:hover {\n text-decoration-line: underline;\n }\n\n .qwik-devtools .hover\\:opacity-60:hover {\n opacity: .6;\n }\n\n .qwik-devtools .hover\\:opacity-90:hover {\n opacity: .9;\n }\n\n .qwik-devtools .hover\\:shadow-lg:hover {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, #0000001a), 0 4px 6px -4px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .qwik-devtools .hover\\:shadow-primary\\/5:hover {\n --tw-shadow-color: #16b6f60d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .hover\\:shadow-primary\\/5:hover {\n --tw-shadow-color: color-mix(in oklab, color-mix(in oklab, var(--color-primary) 5%, transparent) var(--tw-shadow-alpha), transparent);\n }\n }\n }\n\n .qwik-devtools .focus\\:ring-primary-active:focus {\n --tw-ring-color: var(--color-primary-active);\n }\n\n .qwik-devtools .focus\\:ring-offset-0:focus {\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-shadow: var(--tw-ring-inset, ) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n }\n\n @media (min-width: 40rem) {\n .qwik-devtools .sm\\:grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n\n .qwik-devtools .sm\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n }\n\n @media (min-width: 48rem) {\n .qwik-devtools .md\\:mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n\n .qwik-devtools .md\\:grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n\n .qwik-devtools .md\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .qwik-devtools .md\\:grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n\n .qwik-devtools .md\\:px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n }\n\n @media (min-width: 64rem) {\n .qwik-devtools .lg\\:grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .qwik-devtools .lg\\:grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n }\n }\n\n @media (prefers-color-scheme: dark) {\n .qwik-devtools .dark\\:border-\\[\\#374151\\] {\n border-color: #374151;\n }\n\n .qwik-devtools .dark\\:border-emerald-700\\/40 {\n border-color: #00795666;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .dark\\:border-emerald-700\\/40 {\n border-color: color-mix(in oklab, var(--color-emerald-700) 40%, transparent);\n }\n }\n\n .qwik-devtools .dark\\:bg-\\[\\#1F2937\\] {\n background-color: #1f2937;\n }\n\n .qwik-devtools .dark\\:bg-emerald-900\\/30 {\n background-color: #004e3b4d;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .qwik-devtools .dark\\:bg-emerald-900\\/30 {\n background-color: color-mix(in oklab, var(--color-emerald-900) 30%, transparent);\n }\n }\n\n .qwik-devtools .dark\\:text-emerald-300 {\n color: var(--color-emerald-300);\n }\n\n .qwik-devtools .dark\\:text-violet-300 {\n color: var(--color-violet-300);\n }\n }\n\n .custom-scrollbar {\n scrollbar-width: thin;\n scrollbar-color: var(--color-scrollbar-thumb) transparent;\n }\n\n .custom-scrollbar::-webkit-scrollbar {\n width: 6px;\n }\n\n .custom-scrollbar::-webkit-scrollbar-track {\n background: none;\n }\n\n .custom-scrollbar::-webkit-scrollbar-thumb {\n background-color: var(--color-scrollbar-thumb);\n border-radius: 20px;\n }\n\n .custom-scrollbar::-webkit-scrollbar-thumb:hover {\n background-color: var(--color-scrollbar-thumb-hover);\n }\n}\n\n:root {\n --theme-name: "light";\n --color-background: #fff;\n --color-foreground: #000;\n --color-primary: #16b6f6;\n --color-primary-hover: #38bdf8;\n --color-primary-active: #0ea5e9;\n --color-secondary: #6b7280;\n --color-border: #e5e7eb;\n --color-card: #f2f2f2;\n --color-card-item-bg: #00000005;\n --color-card-item-hover-bg: #00000008;\n --color-scrollbar-thumb: #d1d5db;\n --color-scrollbar-thumb-hover: #a1a1aa;\n --color-muted: #9ca3af;\n --color-muted-foreground: #6b7280;\n --color-accent: #16b6f6;\n --color-input: var(--color-border);\n --color-ring: var(--color-primary);\n}\n\n:root[data-theme="dark"] {\n --theme-name: "dark";\n --color-background: #18181b;\n --color-foreground: #fff;\n --color-primary: #16b6f6;\n --color-primary-hover: #38bdf8;\n --color-primary-active: #0ea5e9;\n --color-secondary: #9ca3af;\n --color-border: #374151;\n --color-card: #27272a;\n --color-card-item-bg: #ffffff08;\n --color-card-item-hover-bg: #ffffff0d;\n --color-scrollbar-thumb: #3f3f46;\n --color-scrollbar-thumb-hover: #52525b;\n --color-muted: #374151;\n --color-muted-foreground: #9ca3af;\n --color-accent: #16b6f6;\n --color-input: var(--color-border);\n --color-ring: var(--color-primary);\n}\n\n@media (prefers-color-scheme: dark) {\n :root:not([data-theme]) {\n --theme-name: "dark";\n --color-background: #18181b;\n --color-foreground: #fff;\n --color-primary: #16b6f6;\n --color-secondary: #9ca3af;\n --color-border: #374151;\n --color-card: #27272a;\n --color-card-item-bg: #ffffff08;\n --color-card-item-hover-bg: #ffffff0d;\n --color-scrollbar-thumb: #3f3f46;\n --color-scrollbar-thumb-hover: #52525b;\n --color-muted: #374151;\n --color-muted-foreground: #9ca3af;\n --color-accent: #16b6f6;\n --color-input: var(--color-border);\n --color-ring: var(--color-primary);\n }\n}\n\n@property --tw-translate-x {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-translate-y {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-translate-z {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-rotate-x {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-rotate-y {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-rotate-z {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-skew-x {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-skew-y {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-space-y-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-space-x-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-divide-y-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-border-style {\n syntax: "*";\n inherits: false;\n initial-value: solid;\n}\n\n@property --tw-gradient-position {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-gradient-from {\n syntax: "<color>";\n inherits: false;\n initial-value: #0000;\n}\n\n@property --tw-gradient-via {\n syntax: "<color>";\n inherits: false;\n initial-value: #0000;\n}\n\n@property --tw-gradient-to {\n syntax: "<color>";\n inherits: false;\n initial-value: #0000;\n}\n\n@property --tw-gradient-stops {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-gradient-via-stops {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-gradient-from-position {\n syntax: "<length-percentage>";\n inherits: false;\n initial-value: 0%;\n}\n\n@property --tw-gradient-via-position {\n syntax: "<length-percentage>";\n inherits: false;\n initial-value: 50%;\n}\n\n@property --tw-gradient-to-position {\n syntax: "<length-percentage>";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-leading {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-font-weight {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-shadow-color {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-inset-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-inset-shadow-color {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-inset-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-ring-color {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-ring-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-inset-ring-color {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-inset-ring-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-ring-inset {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-ring-offset-width {\n syntax: "<length>";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-ring-offset-color {\n syntax: "*";\n inherits: false;\n initial-value: #fff;\n}\n\n@property --tw-ring-offset-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-blur {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-brightness {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-contrast {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-grayscale {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-hue-rotate {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-invert {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-opacity {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-saturate {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-sepia {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-drop-shadow {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-drop-shadow-color {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-drop-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-drop-shadow-size {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-blur {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-brightness {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-contrast {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-grayscale {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-hue-rotate {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-invert {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-opacity {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-saturate {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-backdrop-sepia {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-duration {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-ease {\n syntax: "*";\n inherits: false\n}\n\n@property --tw-scale-x {\n syntax: "*";\n inherits: false;\n initial-value: 1;\n}\n\n@property --tw-scale-y {\n syntax: "*";\n inherits: false;\n initial-value: 1;\n}\n\n@property --tw-scale-z {\n syntax: "*";\n inherits: false;\n initial-value: 1;\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n';
|
|
2
2
|
export {
|
|
3
3
|
globalCss as default
|
|
4
4
|
};
|
|
@@ -12,6 +12,15 @@ export interface ServerFunctions {
|
|
|
12
12
|
getRoutes: () => any;
|
|
13
13
|
getQwikPackages: () => Promise<[string, string][]>;
|
|
14
14
|
getAllDependencies: () => Promise<any[]>;
|
|
15
|
+
getDependenciesStatus: () => Promise<{
|
|
16
|
+
phase: 'idle' | 'phase1' | 'phase2' | 'done' | 'error';
|
|
17
|
+
loaded: number;
|
|
18
|
+
total: number;
|
|
19
|
+
startedAt: number | null;
|
|
20
|
+
finishedAt: number | null;
|
|
21
|
+
error?: string;
|
|
22
|
+
}>;
|
|
23
|
+
refreshDependencies: () => Promise<void>;
|
|
15
24
|
installPackage: (packageName: string, isDev?: boolean) => Promise<{
|
|
16
25
|
success: boolean;
|
|
17
26
|
error?: string;
|
|
@@ -2,8 +2,16 @@ export interface Package {
|
|
|
2
2
|
name: string;
|
|
3
3
|
version: string;
|
|
4
4
|
description: string;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
/**
|
|
6
|
+
* npm package.json `author` can be:
|
|
7
|
+
* - string: "Jane Doe <jane@example.com> (https://example.com)"
|
|
8
|
+
* - object: { name, email?, url? }
|
|
9
|
+
* - missing / partial
|
|
10
|
+
*
|
|
11
|
+
* Runtime data may not match strict typings, so keep this permissive.
|
|
12
|
+
*/
|
|
13
|
+
author?: string | {
|
|
14
|
+
name?: string;
|
|
7
15
|
email?: string;
|
|
8
16
|
url?: string;
|
|
9
17
|
};
|