# SPDX-FileCopyrightText: 2025 toastal <toastal@posteo.net>
# SPDX-License-Identifier: MPL-2.0
{
  lib,
  fetchurl,
  linkFarm,
  runCommand,
  lightningcss,
  precompressBrotli ? false,
  parallel,
  brotli,
}:

# Get more Open Prop files from https://unpkg.com/browse/open-props@${version}

let
  inherit (import ../utils.nix { inherit lib parallel; }) beparallel;

  version = "1.7.14";

  browserslistrc = "${../../.browserslistrc}";

  fetch_static =
    { name, hash }:
    {
      name = "${name}.css";
      path = fetchurl {
        inherit hash;
        url = "https://unpkg.com/open-props@${version}/${name}.min.css";
      };
    };

  Open_Props = linkFarm "Open_Props_farm" (
    map fetch_static [
      {
        name = "cyan";
        hash = "sha256-3hSQ9zHj0Db/WNpnrARrOpATlxC87Sv0dWmgoVRsH2U=";
      }
      {
        name = "blue";
        hash = "sha256-ncDpwYLVdKk8YEQOtC1Tcrr/ILH9xewpd8bFdSLhx0w=";
      }
      {
        name = "fonts";
        hash = "sha256-StU5k8bYkZ51SNpOnFJn3M4xLsKawfrc4sai2oraaPs=";
      }
      {
        name = "gray";
        hash = "sha256-73OfkC7LV3qGYBgfJS/M8ybLqt3OFH4DzmDyBNpN+6I=";
      }
      {
        name = "indigo";
        hash = "sha256-rocu7l3gV5r4xrjrD+2MPmojctnPjHzX9240ZNB58SA=";
      }
      {
        name = "normalize";
        hash = "sha256-hqTyO0vafXp3UppVKJi8HyCy3bue/nA6RYXhJEl/tjw=";
      }
      {
        name = "normalize.light";
        hash = "sha256-L45NxcAqRwbjcVT8yzlADmeKXTPndt/nolViYUK+wd4=";
      }
      {
        name = "normalize.dark";
        hash = "sha256-pvhfR4BhF/bbH82Ack8U3fINAQ5FMJ5MV5JSvRrY3tk=";
      }
      {
        name = "shadows";
        hash = "sha256-+D46dd1Rew+phIkTDpUrXSv6bLjo6uma7nwOUfM9vMo=";
      }
      {
        name = "sizes";
        hash = "sha256-1ugirdAvHygNjEA8AenW0Q8PHI8UCwsyj7oxDBpLFvQ=";
      }
    ]
  );
in
runCommand "process-open-props"
  {
    src = Open_Props;
    nativeBuildInputs = [
      lightningcss
    ] ++ lib.optional precompressBrotli brotli;
    env = {
      BROWSERSLIST_CONFIG = browserslistrc;
    };
  }
  (
    ''
      mkdir -p $out
      cat $src/* | lightningcss --minify --browserslist --output-file $out/open-props.css
    ''
    +
      lib.optionalString precompressBrotli # bash
        ''
          find $out -type f -iname "*.css" \
            | ${beparallel ''brotli --keep --quality=11 --output={}.br {}''}
        ''
  )
