| this_file | THEME.md |
|---|
Generated MkDocs configurations coexist with pydocmk generator inputs for both API sites. Keep both sources aligned when changing shared asset configuration.
Documentation-first pages use local MaterialX navigation and local search when present. Archives, internal configs and source mirrors are not separate live sites.
| Configuration | Role | Destination |
|---|---|---|
src_docs/mkdocs.yml → .build/mkdocs.yml |
current captured/enriched source reference | .build/site stage → docs/ locally; deployment separate |
fontlab7/mkdocs.yml |
historical FontLab 7 generator | retained for recovery |
pythonqt/mkdocs.yml |
historical PythonQt generator | retained for recovery |
archive/fontlab7-site.tar.gz |
immutable previous site snapshot | versioned archive and legacy route redirects |
Run ./build.sh for the current source reference, or ./build.sh --offline
with the locked dependencies already cached. API source hashes are pinned in
api-sources.lock.json; after reviewing producer changes, explicitly use
--update-source-lock. Normal builds fail when source bytes differ.
The rebuilt root uses one MaterialX navigation/search owner and the four shared
fltheme26 assets. It does not add a global FontLab menu/footer. The build copies its verified local artifact into docs/. Keep remote
publication gated on the complete deployment checks. Local generation and browser receipts do not establish publication.
The browser layer is published at https://i.fontlab.com/fltheme26/1.0.0/.
Load CSS in this order: components.css, then theme.css. Load scripts in this
order: basecoat.js, then theme.js. Do not duplicate bundles or edit generated
CDN CSS locally. The four assets are shared across consumers; compatible fixes
are currently published in place under 1.0.0/, not as immutable snapshots.
Keep theme.name: materialx, native navigation/search markup, the search plugin,
and generated search/search_index.json. The shared bridge defaults documentation
pages to MaterialX menu/search when those targets exist. In the global bar, one
loupe sits left of one hamburger. The local drawer opens on the right with the
palette at the bottom. Below 76.25em, branding scrolls away and compact controls
dock when either control serves the local site. Escape closes local panels and
returns focus. Plain static/Webflow pages without MaterialX targets keep global
controls.
Choose ownership independently with mobile-menu="materialx|global" and
mobile-search="materialx|global" on <fontlab-menu> or <vexy-menu>. These
strings describe the allowed alternatives: use one value, not the literal pipe.
The corresponding config properties are mobileMenu and mobileSearch; explicit
attributes win. Search ownership applies at desktop widths too. Local search uses
the documentation index; global search uses the brand search service.
Reading shortcuts are Right / Alt+Right → next navigation page, Alt+Left → previous navigation page, and Left → browser history back. Generated head rel links take priority over primary-nav order. There is no wraparound. Editable fields, widgets, open dialogs, selected text and other modifiers retain their normal behavior.
Wrap Basecoat and daisyUI markup in a separate .fltheme-components container.
Basecoat keeps its classes; prefix every daisyUI component class with du-.
MaterialX keeps md- classes. Enable attr_list and md_in_html when using Markdown
attributes and markdown="1" inside HTML containers. The host retains its fonts
and theme picker; wrappers may opt into data-fltheme-mode="light" or "dark".
Call FLTheme.refresh() after manual DOM replacement; native instant navigation
is already handled. Do not load another Basecoat runtime.
The September 2026 shared changes cover:
- One global/local hamburger and one search control, right-side local navigation, responsive docking, desktop local search and safe focus restoration.
- Navigation/history arrow keys with guards for interactive controls.
- Consistent form labels, fields, checkboxes, radios, switches, selects and sliders.
- Shared keycaps, tabs, tooltips, captions, alerts, pagination, drawers, skeletons, progress indicators, mockup frames, chart refresh, countdowns and filter reset.
- Standard MaterialX/Basecoat/daisyUI buttons: 2.5rem height, 1rem horizontal padding, .875rem text, weight 600 and 1.25rem line height. Explicit size/shape variants remain available.
- Admonitions have no border or background. Icon, heading and body use a semantic color; body text aligns with the heading. No viewport-based article-end padding.
- Vexy mobile search uses panel background/text colours, so a transparent global header does not make an explicitly opaque search panel transparent.
The optional Marketing/styleguide editorial layer is distinct from the scoped component bundle. Do not add its legacy vendor CSS to an otherwise native site without also adopting and testing its companion template and theme controls.
For a shared CSS/runtime fix, change fontlab-www-docstheme, build it, run its
relevant tests, stage the CDN, push, wait for Pages, and verify live asset hashes.
For a site-specific config/template change, use this repository’s native build and
publish route, then inspect its final output. Cached Webflow/static overlays can
replace intermediate HTML, so checking a MkDocs build alone is insufficient.
Check desktop and mobile, light and dark, local/global ownership, drawer/search open-close-focus behavior, key navigation and at least one component interaction. Shared assets must load once. Keep unrelated working-tree edits, content, branding, URLs, downloadable payloads and deployment credentials untouched.