WP Manifestindependent plugin directory
manifest / admin / tbt-hub

TBT Hub

Central admin menu and index page for all TBT plugins, and the

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/aparatofan/tbt-hub/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Central admin menu and index page for all TBT plugins, and the canonical source of the shared TBT design system.

Other plugins add themselves to the Overview page through the tbt_hub_items filter, so the index always reflects what is actually installed and active.


The shared design system

TBT Hub owns four stylesheet handles:

Handle File Depends on
tbt-tokens assets/css/tbt-tokens.css —
tbt-components assets/css/tbt-components.css tbt-tokens
tbt-tree assets/css/tbt-tree.css tbt-tokens
tbt-rail assets/css/tbt-rail.css — (deliberate — see below)

tbt-tree is deliberately not folded into tbt-components: a page that wants the mark rarely wants the whole component library. It reads --tbt-blue for the leaf stroke, which is why it depends on the tokens.

tbt-rail follows the same precedent for the same reason, and goes one step further: it declares no dependency, because every custom property in it carries a literal fallback and it is meant to render in a plugin that does not load tbt-tokens. See The navigation rail.

All four are registered, never enqueued, on wp_enqueue_scripts at priority 5. A registered handle costs nothing on a page that does not ask for it, so the design system reaches exactly the pages a tool renders on. Priority 5 is what lets consumers on the default priority of 10 find the handles already present.

Who consumes them

Keep this table current. It is what makes the blast radius of an edit to tbt-tokens.css visible from the Hub itself.

Plugin Handles used Vendored fallback Container
TBT Notes tbt-components (and tbt-tokens through it) assets/vendor/tbt/ — both files .tbt-tool
TBT Matching Games tbt-tokens assets/vendor/tbt/ — tokens only .tbt-tool
TBT Swipe none — private vocabulary, private handle n/a .tbt

TBT Swipe is deliberately outside this system. It is isolated behind its own handle and cannot be affected by a change here. Migrating it is a separate piece of work with open design questions.


The tree mark

The animated TBT tree is inlined by the [tbt_tree] shortcode, so the Divi header row and any plugin hero render one mark from one source instead of a pasted copy per surface.

[tbt_tree]                             190px, blooms on load
[tbt_tree width="240px"]               wider
[tbt_tree animate="no"]                settled tree, no bloom
[tbt_tree class="tbtmg-hero__mark"]    extra host class

The shortcode enqueues tbt-tree itself and emits <span class="tbt-tree-host …"><svg class="tbt-tree" …>. The SVG carries no ids, so two marks on one page stay valid markup. The bloom is pure CSS: each leaf carries a baked --tbt-tree-wave index, six waves centre outward, so there is no script to load and no flash of an unstyled mark.

Maintenance. assets/img/tbt-tree.svg is a transformed export, not a raw one. If the tree is re-exported from Illustrator, two steps must be re-applied or the mark renders unstyled and unanimated:

  1. Rename the export's .cls-N classes to the semantic ones tbt-tree__leaf (--89 / --81 for the two translucent variants), tbt-tree__figure--le / --gi / --pd, plus tbt-tree__eo on the fill-rule: evenodd paths — and strip the `