Code Monkey home page Code Monkey logo

one-core-toolbox's Introduction

803c3a7d-ef71-43fa-a53d-432828455793-cover

Table of Contents
  1. About The Project
  2. Getting Started
  3. Demo
  4. Acknowledgements

About the project

This Figma plugin is an internal resource for New Relic. It's functionality is closely tied to One Core's (New Relic's design system) design tokens, and components. The goal of the project is to take some of the load of utilizing One Core off of the shoulders of New Relic product designers and place it on the shoulders of Figma itself.

The plugin is automatically installed for all Figma users at New Relic. Usage stats for the plugin are tracked in New Relic (staging). These usage stats have often served as the first warning about bugs before users report them.

Project status

Feature Status Notes
Table creator ✅ Shipped Will need to be updated when table redesign ships!
Theme switcher ✅ Shipped Token library in plugin needs to be updated regularly
Color linter ✅ Shipped Token library in plugin needs to be updated regularly
Language linter ✅ Shipped Used in the plugin via a language linter NPM package

Built With

Getting started

Running it locally

  • Run yarn to install dependencies.
  • Run yarn build:watch to start webpack in watch mode.
  • Open Figma -> Plugins -> Development -> New Plugin... and choose manifest.json file from this repo.

⭐ To change the UI of the plugin (the react code), start editing App.tsx.
⭐ To interact with the Figma API edit controller.ts.
⭐ Read more on the Figma API Overview.

CleanShot 2022-07-12 at 12 40 32@2x

Demo

One.Core.Toolbox.Preview.mov

Acknowledgements

(back to top)

one-core-toolbox's People

Contributors

aarongarciah avatar danielgolden avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

one-core-toolbox's Issues

Fix the following suggestions

False positives

Capitalization

  • "I've" -> "I've"
  • "Git" -> "git"
  • "Nerdpack" -> "nerdpack"
  • "PRs" -> "prs"
  • "10.2.0.1" capitalization
  • "Android" -> "android"
  • "Application performance monitoring" -> "application performance monitoring" (even though it was the first word in the sentence)
  • "Dashboards" -> "dashboards" (even though it was the first word in the sentence)
  • "Go" -> "go" (the language)
  • "DevOps" -> "devops" (questionable)
  • "CPU" -> "cpu"
  • "Nginx" -> "nginx"
  • "RedHat" -> "redhat"
  • Instant "Observability" -> "observability (link)
  • "Instant Observability" -> "instant observability"

Spelling

  • "NPM" spelling
  • "JVM" spelling
  • "2:41PM" -> "2:41STM" (submitted an issue and a PR)
  • "https" spelling
  • "Feb" spelling
  • "uncheck" -> "recheck"
  • "prepopulated" -> "repopulated" (should be "pre-populated")
  • "IDE" spelling
  • "CDN" spelling
  • "customizable" spelling (but it's correct)
  • "jumpstart" -> "upstart" (should be "jump-start")
  • Capitalization corrections displaying in lower case and then being applied as capitalized.

Equality

  • "special" as insensitive language

Unknown rule

  • "apm" -> "apm"
  • "apache" -> "apache"
  • "GDPR" -> "GDP"

Contractions

  • "I have" -> "I've" (British style: I have five of those)
  • "New Relic's" -> "New Relic"

Allow users to create tables based on real data

Add a feature to the table creator which allows users to allow users to input one of the following:

  • A CSV file
  • A NRQL query
  • Choose from commonly used tables (e.g. all entities, all dashboards, etc.)

Then we take that input and from it produce a One Core table.

Update "Design linter" button on home screen

  • Update language in design linter tile to include language linter
  • Add "new" badge to design linter tile or language linter language within that tile
    • This badge should be set to disappear after a certain date

Improve the empty state text

I wonder if I explain that you can select a parent and it's children layers will be linted in the empty state if it will be more clear.

CleanShot 2022-03-15 at 07 49 46@2x

CleanShot 2022-03-15 at 07 49 59@2x

Consider making the creation of tables a 2 step process

Problem

Some users aren't even noticing the "format cells" button. Others don't know what "format cells" mean and I suspect they don't click it for that reason.

Proposed solution

Make the creation of tables a 2 step process
Here's the workflow I have in mind:

  1. User chooses table dimensions
    • user clicks "continue"
  2. User sets column configuration
    • User clicks "create table".

Allow for resizing of columns based on text in cell

In New Relic One the width of columns is partly based on the amount of text in each column. We should do that same thing in the table create. For example, if I have 3 columns but column 2 has more text than the other columns then column 2 should be the widest.

Update language linter screen empty state

The current empty state uses a mix of content from the plugin (the navigation) and content from the new-relic-language-linter NPM package for it's empty state. Replace both of these with an empty state provided completely by the plugin which has the same style as the empty state of the color linter.

When to display the empty state

  • When there is no text layer selected
  • When there is no layer selected
  • The CTA should read "lint selected text layers"
Current New
Image Image

Allow users to choose between fixed and fluid width for tables

Right now, all tables are set to fixed with. We should allow users to set their table to fixed width if they prefer. Here's the difference

Requirements

Fixed width

  • There must be a minimum width set based on the amount of text in the column
  • The table is resized one column at a time by selecting the header cell of the column you want and resizing that header cell.
  • The table can not be resized by clicking and dragging the table container

Fluid width

  • The table is resized by clicking and dragging the table container
  • The table can not be resized one column at a time.
  • There must be a minimum width set based on the amount of text in the column

Note: How do we communicate the above details to the users? They're not intuitive.

When one column is set to "multi-value", all columns should be set to multi-value

This is feedback straight from @jeremenichelli:

When a cell is multivalue the whole Table is multivalue even if other cells don't have secondary values. I know that on the UI Kit each cell can be multivalue, but this has created tons of confusion, we should probably add it as a global setting in the Table or at least in your plugin impose it as a general config (once chosen it applies to all cells)

Implement click and drag editing of numeric inputs

On numeric inputs in Figma you can click and drag the icon/label of the input to increase or decrease the number in the input. Here's an example of that interaction
Kapture 2021-11-01 at 13 02 31

We should implement this on our numeric inputs

Add loading animation on big tables

Right now, the more columns and tables are included in the table the longer it takes to load. Up to like 5 or 6 seconds for a table that has max columns and max rows. We could use the number of columns and rows in the table (bonus points for factoring in cell types) to determine when to add a loading animation. A loading spinner that replaces the "Create table" button text could work well. That said, if it's just a 3x4 table or something small like that, I don't think a loading spinner is necessary.

Action unable to fetch latest tokens: Figma API key update

Hey, team ✌🏽. I noticed an unexpected issue after my NR figma account was deactivated. It seems my Figma API key is no longer valid (which makes sense given my user was removed), but that means that the GitHub action which fetches the latest color tokens no longer works because the API key it's been provided is invalid.

I think that needs to be done to fix this is provide it with a valid Figma API key.

cc: @aarongarciah, @Bluefinger

Consider removing "Missing One Core Color style" line

Things to consider:

  • Maybe we only mention this once at the top of the list.
  • Maybe we store that message in a tooltip trigger on the tile.
  • If there's no heading, it may look strange. Could we promote one of the pieces of meta data to be the heading?

CleanShot 2022-03-15 at 07 41 23@2x

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.