Giter Site home page Giter Site logo

helixdesignsystem / helix-react Goto Github PK

View Code? Open in Web Editor NEW
5.0 8.0 6.0 1.38 MB

React components to wrap HelixUI Components.

Home Page: https://helix-react.netlify.app/

License: Apache License 2.0

JavaScript 99.62% HTML 0.38%
helix-ui-webcomponents react react-wrapper webcomponents-framework

helix-react's People

Contributors

100stacks avatar abrande avatar cathysiller avatar citguy avatar dependabot[bot] avatar michaelmang avatar nicko-winner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

helix-react's Issues

Configure Storybook

As a Consumer, I would like to have documentation around how to consume helix-react components, so that I can use them in my application.

As a Developer, I would like to have documentation that automatically updates, so that I can build components easier.

Automated Continuous Deployment

  • master branch
    • deploy manually for each release
    • documentation updates
    • src updates
    • test updates
  • netlify branch
    • automatically deploy when PR merged
    • documentation updates only

Roadmap

Tentative Roadmap

Phase 0

  • Document contribution guidelines (core maintainers, review process, etc.)
  • Initialize Wiki to document standards (naming, structure, tabs vs spaces, etc.)
  • Prototype dev pipeline (How will a contributor add/update features?)
    • Build with TypeScript to export HelixUI type definitions?
    • React storybook (or equivalent library) to easily publish component documentation

Phase 1

  • Finalize dev pipeline
  • Publish component documentation
  • Build component for every HelixUI element that emits custom events (see "Custom Elements" docs at https://rackerlabs.github.io/helix-ui)
  • CI/CD Pipeline (Travis/CircleCI, Enzyme, etc.)

Phase 2

  • Build components for CSS-based HelixUI components (e.g., radio, select, pagination, etc.)

JSX Removes Necessary Whitespace

See HelixDesignSystem/helix-ui#283 for details.

Problem

There are several cases where white space is necessary to apply HelixUI styles to inline elements.
JSX removes inline whitespace if element nodes are defined on separate physical lines than non-element nodes within JSX source code.

TL;DR

This JSX template

return (
  <button className="hxBtn">
    Text Node
    <hx-icon type="filter"></hx-icon>
  </button>
)

renders to

<button class="hxBtn">Text Node<hx-icon type="filter"></hx-icon></button>

However, JSX stripped significant whitespace between the text node and the <hx-icon> that CSS expects to be present in order to distance the icon properly from the text.

Solution

When building React components, strategically add white-space-only text nodes into JSX templates using the { " " } syntax.

This JSX template

return (
  <button className="hxBtn">
    Text Node
    { " " }
    <hx-icon type="filter"></hx-icon>
  </button>
)

renders to

  <button class="hxBtn">Text Node <hx-icon type="filter"></hx-icon></button>

This time, JSX inserts the needed white space between the text node and <hx-icon> element.

Checkbox

<Checkbox/> component to wrap change event from the HelixUI <hx-checkbox> element.

  • Keep in mind that the <hx-checkbox> element will eventually be replaced with semantic HTML for integration into Helix-styled forms.

Initialize Rollup

As a Developer, I would like to run a command to generate distributable assets, so that I don't have to build them manually.


  • Generate in CommonJS format, for Node consumption.

Dev Pipeline

As a developer, I would like to know how to set up my local dev environment, so that I can contribute updates as fast as possible.


  • Netlify should only deploy documentation on merges to release branch (not master).
  • Linting should run automatically as contributors develop locally
    • all messages should be warnings to the developer
  • Linting should run automatically on PR submit/update
    • any linting issues should immediately fail PR validation

FileInput

<FileInput/> component to wrap <hx-file-input> element.

  • This may or may not need to absorb click events from <hx-file-input>.

HelixApp

<HelixApp/> component to wrap layout of Helix app content.

<div id="app"><!-- mount React app here -->
  <div id="stage">
    <!-- (optional) Product Navigation -->
    <nav id="nav">...</nav>

    <!-- (optional) Left Rail -->
    <aside class="hxSiderail">...</aside>

    <main id="content">
      <!-- Application Content goes here -->
    </main>

    <!-- (optional) Right Rail -->
    <aside class="hxSiderail">...</aside>
  </div>
</div>

See https://helix-ui.netlify.com/components/layouts/#stage-area

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.