FNLLA Web is a standalone open-source UI kit for static and server-rendered websites. It packages reusable layout, component and interaction patterns without coupling them to any specific client, brand or CMS.
The supported browser runtime contract is intentionally small:
assets/css/fnlla-web.cssassets/js/fnlla-web.jsassets/icons/
That runtime can be consumed directly from the repository or copied as the generated runtime-only handoff under dist/fnlla-web/.
FNLLA Web is produced, maintained and distributed by TechAyo LTD (techayo.co.uk).
Copyright (c) 2026 TechAyo LTD (techayo.co.uk). Released under the MIT License.
The name FNLLA comes from Finella, and more specifically from Finella Gardens in Dundee, UK. That location is the origin point of the FNLLA Web name.
FNLLA Web is open-source software released under the MIT License by TechAyo LTD (techayo.co.uk).
Use of the source code is governed by LICENSE.md.
Support, maintenance and release-cadence expectations are documented in SUPPORT.md.
Trademark and branding boundaries for the FNLLA product names and marks are documented in TRADEMARKS.md.
The current repository identity is defined by state files that should stay aligned:
MANIFEST.jsonREADME.mdVERSIONLICENSE.mdSUPPORT.mdTRADEMARKS.md
Repository participation and disclosure rules also rely on:
CODE_OF_CONDUCT.mdSECURITY.md.github/CONTRIBUTING.md.github/RELEASE_TEMPLATE.md.github/SUPPORT.md
Repository identity assets also rely on:
docs/assets/brand/fnlla-web.svgdocs/assets/brand/fnlla-web-dark.svgdocs/assets/brand/fnlla-github.svgdocs/assets/brand/fnlla-github.png
Use FNLLA Web when a project needs:
- a lightweight front-end starter without a build step
- reusable marketing and service-oriented components
- a token-based design system that can be re-themed quickly
- simple JavaScript for common UI interactions
Anyone may use FNLLA Web under the MIT License, including for self-service and commercial work.
TechAyo LTD does not promise support, maintenance, SLA coverage or a fixed release cadence for third-party projects built on FNLLA Web.
Public updates are shipped when TechAyo LTD decides they are appropriate.
Use SUPPORT.md for the exact support boundary and TRADEMARKS.md for branding rules.
Use the browser docs based on the question you are answering:
docs/index.htmlfor the overview and reading orderdocs/contract.htmlfor packaging, handoff, hooks and runtime-boundary rulesdocs/layout.htmlfor page shells, containers, grids and anti-patternsdocs/components.htmlfor reference markup, component demos and form patternsdocs/sections.htmlfor composable page sectionsdocs/utilities.htmlfor utilities, helper classes and the shipped local FNLLA Icons cataloguedocs/guides.htmlfor the guide index and reading orderdocs/component-classification.htmlfor component-selection rulesdocs/team-usage-and-maintenance.htmlfor workflow and maintenance guidance
Use the docs for detailed examples. README stays intentionally slimmer and focuses on the repository boundary, runtime contract and maintainer workflow.
- Copy the entire
fnlla-webfolder into the new project, or use the generated runtime-only export underdist/fnlla-web/when you want a lean handoff. - Keep the published
assets/runtime tree together so relative paths stay simple. - Link the runtime files from the page.
- Use the component patterns from
docs/components.htmlanddocs/sections.htmlrather than rebuilding examples from scratch. - If you maintain the framework itself, edit source files under
src/and republish before shipping changes.
The framework runs as plain static HTML, CSS and JavaScript. No npm, Composer, bundler or build step is required.
Basic runtime includes:
<link rel="stylesheet" href="fnlla-web/assets/css/fnlla-web.css">
<script src="fnlla-web/assets/js/fnlla-web.js"></script>If the framework files sit at the site root instead, use assets/css/fnlla-web.css and assets/js/fnlla-web.js.
The stable browser API lives under window.FNLLAWEB.
window.FNLLAWEB.init(root)performs idempotent initialization for HTML injected after first page load.window.FNLLAWEB.setTheme(theme, target)applies the documenteddefaultordarktheme tobodyby default, or to a specific wrapper when a selector or element is provided.window.FNLLAWEB.getDocumentTitle(),window.FNLLAWEB.getDocumentTitleConfig(),window.FNLLAWEB.syncDocumentTitle(config)andwindow.FNLLAWEB.setDocumentTitle(config)manage professional browser-tab titles from declarative HTML metadata or dynamic runtime state.window.FNLLAWEB.getConsentState(),window.FNLLAWEB.hasConsent(category),window.FNLLAWEB.openConsentSettings(),window.FNLLAWEB.acceptConsent(),window.FNLLAWEB.rejectConsent(),window.FNLLAWEB.saveConsent(state)andwindow.FNLLAWEB.resetConsent()manage the documented first-party consent cookie flow.window.FNLLAWEB.showToast(target)and the matching hide helper support non-blocking notification flows.window.FNLLAWEB.showOffcanvas(target)and the matching hide helper support side-panel workflows.- Modal, dropdown, popover, tooltip and scrollspy helpers are documented in
docs/contract.html.
The helper contract is intentionally small. For the full supported surface, use docs/contract.html as the stable reference.
FNLLA Web ships a branded internal icon layer called FNLLA Icons under assets/icons/.
Important local paths:
assets/icons/sprite.svgassets/icons/search.svgassets/icons/NOTICE.mdassets/icons/LICENSE
Operational rules:
- do not load icons from external hosts such as
lucide.dev,jsdelivr,unpkgor other CDNs - keep icon usage local and offline
- use
docs/utilities.html#utility-iconswhen you need to browse the shipped set
Use the repository-level GitHub templates when work moves from implementation into maintenance:
- bug reports for runtime, docs or browser regressions
- docs/runtime parity reports when the shipped contract and demo surface drift apart
- feature proposals when additive capability needs explicit scope and runtime impact
- the pull request template for runtime, docs, dist and accessibility confirmation
- the contributing and security guidance for repository workflow, disclosure and business-boundary questions
For releases, keep the flow lightweight and repeatable:
- Align
README.md,VERSION,LICENSE.md,SUPPORT.mdandTRADEMARKS.md. - Publish runtime files and generated docs.
- Validate runtime assets, docs parity and browser behavior.
- Publish the release commit to
main. - Create the version tag and GitHub release notes using
.github/RELEASE_TEMPLATE.md. - Open follow-up work in the next milestone when cleanup or regression hardening remains.
The repository root is the maintainer workspace. Generated outputs should not be treated as hand-authored sources.
The docs browser behavior bundle under docs/assets/docs.js is generated during publish from readable source modules under src/docs/js/.
Authoritative maintainer scripts:
scripts/fnlla-web-manifest.mjsdefines source ordering, docs pages and the runtime export contract.scripts/publish-fnlla-web.mjsrepublishes runtime files, rebuilds generated guide HTML and refreshesdist/fnlla-web/.scripts/build-guides.mjsturns maintainer-authored Markdown guides into published HTML pages.scripts/validate-fnlla-web.mjschecks repository structure, docs sync, runtime export generation and release metadata.scripts/test-fnlla-web-browser.mjsruns the real browser smoke test against the published runtime.scripts/test-fnlla-web-browser-matrix.mjsreplays the smoke flow across every detected supported local browser, including Firefox when available..github/CONTRIBUTING.mddefines contribution expectations for this maintainer-led public repository.CODE_OF_CONDUCT.mddefines the professional behavior standard for repository collaboration.SECURITY.mddefines the private vulnerability reporting route and response expectations.SUPPORT.mddefines the no-SLA support boundary and release-cadence expectations for third-party use.TRADEMARKS.mddefines the branding and endorsement boundary for the FNLLA product names and marks..github/SUPPORT.mdroutes support, licensing and repository-governance questions.
Recommended maintainer sequence:
node .\scripts\publish-fnlla-web.mjs
node .\scripts\test-fnlla-web-browser.mjs
node .\scripts\validate-fnlla-web.mjsUse the browser matrix when you want a broader local sweep:
node .\scripts\test-fnlla-web-browser-matrix.mjsTreat these as public, supported outputs:
assets/css/fnlla-web.cssassets/js/fnlla-web.jsassets/icons/dist/fnlla-web/
Treat these as maintainer-only internals:
src/src/docs/js/scripts/docs/guides/*.mddocs/assets/docs.cssdocs/assets/docs.js- the docs shell around the runtime demos
The docs shell is documentation-specific, but component demos should still render from the same shared runtime shipped in assets/css/fnlla-web.css and assets/js/fnlla-web.js.
- Docs:
docs/index.html,docs/contract.html,docs/layout.html,docs/components.html,docs/sections.html,docs/utilities.html,docs/guides.html - Component classification guide:
docs/component-classification.html - Team usage and maintenance guide:
docs/team-usage-and-maintenance.html - Docs stylesheet:
docs/assets/docs.cssfor documentation-only shell and presentation helpers around the shared runtime - Docs behavior bundle:
docs/assets/docs.jsfor documentation-only navigation, theme-toggle, code-highlighting and icon-catalogue behavior - Brand assets:
docs/assets/brand/for the committed FNLLA Web logo source and GitHub-ready preview exports - Guide sources:
docs/guides/*.mdfor maintainer-authored content that publishes into the HTML guide set - Docs behavior sources:
src/docs/js/*.jsfor maintainer-authored documentation-only JavaScript that publishes intodocs/assets/docs.js - Runtime manifest:
scripts/fnlla-web-manifest.mjsfor the shared source-ordering and export contract - Validator:
scripts/validate-fnlla-web.mjsfor release-stage structural checks - Browser smoke test:
scripts/test-fnlla-web-browser.mjsfor published runtime behavior checks - Code of Conduct:
CODE_OF_CONDUCT.mdfor collaboration and moderation standards - Contributing guide:
.github/CONTRIBUTING.mdfor repository workflow and scope expectations - License:
LICENSE.mdfor MIT usage terms - Support policy:
SUPPORT.mdfor the public no-support and no-fixed-cadence boundary - Trademark notice:
TRADEMARKS.mdfor branding and endorsement rules - Release template:
.github/RELEASE_TEMPLATE.mdfor ASCII-safe GitHub release notes - Security policy:
SECURITY.mdfor vulnerability reporting and disclosure handling - Support routing:
.github/SUPPORT.mdfor issue, licensing and contact guidance
Use the docs to review component behavior and copy the patterns you need into real project templates.