finos / a11y-theme-builder

DesignOps toolchain theme builder for accessibility inclusion using Atomic Design.
Apache License 2.0
38 stars 70 forks source link

[DOCS] DesignOps Toolchain #463

Open mdacic01 opened 11 months ago

mdacic01 commented 11 months ago

Prepare a demo and documentation for setting up the toolchain workflow for keeping the Design Component Library, the Digital Component Library and the CSS Library in sync. See DesignOps Toolchain for more details.

aaronreed708 commented 9 months ago

We need to do research to identify possibilities. Need to also identify a tool chain upon which to work (if others than Discover already uses). Moving to "Future" for now.

aaronreed708 commented 4 months ago

Depends on #532

lwnoble commented 3 months ago

In order to get the tool chain working we need to be able to enable to following:

lwnoble commented 3 months ago
  1. I need help writing the following transforms

Use the filter attribute in the files array to:

  1. I would to write transforms that convert the following:

    "letter-spacing": { "0": { "value": "-.15", "type": "letterSpacing" }, }

to the following css with the comment

/ letter spacing / --letter-spacing-0

3.) I would to write transforms that convert the following: "navbar": { "mobile-menu": { "value": "true", "type": "boolean" }, }

to the following css converging the boolean true to 'block' and false to 'none'

/ navbar / --navbar-mobile-menu: 'block';

I would to write transforms that convert the following: "core-colors": { "transparent": { "value": "#00000000", "type": "color" } },

to the following css format using 'core-colors' appears only in the comment, not in the name Note: the color transformation is taken care of

/ core colors/ --transparent: rgba(0,0,0,0);

lwnoble commented 3 months ago

This is an example of the code I want to transform:

transform-json.json

lwnoble commented 2 months ago

Here are some of the transforms working: https://configurator.tokens.studio/#project=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

lwnoble commented 2 months ago

Helpful documentation: https://style-dictionary-v4.netlify.app/reference/utils/references/#outputreferencesfilter

evangk6 commented 2 months ago

@lwnoble - here is my latest progress: https://configurator.tokens.studio/#project=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

Building on what you did I was able to do likewise for the navbar. I couldn't quite get the core-colors exactly the way you wanted, but it is close. As for the file splitting, I could not use the tools provided to do that, but I wrote a python script to split the transform.json into the correct files:

# filename: split.py
import json

# Usage: python split.py
# make sure to specify OUTPUT_DIR

    # Save anything in core to core.json
    # Save anything in base to base.json
    # Save anything in light-mode to light-mode.json
    # Save anything in dark-mode to dark-mode.json
    # Save anything in AAA-light-mode to AAA-light-mode.json
    # Save anything in AAA-dark-mode to AAA-dark-mode.json
    # Save everything else to group.json

KEYS = ["core","base","light-mode","dark-mode","AAA-light-mode","AAA-dark-mode"]
OUTPUT_DIR = "output"

f = open('transform.json')
data = json.load(f)
otherExists=False
group_json = {}

for key in data:
    value = data[key]
    if key in KEYS:
        with open(OUTPUT_DIR + '/' + key + '.json', 'w') as f:
            json.dump(value, f)
    else:
        if otherExists == False:
            otherExists = True
        group_json[key] = value

    if otherExists:
        with open(OUTPUT_DIR + '/group.json', 'w') as f:
            json.dump(group_json, f)