first update
This commit is contained in:
@@ -158,6 +158,548 @@
|
||||
<a href="#why-this-matters">Why This Matters</a><a href="#in-practice">In Practice</a><a href="#built-for-the-real-world">Built for the Real World</a>
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<nav class="app-wall" aria-label="Apps + AI">
|
||||
<a class="app-wall-head" href="../../product/software-library/">
|
||||
<span class="app-wall-title">Apps + AI</span>
|
||||
<span class="app-wall-count">Catalog<span class="arrow" aria-hidden="true">→</span></span>
|
||||
</a>
|
||||
<div class="app-wall-view">
|
||||
<div class="app-wall-scroll">
|
||||
|
||||
<ul class="app-wall-grid">
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../nextcloud/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#nextcloud"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Nextcloud</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../product/software-library/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#claude"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Claude Code</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../product/software-library/#mcp">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#mcp"></use></svg>
|
||||
|
||||
<span class="app-tile-name">MCP</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../jitsi/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#jitsi"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Jitsi</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../espocrm/">
|
||||
<span class="app-tile-icon app-tile-letter" aria-hidden="true">E</span>
|
||||
<span class="app-tile-name">EspoCRM</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../element/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#element"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Element</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../n8n/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#n8n"></use></svg>
|
||||
|
||||
<span class="app-tile-name">n8n</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../immich/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#immich"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Immich</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../product/software-library/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#jupyter"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Jupyter</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../wordpress/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#wordpress"></use></svg>
|
||||
|
||||
<span class="app-tile-name">WordPress</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../freescout/">
|
||||
<span class="app-tile-icon app-tile-letter" aria-hidden="true">F</span>
|
||||
<span class="app-tile-name">FreeScout</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../collabora-writer/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#collabora"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Collabora</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../product/software-library/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#opencode"></use></svg>
|
||||
|
||||
<span class="app-tile-name">OpenCode</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../vaultwarden/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#vaultwarden"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Vaultwarden</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../calcom/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#calcom"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Cal.com</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../gitea/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#gitea"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Gitea</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../discourse/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#discourse"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Discourse</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../product/software-library/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#grafana"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Grafana</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../bookstack/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#bookstack"></use></svg>
|
||||
|
||||
<span class="app-tile-name">BookStack</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../docuseal/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#docuseal"></use></svg>
|
||||
|
||||
<span class="app-tile-name">DocuSeal</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../plane/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#plane"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Plane</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../baserow/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#baserow"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Baserow</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../listmonk/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#listmonk"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Listmonk</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../product/software-library/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#postgresql"></use></svg>
|
||||
|
||||
<span class="app-tile-name">PostgreSQL</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../mautic/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#mautic"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Mautic</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../plausible-analytics/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#plausible"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Plausible</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../matomo/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#matomo"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Matomo</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../kimai/">
|
||||
<span class="app-tile-icon app-tile-letter" aria-hidden="true">K</span>
|
||||
<span class="app-tile-name">Kimai</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../castopod/">
|
||||
<span class="app-tile-icon app-tile-letter" aria-hidden="true">C</span>
|
||||
<span class="app-tile-name">Castopod</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../woocommerce-ecommerce/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#woocommerce"></use></svg>
|
||||
|
||||
<span class="app-tile-name">WooCommerce</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../roundcube/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#roundcube"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Roundcube</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../headscale/">
|
||||
<span class="app-tile-icon app-tile-letter" aria-hidden="true">H</span>
|
||||
<span class="app-tile-name">Headscale</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../solutions/ai-for-your-apps/">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#add"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Add Yours</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
<ul class="app-wall-grid" aria-hidden="true">
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../nextcloud/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#nextcloud"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Nextcloud</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../product/software-library/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#claude"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Claude Code</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../product/software-library/#mcp" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#mcp"></use></svg>
|
||||
|
||||
<span class="app-tile-name">MCP</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../jitsi/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#jitsi"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Jitsi</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../espocrm/" tabindex="-1">
|
||||
<span class="app-tile-icon app-tile-letter" aria-hidden="true">E</span>
|
||||
<span class="app-tile-name">EspoCRM</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../element/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#element"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Element</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../n8n/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#n8n"></use></svg>
|
||||
|
||||
<span class="app-tile-name">n8n</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../immich/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#immich"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Immich</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../product/software-library/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#jupyter"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Jupyter</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../wordpress/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#wordpress"></use></svg>
|
||||
|
||||
<span class="app-tile-name">WordPress</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../freescout/" tabindex="-1">
|
||||
<span class="app-tile-icon app-tile-letter" aria-hidden="true">F</span>
|
||||
<span class="app-tile-name">FreeScout</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../collabora-writer/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#collabora"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Collabora</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../product/software-library/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#opencode"></use></svg>
|
||||
|
||||
<span class="app-tile-name">OpenCode</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../vaultwarden/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#vaultwarden"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Vaultwarden</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../calcom/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#calcom"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Cal.com</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../gitea/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#gitea"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Gitea</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../discourse/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#discourse"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Discourse</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../product/software-library/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#grafana"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Grafana</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../bookstack/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#bookstack"></use></svg>
|
||||
|
||||
<span class="app-tile-name">BookStack</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../docuseal/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#docuseal"></use></svg>
|
||||
|
||||
<span class="app-tile-name">DocuSeal</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../plane/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#plane"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Plane</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../baserow/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#baserow"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Baserow</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../listmonk/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#listmonk"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Listmonk</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../product/software-library/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#postgresql"></use></svg>
|
||||
|
||||
<span class="app-tile-name">PostgreSQL</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../mautic/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#mautic"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Mautic</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../plausible-analytics/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#plausible"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Plausible</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../matomo/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#matomo"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Matomo</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../kimai/" tabindex="-1">
|
||||
<span class="app-tile-icon app-tile-letter" aria-hidden="true">K</span>
|
||||
<span class="app-tile-name">Kimai</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../castopod/" tabindex="-1">
|
||||
<span class="app-tile-icon app-tile-letter" aria-hidden="true">C</span>
|
||||
<span class="app-tile-name">Castopod</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../woocommerce-ecommerce/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#woocommerce"></use></svg>
|
||||
|
||||
<span class="app-tile-name">WooCommerce</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../roundcube/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#roundcube"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Roundcube</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../headscale/" tabindex="-1">
|
||||
<span class="app-tile-icon app-tile-letter" aria-hidden="true">H</span>
|
||||
<span class="app-tile-name">Headscale</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a class="app-tile" href="../../solutions/ai-for-your-apps/" tabindex="-1">
|
||||
<svg class="app-tile-icon" aria-hidden="true"><use href="../../images/app-icons.svg#add"></use></svg>
|
||||
|
||||
<span class="app-tile-name">Add Yours</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
</aside>
|
||||
|
||||
<main class="col" id="content" tabindex="-1">
|
||||
@@ -173,8 +715,10 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
@@ -210,6 +754,7 @@
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="stat-row">
|
||||
|
||||
<div class="stat">
|
||||
@@ -228,6 +773,36 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
(function () {
|
||||
var row = document.currentScript.previousElementSibling;
|
||||
if (!('IntersectionObserver' in window) || matchMedia('(prefers-reduced-motion: reduce)').matches) return;
|
||||
var counters = [];
|
||||
row.querySelectorAll('.stat-value').forEach(function (el) {
|
||||
var m = el.textContent.trim().match(/^(\d+)(.*)$/);
|
||||
if (!m) return;
|
||||
var shown = document.createElement('span'), full = el.textContent.trim();
|
||||
shown.setAttribute('aria-hidden', 'true');
|
||||
shown.textContent = '0' + m[2];
|
||||
el.innerHTML = '<span class="visually-hidden"></span>';
|
||||
el.firstChild.textContent = full;
|
||||
el.appendChild(shown);
|
||||
counters.push({ node: shown, to: +m[1], suffix: m[2] });
|
||||
});
|
||||
if (!counters.length) return;
|
||||
new IntersectionObserver(function (entries, io) {
|
||||
if (!entries[0].isIntersecting) return;
|
||||
io.disconnect();
|
||||
var start = performance.now(), dur = 1200;
|
||||
(function tick(now) {
|
||||
var t = Math.min(1, (now - start) / dur), eased = 1 - Math.pow(1 - t, 3);
|
||||
counters.forEach(function (c) { c.node.textContent = Math.round(c.to * eased) + c.suffix; });
|
||||
if (t < 1) requestAnimationFrame(tick);
|
||||
})(start);
|
||||
}, { threshold: 0.6 }).observe(row);
|
||||
})();
|
||||
</script>
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
@@ -402,7 +977,7 @@
|
||||
</div>
|
||||
|
||||
<div class="foot-legal">
|
||||
<span class="foot-copy">© 2026 Federated Computer, Inc. FedQ'd in Colorado Springs — built by a small team around the world.</span>
|
||||
<span class="foot-copy">© 2026 Federated Computer, Inc. FedQ'd in Colorado Springs — built on Federated Computer by a team around the world.</span>
|
||||
<a class="foot-policy" href="../../privacy-policy/">Privacy Policy</a><a class="foot-policy" href="../../terms-and-conditions/">Terms & Conditions</a>
|
||||
<a class="foot-top" href="#top">Back to top<span class="foot-up" aria-hidden="true">↑</span></a>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user