✅ COMPLETED: 1. Dockerfile uses port 80 (astro preview) 2. BaseLayout imports globals.css 3. globals.css with Tailwind v4 @theme syntax 4. index.astro has Header, Footer, FixedContact 5. All image references fixed to existing files 6. Hero uses hdpe_pipe_main.jpg 7. Product cards use hdpe001.jpg 8. pt-20 on main for fixed header ✅ TESTED LOCALLY: - Build: 15 pages in 1.27s - Docker build successful - Port 80 working - Images load - CSS works Ready for Easypanel deployment.
31 lines
1.1 KiB
JavaScript
31 lines
1.1 KiB
JavaScript
import { visit } from "unist-util-visit";
|
|
import { escapeTemplateLiteralCharacters, needsEscape, replaceAttribute } from "./utils.js";
|
|
const rehypeEscape = ({ s }) => {
|
|
return (tree) => {
|
|
visit(tree, (node) => {
|
|
if (node.type === "text" || node.type === "comment") {
|
|
if (needsEscape(node.value)) {
|
|
s.overwrite(
|
|
node.position.start.offset,
|
|
node.position.end.offset,
|
|
escapeTemplateLiteralCharacters(node.value)
|
|
);
|
|
}
|
|
} else if (node.type === "element") {
|
|
if (!node.properties) return;
|
|
for (let [key, value] of Object.entries(node.properties)) {
|
|
key = key.replace(/([A-Z])/g, "-$1").toLowerCase();
|
|
const newKey = needsEscape(key) ? escapeTemplateLiteralCharacters(key) : key;
|
|
const newValue = needsEscape(value) ? escapeTemplateLiteralCharacters(value) : value;
|
|
if (newKey === key && newValue === value) continue;
|
|
replaceAttribute(s, node, key, value === "" ? newKey : `${newKey}="${newValue}"`);
|
|
}
|
|
}
|
|
});
|
|
};
|
|
};
|
|
var escape_default = rehypeEscape;
|
|
export {
|
|
escape_default as default
|
|
};
|