vtex-css-sanitizer-cli 1.0.5 → 1.0.7
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/.github/workflows/release.yml +4 -0
- package/PUBLISHING.md +68 -0
- package/README.md +19 -6
- package/gui/out/renderer/assets/{index-B4Zg_1V2.js → index-CdnHXLFU.js} +258 -75
- package/gui/out/renderer/assets/{index-BUoLJXor.css → index-CkektP3p.css} +258 -74
- package/gui/out/renderer/index.html +2 -2
- package/gui/package.json +4 -3
- package/gui/yarn.lock +5 -0
- package/package.json +1 -1
- package/docs/assets/cli-mockup.png +0 -0
- package/docs/assets/gui-mockup.png +0 -0
- package/docs/favicon.svg +0 -5
- package/docs/index.html +0 -336
- package/docs/script.js +0 -64
- package/docs/styles.css +0 -745
|
@@ -7020,6 +7020,189 @@ function requireClient() {
|
|
|
7020
7020
|
}
|
|
7021
7021
|
var clientExports = requireClient();
|
|
7022
7022
|
const ReactDOM = /* @__PURE__ */ getDefaultExportFromCjs(clientExports);
|
|
7023
|
+
/**
|
|
7024
|
+
* @license lucide-react v0.576.0 - ISC
|
|
7025
|
+
*
|
|
7026
|
+
* This source code is licensed under the ISC license.
|
|
7027
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
7028
|
+
*/
|
|
7029
|
+
const mergeClasses = (...classes) => classes.filter((className, index, array) => {
|
|
7030
|
+
return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
|
|
7031
|
+
}).join(" ").trim();
|
|
7032
|
+
/**
|
|
7033
|
+
* @license lucide-react v0.576.0 - ISC
|
|
7034
|
+
*
|
|
7035
|
+
* This source code is licensed under the ISC license.
|
|
7036
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
7037
|
+
*/
|
|
7038
|
+
const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
7039
|
+
/**
|
|
7040
|
+
* @license lucide-react v0.576.0 - ISC
|
|
7041
|
+
*
|
|
7042
|
+
* This source code is licensed under the ISC license.
|
|
7043
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
7044
|
+
*/
|
|
7045
|
+
const toCamelCase = (string) => string.replace(
|
|
7046
|
+
/^([A-Z])|[\s-_]+(\w)/g,
|
|
7047
|
+
(match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
|
|
7048
|
+
);
|
|
7049
|
+
/**
|
|
7050
|
+
* @license lucide-react v0.576.0 - ISC
|
|
7051
|
+
*
|
|
7052
|
+
* This source code is licensed under the ISC license.
|
|
7053
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
7054
|
+
*/
|
|
7055
|
+
const toPascalCase = (string) => {
|
|
7056
|
+
const camelCase = toCamelCase(string);
|
|
7057
|
+
return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
|
|
7058
|
+
};
|
|
7059
|
+
/**
|
|
7060
|
+
* @license lucide-react v0.576.0 - ISC
|
|
7061
|
+
*
|
|
7062
|
+
* This source code is licensed under the ISC license.
|
|
7063
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
7064
|
+
*/
|
|
7065
|
+
var defaultAttributes = {
|
|
7066
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
7067
|
+
width: 24,
|
|
7068
|
+
height: 24,
|
|
7069
|
+
viewBox: "0 0 24 24",
|
|
7070
|
+
fill: "none",
|
|
7071
|
+
stroke: "currentColor",
|
|
7072
|
+
strokeWidth: 2,
|
|
7073
|
+
strokeLinecap: "round",
|
|
7074
|
+
strokeLinejoin: "round"
|
|
7075
|
+
};
|
|
7076
|
+
/**
|
|
7077
|
+
* @license lucide-react v0.576.0 - ISC
|
|
7078
|
+
*
|
|
7079
|
+
* This source code is licensed under the ISC license.
|
|
7080
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
7081
|
+
*/
|
|
7082
|
+
const hasA11yProp = (props) => {
|
|
7083
|
+
for (const prop in props) {
|
|
7084
|
+
if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
|
|
7085
|
+
return true;
|
|
7086
|
+
}
|
|
7087
|
+
}
|
|
7088
|
+
return false;
|
|
7089
|
+
};
|
|
7090
|
+
/**
|
|
7091
|
+
* @license lucide-react v0.576.0 - ISC
|
|
7092
|
+
*
|
|
7093
|
+
* This source code is licensed under the ISC license.
|
|
7094
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
7095
|
+
*/
|
|
7096
|
+
const Icon = reactExports.forwardRef(
|
|
7097
|
+
({
|
|
7098
|
+
color = "currentColor",
|
|
7099
|
+
size = 24,
|
|
7100
|
+
strokeWidth = 2,
|
|
7101
|
+
absoluteStrokeWidth,
|
|
7102
|
+
className = "",
|
|
7103
|
+
children,
|
|
7104
|
+
iconNode,
|
|
7105
|
+
...rest
|
|
7106
|
+
}, ref) => reactExports.createElement(
|
|
7107
|
+
"svg",
|
|
7108
|
+
{
|
|
7109
|
+
ref,
|
|
7110
|
+
...defaultAttributes,
|
|
7111
|
+
width: size,
|
|
7112
|
+
height: size,
|
|
7113
|
+
stroke: color,
|
|
7114
|
+
strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
|
|
7115
|
+
className: mergeClasses("lucide", className),
|
|
7116
|
+
...!children && !hasA11yProp(rest) && { "aria-hidden": "true" },
|
|
7117
|
+
...rest
|
|
7118
|
+
},
|
|
7119
|
+
[
|
|
7120
|
+
...iconNode.map(([tag, attrs]) => reactExports.createElement(tag, attrs)),
|
|
7121
|
+
...Array.isArray(children) ? children : [children]
|
|
7122
|
+
]
|
|
7123
|
+
)
|
|
7124
|
+
);
|
|
7125
|
+
/**
|
|
7126
|
+
* @license lucide-react v0.576.0 - ISC
|
|
7127
|
+
*
|
|
7128
|
+
* This source code is licensed under the ISC license.
|
|
7129
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
7130
|
+
*/
|
|
7131
|
+
const createLucideIcon = (iconName, iconNode) => {
|
|
7132
|
+
const Component = reactExports.forwardRef(
|
|
7133
|
+
({ className, ...props }, ref) => reactExports.createElement(Icon, {
|
|
7134
|
+
ref,
|
|
7135
|
+
iconNode,
|
|
7136
|
+
className: mergeClasses(
|
|
7137
|
+
`lucide-${toKebabCase(toPascalCase(iconName))}`,
|
|
7138
|
+
`lucide-${iconName}`,
|
|
7139
|
+
className
|
|
7140
|
+
),
|
|
7141
|
+
...props
|
|
7142
|
+
})
|
|
7143
|
+
);
|
|
7144
|
+
Component.displayName = toPascalCase(iconName);
|
|
7145
|
+
return Component;
|
|
7146
|
+
};
|
|
7147
|
+
/**
|
|
7148
|
+
* @license lucide-react v0.576.0 - ISC
|
|
7149
|
+
*
|
|
7150
|
+
* This source code is licensed under the ISC license.
|
|
7151
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
7152
|
+
*/
|
|
7153
|
+
const __iconNode$2 = [
|
|
7154
|
+
[
|
|
7155
|
+
"path",
|
|
7156
|
+
{
|
|
7157
|
+
d: "M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35",
|
|
7158
|
+
key: "1wthlu"
|
|
7159
|
+
}
|
|
7160
|
+
],
|
|
7161
|
+
["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }],
|
|
7162
|
+
["path", { d: "m5 16-3 3 3 3", key: "331omg" }],
|
|
7163
|
+
["path", { d: "m9 22 3-3-3-3", key: "lsp7cz" }]
|
|
7164
|
+
];
|
|
7165
|
+
const FileCodeCorner = createLucideIcon("file-code-corner", __iconNode$2);
|
|
7166
|
+
/**
|
|
7167
|
+
* @license lucide-react v0.576.0 - ISC
|
|
7168
|
+
*
|
|
7169
|
+
* This source code is licensed under the ISC license.
|
|
7170
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
7171
|
+
*/
|
|
7172
|
+
const __iconNode$1 = [
|
|
7173
|
+
[
|
|
7174
|
+
"path",
|
|
7175
|
+
{
|
|
7176
|
+
d: "m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",
|
|
7177
|
+
key: "usdka0"
|
|
7178
|
+
}
|
|
7179
|
+
]
|
|
7180
|
+
];
|
|
7181
|
+
const FolderOpen = createLucideIcon("folder-open", __iconNode$1);
|
|
7182
|
+
/**
|
|
7183
|
+
* @license lucide-react v0.576.0 - ISC
|
|
7184
|
+
*
|
|
7185
|
+
* This source code is licensed under the ISC license.
|
|
7186
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
7187
|
+
*/
|
|
7188
|
+
const __iconNode = [
|
|
7189
|
+
["path", { d: "m14.622 17.897-10.68-2.913", key: "vj2p1u" }],
|
|
7190
|
+
[
|
|
7191
|
+
"path",
|
|
7192
|
+
{
|
|
7193
|
+
d: "M18.376 2.622a1 1 0 1 1 3.002 3.002L17.36 9.643a.5.5 0 0 0 0 .707l.944.944a2.41 2.41 0 0 1 0 3.408l-.944.944a.5.5 0 0 1-.707 0L8.354 7.348a.5.5 0 0 1 0-.707l.944-.944a2.41 2.41 0 0 1 3.408 0l.944.944a.5.5 0 0 0 .707 0z",
|
|
7194
|
+
key: "18tc5c"
|
|
7195
|
+
}
|
|
7196
|
+
],
|
|
7197
|
+
[
|
|
7198
|
+
"path",
|
|
7199
|
+
{
|
|
7200
|
+
d: "M9 8c-1.804 2.71-3.97 3.46-6.583 3.948a.507.507 0 0 0-.302.819l7.32 8.883a1 1 0 0 0 1.185.204C12.735 20.405 16 16.792 16 15",
|
|
7201
|
+
key: "ytzfxy"
|
|
7202
|
+
}
|
|
7203
|
+
]
|
|
7204
|
+
];
|
|
7205
|
+
const Paintbrush = createLucideIcon("paintbrush", __iconNode);
|
|
7023
7206
|
function HomePage({ onAnalysisComplete }) {
|
|
7024
7207
|
const [selectedPath, setSelectedPath] = reactExports.useState("");
|
|
7025
7208
|
const [status, setStatus] = reactExports.useState("idle");
|
|
@@ -7044,22 +7227,22 @@ function HomePage({ onAnalysisComplete }) {
|
|
|
7044
7227
|
setErrorMsg(err instanceof Error ? err.message : "Error desconocido al analizar el proyecto");
|
|
7045
7228
|
}
|
|
7046
7229
|
}, [selectedPath, onAnalysisComplete]);
|
|
7047
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-full flex items-center justify-center p-
|
|
7048
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mx-auto w-
|
|
7049
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-
|
|
7050
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-text-secondary text-
|
|
7230
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-full flex items-center justify-center p-12", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "fade-in max-w-xl w-full text-center", children: [
|
|
7231
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mx-auto w-24 h-24 rounded-2xl bg-gradient-to-br from-accent-pink via-accent-blue to-accent-green flex items-center justify-center mb-8 pulse-glow shadow-lg shadow-accent-pink/10", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Paintbrush, { size: 48, className: "text-white" }) }),
|
|
7232
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-3xl font-bold text-text-primary mb-4 tracking-tight", children: "VTEX CSS Sanitizer" }),
|
|
7233
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-text-secondary text-base mb-10 leading-relaxed max-w-md mx-auto", children: [
|
|
7051
7234
|
"Analiza y limpia clases CSS y blockClass no utilizados en tu proyecto VTEX IO.",
|
|
7052
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
|
|
7235
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("br", { className: "mb-2" }),
|
|
7053
7236
|
"Selecciona la carpeta raíz de tu proyecto para comenzar."
|
|
7054
7237
|
] }),
|
|
7055
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-
|
|
7238
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [
|
|
7056
7239
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7057
7240
|
"button",
|
|
7058
7241
|
{
|
|
7059
7242
|
onClick: handleSelectFolder,
|
|
7060
|
-
className: "w-full group relative overflow-hidden rounded-
|
|
7061
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center gap-
|
|
7062
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-
|
|
7243
|
+
className: "w-full group relative overflow-hidden rounded-2xl border-2 border-dashed border-border hover:border-accent-blue transition-all duration-300 p-8 cursor-pointer bg-bg-secondary hover:bg-bg-card",
|
|
7244
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center gap-4", children: [
|
|
7245
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-14 h-14 rounded-full bg-bg-card group-hover:bg-accent-blue/10 flex items-center justify-center transition-colors duration-300", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FolderOpen, { className: "w-7 h-7 text-text-muted group-hover:text-accent-blue transition-colors", strokeWidth: 1.5 }) }),
|
|
7063
7246
|
selectedPath ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
7064
7247
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm text-accent-blue font-medium", children: "Carpeta seleccionada" }),
|
|
7065
7248
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs text-text-secondary font-mono bg-bg-input px-3 py-1.5 rounded-lg max-w-full truncate block", children: selectedPath })
|
|
@@ -7074,7 +7257,7 @@ function HomePage({ onAnalysisComplete }) {
|
|
|
7074
7257
|
"button",
|
|
7075
7258
|
{
|
|
7076
7259
|
onClick: handleAnalyze,
|
|
7077
|
-
className: "fade-in w-full py-
|
|
7260
|
+
className: "fade-in w-full py-4 px-8 rounded-xl bg-gradient-to-r from-accent-blue-btn to-accent-blue-btn-hover text-white font-semibold text-base tracking-wide hover:shadow-xl hover:shadow-accent-blue-btn/20 transition-all duration-300 hover:scale-[1.02] active:scale-[0.98]",
|
|
7078
7261
|
children: "🔍 Analizar Proyecto"
|
|
7079
7262
|
}
|
|
7080
7263
|
),
|
|
@@ -7109,7 +7292,7 @@ function AnalysisPage({ data, onGoToFix, onGoHome }) {
|
|
|
7109
7292
|
const isClean = !hasUnusedCss && !hasUnusedBlockClasses;
|
|
7110
7293
|
const totalIssues = data.unusedCss.length + data.unusedBlockClasses.length;
|
|
7111
7294
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "h-full flex flex-col overflow-hidden", children: [
|
|
7112
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "px-
|
|
7295
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "px-8 py-6 bg-bg-secondary border-b border-border", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-8", children: [
|
|
7113
7296
|
/* @__PURE__ */ jsxRuntimeExports.jsx(StatCard, { label: "Archivos JSON", value: data.stats.jsonFiles, color: "blue" }),
|
|
7114
7297
|
/* @__PURE__ */ jsxRuntimeExports.jsx(StatCard, { label: "Archivos CSS", value: data.stats.cssFiles, color: "blue" }),
|
|
7115
7298
|
/* @__PURE__ */ jsxRuntimeExports.jsx(StatCard, { label: "blockClass únicas", value: data.stats.uniqueBlockClasses, color: "green" }),
|
|
@@ -7123,39 +7306,39 @@ function AnalysisPage({ data, onGoToFix, onGoHome }) {
|
|
|
7123
7306
|
}
|
|
7124
7307
|
) })
|
|
7125
7308
|
] }) }),
|
|
7126
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto p-
|
|
7127
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-
|
|
7128
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-
|
|
7129
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-text-secondary text-
|
|
7309
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto p-8 space-y-10", children: isClean ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "fade-in text-center py-24", children: [
|
|
7310
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-6xl mb-6", children: "🎉" }),
|
|
7311
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-2xl font-bold text-accent-green mb-3", children: "¡Proyecto limpio!" }),
|
|
7312
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-text-secondary text-base", children: "No se encontraron clases CSS ni blockClass sin uso." })
|
|
7130
7313
|
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
7131
7314
|
hasUnusedCss && /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "fade-in", children: [
|
|
7132
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-
|
|
7133
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "w-
|
|
7134
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("h3", { className: "text-
|
|
7315
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 mb-4", children: [
|
|
7316
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "w-4 h-4 rounded-full bg-accent-red shadow-[0_0_10px_rgba(233,69,96,0.4)]" }),
|
|
7317
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("h3", { className: "text-base font-semibold text-text-primary tracking-wide", children: [
|
|
7135
7318
|
"Sufijos CSS sin blockClass (",
|
|
7136
7319
|
data.unusedCss.length,
|
|
7137
7320
|
")"
|
|
7138
7321
|
] })
|
|
7139
7322
|
] }),
|
|
7140
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-
|
|
7323
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-sm text-text-muted mb-6 leading-relaxed", children: [
|
|
7141
7324
|
"Estas reglas CSS usan sufijos que no corresponden a ninguna ",
|
|
7142
7325
|
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "text-text-secondary", children: "blockClass" }),
|
|
7143
7326
|
" declarada. Pueden ser eliminadas con el comando Fix."
|
|
7144
7327
|
] }),
|
|
7145
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-
|
|
7328
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4", children: data.unusedCss.map((item) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7146
7329
|
"div",
|
|
7147
7330
|
{
|
|
7148
|
-
className: "group rounded-
|
|
7149
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-
|
|
7150
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-accent-red text-xs font-bold
|
|
7331
|
+
className: "group rounded-2xl bg-bg-card border border-border hover:border-accent-red/40 transition-colors p-6 shadow-sm",
|
|
7332
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-4", children: [
|
|
7333
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "px-2.5 py-1 rounded bg-accent-red/10 text-accent-red text-xs font-bold shrink-0 uppercase tracking-widest", children: "CSS" }),
|
|
7151
7334
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
7152
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-
|
|
7335
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-base font-mono text-text-primary font-medium mb-1", children: [
|
|
7153
7336
|
"--",
|
|
7154
7337
|
item.suffix
|
|
7155
7338
|
] }),
|
|
7156
7339
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-2 space-y-1", children: [
|
|
7157
7340
|
item.locations.slice(0, 3).map((loc, i) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs text-text-muted", children: [
|
|
7158
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7341
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(FileCodeCorner, { className: "w-3 h-3 shrink-0", strokeWidth: 2 }),
|
|
7159
7342
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: loc.filePath }),
|
|
7160
7343
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-text-muted/60 font-mono text-[10px]", children: loc.selector })
|
|
7161
7344
|
] }, i)),
|
|
@@ -7172,34 +7355,34 @@ function AnalysisPage({ data, onGoToFix, onGoHome }) {
|
|
|
7172
7355
|
)) })
|
|
7173
7356
|
] }),
|
|
7174
7357
|
hasUnusedBlockClasses && /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { className: "fade-in", children: [
|
|
7175
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-
|
|
7176
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "w-
|
|
7177
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("h3", { className: "text-
|
|
7358
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 mb-4", children: [
|
|
7359
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "w-4 h-4 rounded-full bg-accent-yellow shadow-[0_0_10px_rgba(255,208,115,0.4)]" }),
|
|
7360
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("h3", { className: "text-base font-semibold text-text-primary tracking-wide", children: [
|
|
7178
7361
|
"blockClass sin CSS (",
|
|
7179
7362
|
data.unusedBlockClasses.length,
|
|
7180
7363
|
")"
|
|
7181
7364
|
] })
|
|
7182
7365
|
] }),
|
|
7183
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-
|
|
7366
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-sm text-text-muted mb-6 leading-relaxed", children: [
|
|
7184
7367
|
"Estas ",
|
|
7185
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "text-text-secondary", children: "blockClass" }),
|
|
7368
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "text-text-secondary tracking-wide", children: "blockClass" }),
|
|
7186
7369
|
" están declaradas pero no tienen reglas CSS asociadas."
|
|
7187
7370
|
] }),
|
|
7188
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-
|
|
7371
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-4", children: data.unusedBlockClasses.map((item) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7189
7372
|
"div",
|
|
7190
7373
|
{
|
|
7191
|
-
className: "group rounded-
|
|
7192
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-
|
|
7193
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-accent-yellow text-xs font-bold
|
|
7374
|
+
className: "group rounded-2xl bg-bg-card border border-border hover:border-accent-yellow/40 transition-colors p-6 shadow-sm",
|
|
7375
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-4", children: [
|
|
7376
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "px-2.5 py-1 rounded bg-accent-yellow/10 text-accent-yellow text-xs font-bold shrink-0 uppercase tracking-widest", children: "JSON" }),
|
|
7194
7377
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
7195
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-
|
|
7378
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-base font-mono text-text-primary font-medium mb-1", children: [
|
|
7196
7379
|
'"',
|
|
7197
7380
|
item.blockClass,
|
|
7198
7381
|
'"'
|
|
7199
7382
|
] }),
|
|
7200
7383
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-2 space-y-1", children: [
|
|
7201
7384
|
item.locations.slice(0, 3).map((loc, i) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs text-text-muted", children: [
|
|
7202
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7385
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(FileCodeCorner, { className: "w-3 h-3 shrink-0", strokeWidth: 2 }),
|
|
7203
7386
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: loc.filePath }),
|
|
7204
7387
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-text-muted/60 text-[10px]", children: [
|
|
7205
7388
|
"bloque: ",
|
|
@@ -7219,13 +7402,13 @@ function AnalysisPage({ data, onGoToFix, onGoHome }) {
|
|
|
7219
7402
|
)) })
|
|
7220
7403
|
] })
|
|
7221
7404
|
] }) }),
|
|
7222
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "px-
|
|
7405
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "px-8 py-5 bg-bg-secondary border-t border-border flex items-center gap-4", children: [
|
|
7223
7406
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7224
7407
|
"button",
|
|
7225
7408
|
{
|
|
7226
7409
|
onClick: onGoHome,
|
|
7227
|
-
className: "px-
|
|
7228
|
-
children: "←
|
|
7410
|
+
className: "px-5 py-3 rounded-xl text-sm font-medium text-text-secondary hover:text-text-primary hover:bg-bg-card transition-colors border border-border",
|
|
7411
|
+
children: "← Volver al inicio"
|
|
7229
7412
|
}
|
|
7230
7413
|
),
|
|
7231
7414
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1" }),
|
|
@@ -7233,8 +7416,8 @@ function AnalysisPage({ data, onGoToFix, onGoHome }) {
|
|
|
7233
7416
|
"button",
|
|
7234
7417
|
{
|
|
7235
7418
|
onClick: onGoToFix,
|
|
7236
|
-
className: "px-
|
|
7237
|
-
children: "🛠️ Limpiar CSS"
|
|
7419
|
+
className: "px-8 py-3.5 rounded-xl bg-gradient-to-r from-accent-blue-btn to-accent-blue-btn-hover text-white font-semibold text-base tracking-wide hover:shadow-xl hover:shadow-accent-blue-btn/20 transition-all duration-300 hover:scale-[1.02] active:scale-[0.98]",
|
|
7420
|
+
children: "🛠️ Proceder a Limpiar CSS"
|
|
7238
7421
|
}
|
|
7239
7422
|
)
|
|
7240
7423
|
] })
|
|
@@ -7250,9 +7433,9 @@ function StatCard({
|
|
|
7250
7433
|
green: "text-accent-green",
|
|
7251
7434
|
red: "text-accent-red"
|
|
7252
7435
|
};
|
|
7253
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center", children: [
|
|
7254
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-
|
|
7255
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-[
|
|
7436
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center bg-bg-card py-4 px-6 rounded-2xl border border-border shadow-sm", children: [
|
|
7437
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: `text-2xl font-bold font-mono mb-1 ${colorMap[color]}`, children: value }),
|
|
7438
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-[11px] text-text-muted uppercase tracking-widest font-semibold", children: label })
|
|
7256
7439
|
] });
|
|
7257
7440
|
}
|
|
7258
7441
|
function FixPage({ projectPath, onBack, onGoHome }) {
|
|
@@ -7343,7 +7526,7 @@ function FixPage({ projectPath, onBack, onGoHome }) {
|
|
|
7343
7526
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl font-bold text-accent-green mb-2", children: "¡Limpieza completada!" }),
|
|
7344
7527
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-text-secondary text-sm mb-6", children: [
|
|
7345
7528
|
"Se eliminaron ",
|
|
7346
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-accent-
|
|
7529
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-accent-blue font-bold font-mono", children: deletedCount }),
|
|
7347
7530
|
" reglas CSS de tu proyecto."
|
|
7348
7531
|
] }),
|
|
7349
7532
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-3", children: [
|
|
@@ -7359,7 +7542,7 @@ function FixPage({ projectPath, onBack, onGoHome }) {
|
|
|
7359
7542
|
"button",
|
|
7360
7543
|
{
|
|
7361
7544
|
onClick: onGoHome,
|
|
7362
|
-
className: "w-full px-6 py-2.5 rounded-xl bg-gradient-to-r from-accent-
|
|
7545
|
+
className: "w-full px-6 py-2.5 rounded-xl bg-gradient-to-r from-accent-blue-btn to-accent-blue-btn-hover text-white font-semibold text-sm hover:shadow-lg hover:shadow-accent-blue-btn/25 transition-all duration-300",
|
|
7363
7546
|
children: "🏠 Analizar otro proyecto"
|
|
7364
7547
|
}
|
|
7365
7548
|
)
|
|
@@ -7382,20 +7565,20 @@ function FixPage({ projectPath, onBack, onGoHome }) {
|
|
|
7382
7565
|
] }) });
|
|
7383
7566
|
}
|
|
7384
7567
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "h-full flex flex-col overflow-hidden", children: [
|
|
7385
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "px-
|
|
7386
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-
|
|
7387
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-
|
|
7568
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "px-8 py-5 bg-bg-secondary border-b border-border flex items-center gap-5", children: [
|
|
7569
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-base font-semibold text-text-primary tracking-wide", children: "Reglas candidatas a eliminar" }),
|
|
7570
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-sm text-text-muted font-mono bg-bg-card px-3 py-1 rounded-md border border-border", children: [
|
|
7388
7571
|
selectedIds.size,
|
|
7389
7572
|
" de ",
|
|
7390
7573
|
candidates.length,
|
|
7391
7574
|
" seleccionadas"
|
|
7392
7575
|
] }),
|
|
7393
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ml-auto flex items-center gap-
|
|
7576
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ml-auto flex items-center gap-3", children: [
|
|
7394
7577
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7395
7578
|
"button",
|
|
7396
7579
|
{
|
|
7397
7580
|
onClick: selectAll,
|
|
7398
|
-
className: "px-
|
|
7581
|
+
className: "px-4 py-2 rounded-lg text-sm text-accent-blue hover:bg-bg-card transition-colors border border-border font-medium",
|
|
7399
7582
|
children: "Seleccionar todas"
|
|
7400
7583
|
}
|
|
7401
7584
|
),
|
|
@@ -7403,77 +7586,77 @@ function FixPage({ projectPath, onBack, onGoHome }) {
|
|
|
7403
7586
|
"button",
|
|
7404
7587
|
{
|
|
7405
7588
|
onClick: deselectAll,
|
|
7406
|
-
className: "px-
|
|
7589
|
+
className: "px-4 py-2 rounded-lg text-sm text-text-muted hover:bg-bg-card transition-colors border border-border font-medium",
|
|
7407
7590
|
children: "Deseleccionar todas"
|
|
7408
7591
|
}
|
|
7409
7592
|
)
|
|
7410
7593
|
] })
|
|
7411
7594
|
] }),
|
|
7412
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto p-
|
|
7595
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto p-8 space-y-8", children: candidates.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "fade-in text-center py-16", children: [
|
|
7413
7596
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-5xl mb-4", children: "🎉" }),
|
|
7414
7597
|
/* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl font-bold text-accent-green mb-2", children: "¡Sin candidatos!" }),
|
|
7415
7598
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-text-secondary text-sm", children: "No hay reglas CSS para eliminar." })
|
|
7416
7599
|
] }) : Object.entries(groupedByFile).map(([file, rules]) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "fade-in", children: [
|
|
7417
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-
|
|
7418
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7419
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-
|
|
7420
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-
|
|
7600
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 mb-3", children: [
|
|
7601
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(FileCodeCorner, { className: "w-5 h-5 text-text-muted/80", strokeWidth: 1.5 }),
|
|
7602
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm font-mono text-text-secondary font-medium", children: file }),
|
|
7603
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-xs text-text-muted bg-bg-card px-2 py-0.5 rounded-full border border-border/50", children: [
|
|
7421
7604
|
rules.length,
|
|
7422
7605
|
" regla",
|
|
7423
7606
|
rules.length > 1 ? "s" : ""
|
|
7424
7607
|
] })
|
|
7425
7608
|
] }),
|
|
7426
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-
|
|
7609
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-3", children: rules.map((rule) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7427
7610
|
"div",
|
|
7428
7611
|
{
|
|
7429
|
-
className: `rounded-
|
|
7430
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-
|
|
7612
|
+
className: `rounded-2xl border transition-all duration-200 ${selectedIds.has(rule.id) ? "bg-accent-red/5 border-accent-red/30" : "bg-bg-input border-border hover:border-border-active/30"}`,
|
|
7613
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-4 p-5", children: [
|
|
7431
7614
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7432
7615
|
"input",
|
|
7433
7616
|
{
|
|
7434
7617
|
type: "checkbox",
|
|
7435
7618
|
checked: selectedIds.has(rule.id),
|
|
7436
7619
|
onChange: () => toggleRule(rule.id),
|
|
7437
|
-
className: "mt-
|
|
7620
|
+
className: "mt-1 w-5 h-5 rounded"
|
|
7438
7621
|
}
|
|
7439
7622
|
),
|
|
7440
7623
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
7441
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-
|
|
7624
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-base font-mono text-text-primary truncate", children: rule.selector }),
|
|
7442
7625
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7443
7626
|
"button",
|
|
7444
7627
|
{
|
|
7445
7628
|
onClick: () => toggleExpand(rule.id),
|
|
7446
|
-
className: "text-
|
|
7629
|
+
className: "text-xs text-accent-blue hover:underline mb-1 mt-2 inline-block font-medium",
|
|
7447
7630
|
children: expandedIds.has(rule.id) ? "Ocultar código ▲" : "Ver código ▼"
|
|
7448
7631
|
}
|
|
7449
7632
|
),
|
|
7450
7633
|
expandedIds.has(rule.id) && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "code-block mt-2 text-text-secondary", children: rule.ruleText })
|
|
7451
7634
|
] }),
|
|
7452
|
-
selectedIds.has(rule.id) && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-
|
|
7635
|
+
selectedIds.has(rule.id) && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs px-2 py-1 rounded bg-accent-red/10 text-accent-red font-bold shrink-0 mt-0.5 uppercase tracking-wider", children: "SE ELIMINARÁ" })
|
|
7453
7636
|
] })
|
|
7454
7637
|
},
|
|
7455
7638
|
rule.id
|
|
7456
7639
|
)) })
|
|
7457
7640
|
] }, file)) }),
|
|
7458
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "px-
|
|
7641
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "px-8 py-5 bg-bg-secondary border-t border-border flex items-center gap-4", children: [
|
|
7459
7642
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7460
7643
|
"button",
|
|
7461
7644
|
{
|
|
7462
7645
|
onClick: onBack,
|
|
7463
|
-
className: "px-
|
|
7464
|
-
children: "← Volver"
|
|
7646
|
+
className: "px-5 py-3 rounded-xl text-sm font-medium text-text-secondary hover:text-text-primary hover:bg-bg-card transition-colors border border-border",
|
|
7647
|
+
children: "← Volver atrás"
|
|
7465
7648
|
}
|
|
7466
7649
|
),
|
|
7467
7650
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1" }),
|
|
7468
|
-
status === "applying" ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-
|
|
7469
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-
|
|
7470
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-
|
|
7651
|
+
status === "applying" ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
7652
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-5 h-5 rounded-full border-2 border-accent-blue border-t-transparent animate-spin" }),
|
|
7653
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-base text-text-secondary font-medium", children: "Aplicando cambios..." })
|
|
7471
7654
|
] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
7472
7655
|
"button",
|
|
7473
7656
|
{
|
|
7474
7657
|
onClick: handleApplyFix,
|
|
7475
7658
|
disabled: selectedIds.size === 0,
|
|
7476
|
-
className: `px-
|
|
7659
|
+
className: `px-8 py-3.5 rounded-xl font-semibold text-base transition-all duration-300 ${selectedIds.size > 0 ? "bg-gradient-to-r from-accent-blue-btn to-accent-blue-btn-hover text-white hover:shadow-xl hover:shadow-accent-blue-btn/20 hover:scale-[1.02] active:scale-[0.98]" : "bg-bg-card border border-border text-text-muted cursor-not-allowed"}`,
|
|
7477
7660
|
children: [
|
|
7478
7661
|
"🗑️ Eliminar ",
|
|
7479
7662
|
selectedIds.size,
|
|
@@ -7506,10 +7689,10 @@ function App() {
|
|
|
7506
7689
|
setCurrentPage("analysis");
|
|
7507
7690
|
}, []);
|
|
7508
7691
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "h-full flex flex-col bg-bg-primary", children: [
|
|
7509
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("header", { className: "flex items-center gap-
|
|
7510
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-
|
|
7511
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-
|
|
7512
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "text-
|
|
7692
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("header", { className: "flex items-center gap-4 px-8 py-4 bg-bg-secondary border-b border-border drag-region", children: [
|
|
7693
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 no-drag", children: [
|
|
7694
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-9 h-9 rounded-lg bg-gradient-to-br from-accent-pink to-accent-blue flex items-center justify-center shadow-md", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Paintbrush, { size: 18, className: "text-white" }) }),
|
|
7695
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "text-lg font-semibold text-text-primary tracking-wide", children: "VTEX CSS Sanitizer" })
|
|
7513
7696
|
] }),
|
|
7514
7697
|
projectPath && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ml-auto text-xs text-text-muted font-mono truncate max-w-[400px] no-drag", children: projectPath })
|
|
7515
7698
|
] }),
|