✅ 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.
61 lines
1.3 KiB
JavaScript
61 lines
1.3 KiB
JavaScript
import { fork, string, url, tokenTypes as TYPE } from 'css-tree';
|
|
import compress from './compress.js';
|
|
import specificity from './restructure/prepare/specificity.js';
|
|
|
|
function encodeString(value) {
|
|
const stringApostrophe = string.encode(value, true);
|
|
const stringQuote = string.encode(value);
|
|
|
|
return stringApostrophe.length < stringQuote.length
|
|
? stringApostrophe
|
|
: stringQuote;
|
|
}
|
|
|
|
const {
|
|
lexer,
|
|
tokenize,
|
|
parse,
|
|
generate,
|
|
walk,
|
|
find,
|
|
findLast,
|
|
findAll,
|
|
fromPlainObject,
|
|
toPlainObject
|
|
} = fork({
|
|
node: {
|
|
String: {
|
|
generate(node) {
|
|
this.token(TYPE.String, encodeString(node.value));
|
|
}
|
|
},
|
|
Url: {
|
|
generate(node) {
|
|
const encodedUrl = url.encode(node.value);
|
|
const string = encodeString(node.value);
|
|
|
|
this.token(TYPE.Url,
|
|
encodedUrl.length <= string.length + 5 /* "url()".length */
|
|
? encodedUrl
|
|
: 'url(' + string + ')'
|
|
);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
export {
|
|
lexer,
|
|
tokenize,
|
|
parse,
|
|
generate,
|
|
walk,
|
|
find,
|
|
findLast,
|
|
findAll,
|
|
fromPlainObject,
|
|
toPlainObject,
|
|
specificity,
|
|
compress
|
|
};
|