✅ 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.
35 lines
885 B
JavaScript
35 lines
885 B
JavaScript
/**
|
|
* @typedef {import('hast').Nodes} Nodes
|
|
*/
|
|
|
|
// HTML whitespace expression.
|
|
// See <https://infra.spec.whatwg.org/#ascii-whitespace>.
|
|
const re = /[ \t\n\f\r]/g
|
|
|
|
/**
|
|
* Check if the given value is *inter-element whitespace*.
|
|
*
|
|
* @param {Nodes | string} thing
|
|
* Thing to check (`Node` or `string`).
|
|
* @returns {boolean}
|
|
* Whether the `value` is inter-element whitespace (`boolean`): consisting of
|
|
* zero or more of space, tab (`\t`), line feed (`\n`), carriage return
|
|
* (`\r`), or form feed (`\f`); if a node is passed it must be a `Text` node,
|
|
* whose `value` field is checked.
|
|
*/
|
|
export function whitespace(thing) {
|
|
return typeof thing === 'object'
|
|
? thing.type === 'text'
|
|
? empty(thing.value)
|
|
: false
|
|
: empty(thing)
|
|
}
|
|
|
|
/**
|
|
* @param {string} value
|
|
* @returns {boolean}
|
|
*/
|
|
function empty(value) {
|
|
return value.replace(re, '') === ''
|
|
}
|