Site Package: ATLAS v13.4

Architektur & Ordnerstruktur

3 Extensions + Abhängigkeiten + Ordnerstruktur

ATLAS ist bewusst modular aufgebaut

damit man ein Projekt nicht nur schnell starten, sondern auch sauber weiterentwickeln kann.
Statt ein einziges „Monster“-Sitepackage zu bauen, teilt ATLAS die Verantwortlichkeiten konsequent auf drei Extensions auf. Das bringt zwei Vorteile: Erstens kannst du die Basis und die Elemente in mehreren Projekten wiederverwenden. Zweitens bleibt das projektspezifische Theme sauber, weil es nicht mit generischen Content-Tools vermischt wird.

Die 3 Bausteine im Überblick

md_base – die stabile Grundlage

Hier liegt alles, was du projektübergreifend als „Default“ nutzen willst: RTE/CKEditor-Preset, grundlegende TCA-Erweiterungen, 
Base-Set mit TypoScript und PageTS.

Kurz: Fundament & Regeln, damit Inhalte und Styling konsistent bleiben.

KlasseZweck
SalAttributesProcessorBaut aus den tx_md_base_sal_* Feldern ein Array und einen String mit data-sal-Attributen. 
Wird genutzt, um SAL.js-Animationen sauber und wiederverwendbar an Wrapper, Links etc. zu hängen.
AppearanceClassProcessorAll-in-One-Processor für Background (Farbe/Bild/Animation/SVG), Effekte (blur/dim/noise/gradient/fixed), automatische Textfarbe und Layout-Wrapping.
Wertet nur aktive Felder basierend auf tx_md_base_bg_type aus – ignoriert stale DB-Werte aus inaktiven Feldern.
Erzeugt CSS-Klassen (bg-, text-, is-bg-, rounded-, p-3) und CSS-Variablen (--bg-image, --md-bg-blur, --md-bg-anim-c1 etc.) – emittiert nur die Variablen, die die gewählte Animation/Effekt-Kombination tatsächlich nutzt.
Verteilt Klassen und Styles auf drei Ebenen (outer/layer/inner) je nach fullwidth-Modus (Content/BG) und fixed-Effekt.
Liefert $processedData['appearance'] mit shouldWrap, isContentFullwidth, isBgFullwidth, equalHeightClass und strukturierten outer/layer/inner-Arrays (class + style) für saubere Template-Integration.
KlasseZweck
BackendAppearanceAssetsLädt im Backend BackendAppearance.js als JavaScript-Modul nach dem Initialisieren des FormEngine-Page-Controllers.
Hängt sich an das AfterFormEnginePageInitializedEvent und fügt damit das Script automatisch in alle TCA-Formulare ein (Content-Elemente, Seiten, Records etc.).
Nutzt addJsFooterFile mit 'module'-Parameter, damit das Script als ES6-Modul geladen wird und moderne Import/Export-Syntax verwenden kann.
KlasseZweck
HtmlMinifierGreift in der Response-Pipeline ein, prüft Kontext (Production) und Site-Setting. 
Minimiert HTML (Kommentare und Whitespace), um Ausgabe im Live-Betrieb zu verschlanken.
KlasseZweck
ScssViewHelperKompiliert SCSS-Dateien oder Inline-SCSS zu CSS über ws_scss und registriert das Ergebnis im AssetCollector.
Unterstützt Variablen, Pfad-Handling und wahlweise Inline- oder File-Ausgabe im Head.
AnyViewHelperPrüft, ob eines oder mehrere gesuchte Tokens in einer CSV/Whitespace-Liste vorkommt.
Typischer Einsatz: „Ist einer dieser Effekte aktiv?“, z.B. für Condition-Checks in Fluid.
ClassListViewHelperWandelt eine CSV/Whitespace-Liste in eine Klassenliste mit Prefix/Suffix um.
Praktisch für einfache Fälle direkt im Template; in der neuen Struktur eher in Processors gekapselt.

md_elements – Content Blocks & Layout-Tools

Das ist der Werkzeugkasten für den Redaktionsalltag: Content Blocks (Accordion, Tabs, Swiper, Compare, Flipbook, …), Container-Templates
(Cards, Modal, Alert, Dynamic Columns), plus Backend-UX (Preview/Assets).

Kurz: Bausteine, mit denen man Seiten baut.

KlasseZweck
DynamicColumnsProcessorVerarbeitet das b13/container-Element dynamic_columns und berechnet für jede Spalte (1–6) responsive Bootstrap-Widths (xxl/lg/xs mit Vererbung nach unten).
Holt via ContainerProcessor die Children je colPos (200–205) und baut ein children-Array mit content (gerendert), widths und index. 
Setzt außerdem columnCount, columnWidths, containerUid und childrenCount für das Fluid-Template.
ParentContainerProcessorLiest den Parent-Container (via tx_container_parent) aus der Datenbank und stellt dessen vollständige Rohdaten in parentContainer bereit.
Berechnet zusätzlich drei Flags: isCardsGroup, isCardsGrid (beide nur wenn Parent CType=cards mit entsprechendem Layout) und isButtonLink (wenn Parent CType=button_group). 
Nutzt rohe tt_content-Daten ($cObj->data), nicht ContentBlocks-Objekte, für zuverlässige Parent-Erkennung.
KlasseZweck
BackendAssetLoaderLädt im Backend für jede Seite mit dynamic_columns-Containern die Container-Konfiguration und generiert dynamische CSS-Regeln für die TCA-Spalten (200–205).
Blendet initial alle colPos 200–205 aus (Flicker-Prevention) und macht sie erst sichtbar, wenn body.md-columns-loaded gesetzt wird. 
Erzeugt für jeden Container individuelle CSS-Regeln für Spaltenbreiten, Min-Widths und Header-Labels (col-X (Y%)) im Page-Modul. 
Liest auch deaktivierte (hidden=1) Container, damit das Backend-Grid funktioniert. Injiziert window.MD_CONTAINER_DATA als JSON + Backend.css + backend.js (als Modul).

md_project – Projekt-Theme & Site Settings

Hier lebt das konkrete Projekt: Page-Templates, Header/Footer, Navigation (inkl. Mega-Menü), Hero-Ausgabe, ToC/ScrollSpy, SCSS-Struktur – und vor allem die 
Site Settings als zentrale Steuerung.

Kurz: Look & Feel + Projektlogik.

KlasseZweck
MegaMenuProcessorReichert ein bestehendes MenuProcessor-Ergebnis (z.B. mainMenu) um gerenderte Mega-Menu-Inhalte an.
Prüft je Menu-Item das Feld tx_md_megamenu_enabled und rendert dann alle tt_content-Elemente aus colPos=0 der konfigurierten tx_md_megamenu_source_pid (Fallback: Page-UID selbst). 
Das Ergebnis landet in item['megaHtml'] als String. 
Funktioniert rekursiv auch für Untermenüs, ist aber primär für Level-1-Navigation gedacht.
TocProcessorGeneriert ein hierarchisches Table-of-Contents aus Content-Element-Headern (tt_content.header) einer Seite.
Liest die gewünschten Heading-Levels (1–6) aus tx_md_project_toc_levels (Fallback: H2+H3) und durchsucht nur die konfigurierten colPos (tx_md_project_toc_source_colpos oder Heuristik: mdproject_2col → colPos=1, sonst colPos=0). 
Berücksichtigt Container-Children (via tx_container_parent-Walk) und filtert ausgeblendete Header (header_layout=100) sowie explizit ausgeschlossene (tx_md_project_toc_exclude). 
Baut einen verschachtelten Tree (children-Arrays) basierend auf Heading-Hierarchie und verankert jedes Item per id="c{uid}".
KlasseZweck
MegaMenuBackendLayoutListenerHört auf AfterRecordCreatedEvent und AfterRecordUpdatedEvent der pages-Tabelle und schaltet automatisch das Backend Layout um, wenn tx_md_megamenu_enabled geändert wird.
Maps zwischen Base-Layouts (mdproject_1col, mdproject_2col, mdproject_3col) und ihren Mega-Varianten (*_mega), die eine zusätzliche Content-Spalte (colPos=910) für Mega-Menu-Inhalte bereitstellen. 
Unterstützt sowohl PageTS-Layouts (pagets__<key>) als auch DB-Layouts. Lässt fremde/custom Layouts unangetastet.

Die Ordnerstruktur auf einen Blick

md_base/
├─ Classes/
│  ├─ DataProcessing/
│  │  ├─ AppearanceClassProcessor.php
│  │  └─ SalAttributesProcessor.php
│  ├─ EventListener/
│  │  └─ BackendAppearanceAssets.php
│  ├─ Middleware/
│  │  └─ HtmlMinifier.php
│  └─ ViewHelpers/
│     ├─ Asset/
│     │  └─ ScssViewHelper.php
│     └─ Csv/
│        ├─ AnyViewHelper.php
│        └─ ClassListViewHelper.php
├─ Configuration/
│  ├─ RTE/
│  │  └─ Default.yaml
│  ├─ Routes/
│  │  ├─ News.yaml
│  │  └─ Seo.yaml
│  ├─ Sets/
│  │  └─ Base/
│  │     ├─ config.yaml
│  │     ├─ constants.typoscript
│  │     ├─ page.tsconfig
│  │     ├─ settings.definitions.yaml
│  │     └─ setup.typoscript
│  ├─ TCA/
│  │  └─ Overrides/
│  │     ├─ pages.php
│  │     └─ tt_content.php
│  ├─ Yaml/
│  │  └─ FormSetup.yaml
│  ├─ RequestMiddlewares.php
│  └─ Services.yaml
├─ Resources/
│  ├─ Private/
│  │  ├─ Felogin/
│  │  │  ├─ Partials/
│  │  │  │  ├─ RenderLabelOrMessage.html
│  │  │  │  └─ ValidationErrors.html
│  │  │  └─ Templates/
│  │  │     ├─ Login/
│  │  │     │  ├─ Login.html
│  │  │     │  ├─ Logout.html
│  │  │     │  └─ Overview.html
│  │  │     └─ PasswordRecovery/
│  │  │        ├─ Recovery.html
│  │  │        └─ ShowChangePassword.html
│  │  ├─ Forms/
│  │  │  └─ Frontend/
│  │  │     ├─ Partials/
│  │  │     │  ├─ Email.html
│  │  │     │  ├─ Page.html
│  │  │     │  ├─ Text.html
│  │  │     │  └─ Textarea.html
│  │  │     └─ Templates/
│  │  │        └─ Form.html
│  │  ├─ Language/
│  │  │  ├─ de.locallang_db.xlf
│  │  │  └─ locallang_db.xlf
│  │  ├─ Layouts/
│  │  │  ├─ Content/
│  │  │  │  ├─ Default.html
│  │  │  │  └─ NoWrap.html
│  │  │  └─ ContentNoWrap/
│  │  │     └─ Default.html
│  │  └─ TemplateOverrides/
│  │     ├─ friendsoftypo3/
│  │     │  └─ content-blocks/
│  │     │     └─ Layouts/
│  │     │        └─ Preview.html
│  │     └─ typo3/
│  │        └─ cms-backend/
│  │           └─ Partials/
│  │              └─ PageLayout/
│  │                 └─ RecordDefault/
│  │                    └─ Footer.html
│  └─ Public/
│     ├─ Icons/
│     │  └─ Extension.svg
│     └─ JavaScript/
│        └─ BackendAppearance.js
├─ Tests/
│  └─ Unit/
│     └─ DataProcessing/
│        └─ AppearanceClassProcessorTest.php
├─ README.md
├─ composer.json
├─ ext_emconf.php
├─ ext_localconf.php
├─ ext_tables.sql
└─ phpunit.xml
md_elements/
├─ Classes/
│  ├─ DataProcessing/
│  │  ├─ B13ContainerChildrenRenderer.php
│  │  ├─ ContainerChildrenRendererInterface.php
│  │  ├─ DynamicColumnsProcessor.php
│  │  └─ ParentContainerProcessor.php
│  └─ EventListener/
│     └─ BackendAssetLoader.php
├─ Configuration/
│  ├─ TCA/
│  │  └─ Overrides/
│  │     ├─ tt_content/
│  │     │  ├─ types/
│  │     │  │  ├─ alert.php
│  │     │  │  ├─ box.php
│  │     │  │  ├─ button_group.php
│  │     │  │  ├─ cards.php
│  │     │  │  ├─ dynamic_columns.php
│  │     │  │  └─ modal.php
│  │     │  ├─ columns.php
│  │     │  ├─ containers.php
│  │     │  └─ palettes.php
│  │     └─ tt_content.php
│  ├─ TypoScript/
│  │  └─ setup.typoscript
│  ├─ Icons.php
│  ├─ Services.yaml
│  └─ page.tsconfig
├─ ContentBlocks/
│  └─ ContentElements/
│     ├─ accordion/
│     │  ├─ assets/
│     │  │  └─ icon.svg
│     │  ├─ language/
│     │  │  ├─ de.labels.xlf
│     │  │  └─ labels.xlf
│     │  ├─ templates/
│     │  │  ├─ backend-preview.html
│     │  │  └─ frontend.html
│     │  └─ config.yaml
│     ├─ button-link/
│     │  ├─ assets/
│     │  │  └─ icon.svg
│     │  ├─ language/
│     │  │  ├─ de.labels.xlf
│     │  │  └─ labels.xlf
│     │  ├─ templates/
│     │  │  ├─ backend-preview.html
│     │  │  └─ frontend.html
│     │  └─ config.yaml
│     ├─ card/
│     │  ├─ assets/
│     │  │  ├─ card.scss
│     │  │  └─ icon.svg
│     │  ├─ language/
│     │  │  ├─ de.labels.xlf
│     │  │  └─ labels.xlf
│     │  ├─ templates/
│     │  │  ├─ backend-preview.html
│     │  │  └─ frontend.html
│     │  └─ config.yaml
│     ├─ compare-slider/
│     │  ├─ assets/
│     │  │  ├─ frontend.css
│     │  │  ├─ frontend.js
│     │  │  └─ icon.svg
│     │  ├─ language/
│     │  │  ├─ de.labels.xlf
│     │  │  └─ labels.xlf
│     │  ├─ templates/
│     │  │  ├─ backend-preview.html
│     │  │  └─ frontend.html
│     │  └─ config.yaml
│     ├─ flipbook/
│     │  ├─ assets/
│     │  │  ├─ flipbook/
│     │  │  │  ├─ Css/
│     │  │  │  │  ├─ All.css
│     │  │  │  │  ├─ Flipbook.css
│     │  │  │  │  └─ FontAwesome.css
│     │  │  │  ├─ Fonts/
│     │  │  │  │  ├─ FontAwesome.otf
│     │  │  │  │  ├─ fontawesome-webfont.eot
│     │  │  │  │  ├─ fontawesome-webfont.svg
│     │  │  │  │  ├─ fontawesome-webfont.ttf
│     │  │  │  │  ├─ fontawesome-webfont.woff
│     │  │  │  │  └─ fontawesome-webfont.woff2
│     │  │  │  ├─ Images/
│     │  │  │  │  ├─ book2/
│     │  │  │  │  │  ├─ page1.jpg
│     │  │  │  │  │  ├─ page2.jpg
│     │  │  │  │  │  ├─ ...
│     │  │  │  │  │  └─ ...
│     │  │  │  │  ├─ patterns/
│     │  │  │  │  │  ├─ black_lozenge.png
│     │  │  │  │  │  ├─ ...
│     │  │  │  │  │  └─ woven.png
│     │  │  │  │  └─ ...
│     │  │  │  ├─ Js/
│     │  │  │  │  ├─ cmaps/
│     │  │  │  │  │  ├─ 78-EUC-H.bcmap
│     │  │  │  │  │  ├─ ...
│     │  │  │  │  │  └─ ...
│     │  │  │  │  ├─ constants.js
│     │  │  │  │  ├─ flipbook.js
│     │  │  │  │  ├─ pdf.js
│     │  │  │  │  ├─ pdf.worker.js
│     │  │  │  │  └─ ...
│     │  │  │  └─ ...
│     │  ├─ language/
│     │  │  ├─ de.labels.xlf
│     │  │  └─ labels.xlf
│     │  ├─ templates/
│     │  │  ├─ backend-preview.html
│     │  │  └─ frontend.html
│     │  └─ config.yaml
│     ├─ icon-text/
│     │  ├─ assets/
│     │  │  ├─ frontend.css
│     │  │  ├─ frontend.js
│     │  │  └─ icon.svg
│     │  ├─ language/
│     │  │  ├─ de.labels.xlf
│     │  │  └─ labels.xlf
│     │  ├─ templates/
│     │  │  ├─ backend-preview.html
│     │  │  └─ frontend.html
│     │  └─ config.yaml
│     ├─ social-share/
│     │  ├─ assets/
│     │  │  ├─ frontend.css
│     │  │  ├─ frontend.js
│     │  │  └─ icon.svg
│     │  ├─ language/
│     │  │  ├─ de.labels.xlf
│     │  │  └─ labels.xlf
│     │  ├─ templates/
│     │  │  ├─ backend-preview.html
│     │  │  └─ frontend.html
│     │  └─ config.yaml
│     ├─ swiper/
│     │  ├─ assets/
│     │  │  ├─ frontend.css
│     │  │  ├─ frontend.js
│     │  │  └─ icon.svg
│     │  ├─ language/
│     │  │  ├─ de.labels.xlf
│     │  │  └─ labels.xlf
│     │  ├─ templates/
│     │  │  ├─ backend-preview.html
│     │  │  └─ frontend.html
│     │  └─ config.yaml
│     ├─ tabs/
│     │  ├─ assets/
│     │  │  ├─ frontend.css
│     │  │  ├─ frontend.js
│     │  │  └─ icon.svg
│     │  ├─ language/
│     │  │  ├─ de.labels.xlf
│     │  │  └─ labels.xlf
│     │  ├─ templates/
│     │  │  ├─ backend-preview.html
│     │  │  └─ frontend.html
│     │  └─ config.yaml
│     └─ timeline/
│        ├─ assets/
│        │  ├─ frontend.css
│        │  ├─ frontend.js
│        │  └─ icon.svg
│        ├─ language/
│        │  ├─ de.labels.xlf
│        │  └─ labels.xlf
│        ├─ templates/
│        │  ├─ backend-preview.html
│        │  └─ frontend.html
│        └─ config.yaml
├─ Resources/
│  ├─ Private/
│  │  ├─ Language/
│  │  │  ├─ de.locallang.xlf
│  │  │  └─ locallang.xlf
│  │  └─ Templates/
│  │     ├─ Alert.html
│  │     ├─ Box.html
│  │     ├─ ButtonGroup.html
│  │     ├─ Cards.html
│  │     ├─ DynamicColumns.html
│  │     └─ Modal.html
│  └─ Public/
│     ├─ ContentBlocks/
│     │  └─ md/
│     ├─ Css/
│     │  └─ Backend.css
│     ├─ Icons/
│     │  ├─ Extension.svg
│     │  ├─ alert.svg
│     │  ├─ box.svg
│     │  ├─ button-group.svg
│     │  ├─ cards.svg
│     │  ├─ dynamic-columns.svg
│     │  └─ modal.svg
│     ├─ JavaScript/
│     │  ├─ backend.js
│     │  └─ md_containers_modal.js
│     └─ SCSS/
│        ├─ alert.scss
│        ├─ box.scss
│        └─ md_elements.scss
├─ Tests/
│  └─ Unit/
│     └─ DynamicColumnsProcessorTest.php
├─ README.md
├─ composer.json
├─ ext_emconf.php
├─ ext_localconf.php
├─ ext_tables.sql
└─ phpunit.xml
md_project/
├─ Classes/
│  ├─ DataProcessing/
│  │  ├─ MegaMenuProcessor.php
│  │  └─ TocProcessor.php
│  └─ EventListener/
│     └─ MegaMenuBackendLayoutListener.php
├─ Configuration/
│  ├─ Sets/
│  │  └─ Project/
│  │     ├─ config.yaml
│  │     ├─ constants.typoscript
│  │     ├─ page.tsconfig
│  │     ├─ settings.definitions.yaml
│  │     ├─ settings.yaml
│  │     └─ setup.typoscript
│  ├─ TCA/
│  │  └─ Overrides/
│  │     ├─ pages.php
│  │     └─ tt_content.php
│  ├─ TsConfig/
│  │  └─ Page/
│  │     └─ Extensions/
│  │        ├─ News.tsconfig
│  │        └─ SfEventMgt.tsconfig
│  ├─ TypoScript/
│  │  └─ Extensions/
│  │     ├─ News.typoscript
│  │     └─ SfEventMgt.typoscript
│  └─ Services.yaml
├─ Resources/
│  ├─ Private/
│  │  ├─ Extensions/
│  │  │  ├─ News/
│  │  │  │  ├─ Layouts/
│  │  │  │  │  ├─ Detail.html
│  │  │  │  │  └─ General.html
│  │  │  │  ├─ Partials/
│  │  │  │  │  ├─ Detail/
│  │  │  │  │  │  ├─ LayoutModern.html
│  │  │  │  │  │  ├─ LayoutOriginal.html
│  │  │  │  │  │  ├─ LayoutOverlay.html
│  │  │  │  │  │  └─ LayoutSplit.html
│  │  │  │  │  ├─ General/
│  │  │  │  │  │  ├─ AdditionalInformation.html
│  │  │  │  │  │  └─ Share.html
│  │  │  │  │  └─ List/
│  │  │  │  │     ├─ Card.html
│  │  │  │  │     ├─ CleanCard.html
│  │  │  │  │     ├─ Featured.html
│  │  │  │  │     ├─ HoverCard.html
│  │  │  │  │     ├─ Item.html
│  │  │  │  │     ├─ Pagination.html
│  │  │  │  │     ├─ SwiperCleanCards.html
│  │  │  │  │     ├─ SwiperHoverCards.html
│  │  │  │  │     └─ Timeline.html
│  │  │  │  └─ Templates/
│  │  │  │     └─ News/
│  │  │  │        ├─ Detail.html
│  │  │  │        └─ List.html
│  │  │  └─ SfEventMgt/
│  │  │     ├─ Layouts/
│  │  │     │  └─ Default.html
│  │  │     ├─ Partials/
│  │  │     │  └─ List/
│  │  │     │     ├─ EventCalendar.html
│  │  │     │     ├─ EventCard.html
│  │  │     │     ├─ EventListItem.html
│  │  │     │     └─ EventSwiper.html
│  │  │     └─ Templates/
│  │  │        └─ Event/
│  │  │           ├─ Detail.html
│  │  │           └─ List.html
│  │  ├─ Language/
│  │  │  ├─ de.locallang_be.xlf
│  │  │  ├─ de.locallang_db.xlf
│  │  │  ├─ locallang_be.xlf
│  │  │  └─ locallang_db.xlf
│  │  ├─ Layouts/
│  │  │  └─ Page/
│  │  │     └─ Site.html
│  │  ├─ Partials/
│  │  │  └─ Page/
│  │  │     ├─ Header/
│  │  │     │  ├─ Navigation/
│  │  │     │  │  ├─ Default.html
│  │  │     │  │  ├─ Desktop.html
│  │  │     │  │  ├─ Sidebar.html
│  │  │     │  │  └─ Split.html
│  │  │     │  ├─ Brand.html
│  │  │     │  ├─ Offcanvas.html
│  │  │     │  ├─ ThemeToggle.html
│  │  │     │  └─ Toggler.html
│  │  │     ├─ Toc/
│  │  │     │  └─ Items.html
│  │  │     ├─ BackToTop.html
│  │  │     ├─ Breadcrumbs.html
│  │  │     ├─ Footer.html
│  │  │     ├─ Header.html
│  │  │     ├─ Hero.html
│  │  │     ├─ MobileMenu.html
│  │  │     ├─ Toc.html
│  │  │     └─ TopMenu.html
│  │  └─ Templates/
│  │     ├─ FluidStyledContent/
│  │     │  ├─ Image.html
│  │     │  ├─ MenuAbstract.html
│  │     │  ├─ MenuSubpages.html
│  │     │  ├─ Textmedia.html
│  │     │  └─ Uploads.html
│  │     └─ Page/
│  │        ├─ OneColumn.html
│  │        ├─ ThreeColumn.html
│  │        └─ TwoColumn.html
│  └─ Public/
│     ├─ Css/
│     │  ├─ glightbox.css
│     │  ├─ sal.css
│     │  ├─ sal.css.map
│     │  ├─ swiper-bundle.min.css
│     │  └─ toastui-calendar.min.css
│     ├─ Fonts/
│     │  ├─ EtelkaMediumPro.woff
│     │  ├─ EtelkaMediumPro.woff2
│     │  ├─ EtelkaTextPro.woff
│     │  └─ EtelkaTextPro.woff2
│     ├─ Icons/
│     │  ├─ Extension.svg
│     │  ├─ backendlayout-1col.svg
│     │  ├─ backendlayout-2col.svg
│     │  └─ backendlayout-3col.svg
│     ├─ Images/
│     │  ├─ dividers/
│     │  ├─ a-logo.png
│     │  ├─ apple-touch-icon.png
│     │  ├─ atlas-logo.svg
│     │  ├─ atlas-sign.svg
│     │  ├─ favicon-96x96.png
│     │  ├─ favicon.ico
│     │  ├─ favicon.svg
│     │  ├─ logo-w.svg
│     │  ├─ logo.svg
│     │  ├─ mediadata-Logo2z.svg
│     │  └─ ...
│     ├─ Js/
│     │  ├─ components/
│     │  │  ├─ back-to-top.js
│     │  │  ├─ calendar-init.js
│     │  │  ├─ hero-vh.js
│     │  │  └─ toc-scrollspy.js
│     │  ├─ global/
│     │  │  ├─ glightbox-init.js
│     │  │  ├─ glightbox.min.js
│     │  │  ├─ offcanvas-hamburger.js
│     │  │  ├─ theme-init.js
│     │  │  ├─ theme-toggle.js
│     │  │  └─ theme-toggle.js
│     │  ├─ sidebar/
│     │  │  ├─ sidebar-collapse.js
│     │  │  └─ sidebar-flyout.js
│     │  └─ ...
│     └─ SCSS/
│        ├─ abstracts/
│        ├─ base/
│        ├─ components/
│        ├─ layout/
│        ├─ overrides/
│        ├─ themes/
│        ├─ vendors/
│        │  ├─ bootstrap/
│        │  │  ├─ ...
│        │  │  └─ ...
│        │  ├─ hamburgers/
│        │  └─ _bootstrap.scss
│        ├─ _custom.scss
│        ├─ main.scss
│        └─ rte.scss
├─ README.md
├─ composer.json
├─ ext_emconf.php
├─ ext_localconf.php
├─ ext_tables.php
├─ ext_tables.sql
└─ phpunit.xml