« get me outta code hell

generateColorStyleRules.js « dependencies « content « src - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateColorStyleRules.js
blob: c412b8f24e7ef2fa2cf1ed23b986bac394eb738c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
export default {
  contentDependencies: ['generateColorStyleVariables'],
  extraDependencies: ['html'],

  relations: (relation) => ({
    variables:
      relation('generateColorStyleVariables'),
  }),

  data: (color) => ({
    color:
      color ?? null,
  }),

  slots: {
    color: {
      validate: v => v.isColor,
    },
  },

  generate(data, relations, slots) {
    const color = data.color ?? slots.color;

    if (!color) {
      return '';
    }

    return [
      `:root {`,
      ...(
        relations.variables
          .slots({
            color,
            context: 'page-root',
            mode: 'property-list',
          })
          .content
          .map(line => line + ';')),
      `}`,
    ].join('\n');
  },
};