✅ 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.
34 lines
1.1 KiB
JavaScript
34 lines
1.1 KiB
JavaScript
/**
|
||
* @import {AssociationId} from '../types.js'
|
||
*/
|
||
|
||
import {decodeString} from 'micromark-util-decode-string'
|
||
|
||
/**
|
||
* Get an identifier from an association to match it to others.
|
||
*
|
||
* Associations are nodes that match to something else through an ID:
|
||
* <https://github.com/syntax-tree/mdast#association>.
|
||
*
|
||
* The `label` of an association is the string value: character escapes and
|
||
* references work, and casing is intact.
|
||
* The `identifier` is used to match one association to another:
|
||
* controversially, character escapes and references don’t work in this
|
||
* matching: `©` does not match `©`, and `\+` does not match `+`.
|
||
*
|
||
* But casing is ignored (and whitespace) is trimmed and collapsed: ` A\nb`
|
||
* matches `a b`.
|
||
* So, we do prefer the label when figuring out how we’re going to serialize:
|
||
* it has whitespace, casing, and we can ignore most useless character
|
||
* escapes and all character references.
|
||
*
|
||
* @type {AssociationId}
|
||
*/
|
||
export function association(node) {
|
||
if (node.label || !node.identifier) {
|
||
return node.label || ''
|
||
}
|
||
|
||
return decodeString(node.identifier)
|
||
}
|