{{-- Shared tab-group — the ONE tablist implementation (navigation.tabs). ARIA button-tablist with roving tabindex, Arrow/Home/End keyboard support, optional persistence, and HTMX-safe vanilla-JS init (no jQuery). Replaces the legacy jQuery-UI tabs wrapper and the four hand-rolled copies of the same pattern (board tabs, report deck, goal dialog, Resource Allocation). Props: group string REQUIRED. Unique id prefix for this group on the page; tab/panel ids derive from it ({group}-tab-{name} / {group}-panel-{name}). label string REQUIRED. aria-label for the tablist. variant string 'attached' (default) — gradient accent band with a translucent framed segment group (board/report look), or 'floating' — free-floating fully-rounded pills (RA look). dark bool Floating variant only: dark-header color scheme (server-stamped, mirrors the theme's color mode). panels string 'toggle' (default) — the JS shows/hides elements marked data-tabs-panel for this group; 'manual' — the JS only manages tab state and dispatches the event below, and the page's own JS moves content (e.g. a deck track). storage string 'none' (default) | 'session' | 'local' — where the active tab persists across reloads. storageKey string Storage key; REQUIRED when storage != none. Scope it per entity (e.g. "ra-tab-{programId}"). Slots: default The x-global::navigation.tabs.tab children. actions Optional right-side cluster (filters, period pickers, pager arrows). Attached variant renders it inside the band. Panel contract (caller-rendered):