« get me outta code hell

content: generateWikiHomepage{*}: homepage sections - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2025-02-11 10:34:47 -0400
committer(quasar) nebula <qznebula@protonmail.com>2025-02-12 07:43:59 -0400
commit26c9f3a8feb3803322a14f6f980f96ab62676b35 (patch)
tree5eff9e9d185cd338e98b437f41c8edfade28949b /src/content
parent39f7e9e975990bcfa28f9ccb20ff98e4a2867ddf (diff)
content: generateWikiHomepage{*}: homepage sections
Diffstat (limited to 'src/content')
-rw-r--r--src/content/dependencies/generateWikiHomepageAlbumsRow.js22
-rw-r--r--src/content/dependencies/generateWikiHomepageContentRow.js30
-rw-r--r--src/content/dependencies/generateWikiHomepagePage.js16
-rw-r--r--src/content/dependencies/generateWikiHomepageSection.js33
4 files changed, 43 insertions, 58 deletions
diff --git a/src/content/dependencies/generateWikiHomepageAlbumsRow.js b/src/content/dependencies/generateWikiHomepageAlbumsRow.js
index 4ae48758..b8e56a97 100644
--- a/src/content/dependencies/generateWikiHomepageAlbumsRow.js
+++ b/src/content/dependencies/generateWikiHomepageAlbumsRow.js
@@ -3,7 +3,6 @@ import {getNewAdditions, getNewReleases} from '#wiki-data';
 
 export default {
   contentDependencies: [
-    'generateWikiHomepageContentRow',
     'generateCoverCarousel',
     'generateCoverGrid',
     'image',
@@ -44,9 +43,6 @@ export default {
   },
 
   relations: (relation, sprawl, row) => ({
-    contentRow:
-      relation('generateWikiHomepageContentRow', row),
-
     coverGrid:
       (row.displayStyle === 'grid'
         ? relation('generateCoverGrid')
@@ -117,23 +113,15 @@ export default {
             .slot('mode', 'single-link')
             .content);
 
-    let content;
-
     switch (data.displayStyle) {
       case 'grid':
-        content =
-          relations.coverGrid.slots({
-            ...commonSlots,
-            names: data.names,
-          });
-        break;
+        return relations.coverGrid.slots({
+          ...commonSlots,
+          names: data.names,
+        });
 
       case 'carousel':
-        content =
-          relations.coverCarousel.slots(commonSlots);
-        break;
+        return relations.coverCarousel.slots(commonSlots);
     }
-
-    return relations.contentRow.slots({content});
   },
 };
diff --git a/src/content/dependencies/generateWikiHomepageContentRow.js b/src/content/dependencies/generateWikiHomepageContentRow.js
deleted file mode 100644
index 3a36033f..00000000
--- a/src/content/dependencies/generateWikiHomepageContentRow.js
+++ /dev/null
@@ -1,30 +0,0 @@
-export default {
-  contentDependencies: ['generateColorStyleAttribute'],
-  extraDependencies: ['html'],
-
-  relations: (relation, row) => ({
-    colorStyle:
-      relation('generateColorStyleAttribute', row.color),
-  }),
-
-  data: (row) => ({
-    name:
-      row.name,
-  }),
-
-  slots: {
-    content: {
-      type: 'html',
-      mutable: false,
-    },
-  },
-
-  generate: (data, relations, slots, {html}) =>
-    html.tag('section', {class: 'row'},
-      relations.colorStyle,
-
-      [
-        html.tag('h2', data.name),
-        slots.content,
-      ]),
-};
diff --git a/src/content/dependencies/generateWikiHomepagePage.js b/src/content/dependencies/generateWikiHomepagePage.js
index 6698f0ef..8c09a007 100644
--- a/src/content/dependencies/generateWikiHomepagePage.js
+++ b/src/content/dependencies/generateWikiHomepagePage.js
@@ -3,8 +3,8 @@ export default {
     'generatePageLayout',
     'generatePageSidebar',
     'generatePageSidebarBox',
-    'generateWikiHomepageAlbumsRow',
     'generateWikiHomepageNewsBox',
+    'generateWikiHomepageSection',
     'transformContent',
   ],
 
@@ -40,15 +40,9 @@ export default {
       homepageLayout.navbarLinks
         .map(content => relation('transformContent', content)),
 
-    contentRows:
-      homepageLayout.rows.map(row => {
-        switch (row.type) {
-          case 'albums':
-            return relation('generateWikiHomepageAlbumsRow', row);
-          default:
-            return null;
-        }
-      }),
+    sections:
+      homepageLayout.sections
+        .map(section => relation('generateWikiHomepageSection', section)),
   }),
 
   data: (sprawl) => ({
@@ -65,7 +59,7 @@ export default {
       headingMode: 'static',
 
       mainContent: [
-        relations.contentRows,
+        relations.sections,
       ],
 
       leftSidebar:
diff --git a/src/content/dependencies/generateWikiHomepageSection.js b/src/content/dependencies/generateWikiHomepageSection.js
new file mode 100644
index 00000000..15299dd4
--- /dev/null
+++ b/src/content/dependencies/generateWikiHomepageSection.js
@@ -0,0 +1,33 @@
+export default {
+  contentDependencies: [
+    'generateColorStyleAttribute',
+    'generateWikiHomepageAlbumsRow',
+  ],
+
+  extraDependencies: ['html'],
+
+  relations: (relation, homepageSection) => ({
+    colorStyle:
+      relation('generateColorStyleAttribute', homepageSection.color),
+
+    rows:
+      homepageSection.rows.map(row =>
+        (row.type === 'albums'
+          ? relation('generateWikiHomepageAlbumsRow', row)
+          : null)),
+  }),
+
+  data: (homepageSection) => ({
+    name:
+      homepageSection.name,
+  }),
+
+  generate: (data, relations, {html}) =>
+    html.tag('section',
+      relations.colorStyle,
+
+      [
+        html.tag('h2', data.name),
+        relations.rows,
+      ]),
+};