Giter Site home page Giter Site logo

pier1 / rocketbelt Goto Github PK

View Code? Open in Web Editor NEW
9.0 4.0 15.0 30.8 MB

Rocketbelt is a UX-focused, responsive, and mobile-first pattern library collaboratively assembled at Pier 1 Imports.

Home Page: http://rocketbelt.io

License: MIT License

JavaScript 93.60% CSS 6.38% Shell 0.02%

rocketbelt's Introduction

Rocketbelt

Rocketbelt is a UX-focused, responsive, and mobile-first pattern library collaboratively assembled at Pier 1 Imports.

npm

rocketbelt.io | Rocketbelt on GitHub

Introduction

Rocketbelt is a pattern library that addresses recurring design problems across the ecommerce landscape.

It strives to be a comprehensive, living document that serves the clarity of design decisions. It facilitates a shared vocabulary and therefore a shared understanding of user interfaces.

The pattern library guarantees consistency in the online experience--critical since the experience is the brand.

Rocketbelt ensures UI components are reusable, efficient, and easily maintained. It accelerates UI development by providing building blocks to quickly build potentially complicated interactions. The pattern library allows rapid prototyping to also be high fidelity.

Features

  • SASS-based patterns
  • Auto-updating, inline code snippets
  • Flexbox grid & component layouts
  • Responsive & mobile-first
  • User-definable browser support & prefix-free development
  • Easy cross-browser/cross-device testing via BrowserSync
  • Coming soon: Automated visual regression tests of all patterns

Getting Started

Browse the pattern library at rocketbelt.io or fork the GitHub repo! Then build your fork and run a local instance by running npm install && gulp.

Contributing

Rocketbelt is a collaborative, living document and your contributions are valued--please submit GitHub issues and pull requests.

Acknowledgements

BrowserStack

BrowserStack generously supports Rocketbelt's goal of cross-browser & cross-device compatibility.

rocketbelt's People

Contributors

chanceaclark avatar dang81 avatar dependabot[bot] avatar kendrick avatar pmenh avatar rodrigrv avatar svdvs avatar wratho avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

rocketbelt's Issues

Use postcss-normalize

Replace the static @import of normalize.css with a PostCSS plugin. This will slim down the built CSS and allow us to ditch parts of normalize.css as UA stylesheets become more consistent from browser to browser.

Tabcordion styling

Tweak the tabcordion styling to make what's clickable a little more obvious:

  • Unselected tab text should be blue
  • Selected tab text should be gray
  • Fix the expand/collapse icon in accordion mode

Build .sass-lint.yml sort order from .csscomb.json

We need the property sort order defined in both .sass-lint.yml and in .csscomb.json so that

  1. gulp lint-sass can enforces a property sort order
  2. Editors can use CSS Comb to auto-sort properties in the preferred order (defined in .csscomb.json)

Because they're enforced via 2 different tools, there is duplicate information that could easily get out of sync.

To fix this, let's build a new Gulp task that reads the source-order properties from .csscomb.json, converts the array to YAML, and overwrites property-sort-order.order in .sass-lint.yml. This task should run as a prerequisite to the lint-sass task.

Build tag components

Rocketbelt needs tags with color & size variations. These will be used to draw attention to item metadata.

Build icons example page

Should use the SVG sprite to layout all the icons & serve as a reference on <use xlink:href="#rb-icon-foo" />

Unicode convenience map/function

Unicode characters for generated content aren't easily remembered. Add a SASS function that wraps a map so that unicode characters can be accessed via something like unicode('nbsp'), unicode('horizontal-bar'), etc.

Add `a11y` linting.

Accessibility is a core tenet of Rocketbelt, but it's not yet baked in. An a11y linter needs to be part of a build task so that developing accessible components is easier, and so that a deployment can fail if it contains inaccessible component code.

Break Gulpfile into pieces

Sideshow Bob Loading

The project is big enough that the Gulpfile is becoming a bit unwieldy. Probably a good idea to chunk it up with a technique similar to this.

Feature :: Valid classes on forms fields

Dropping this in here for a possible feature of valid classes on form fields.

Inputs, selects, or textareas (I/S/T's) that have been appended a .valid class would have border with the success color.

  • I/S/T's with focus should have focused styles instead of valid styles.
  • I/S/T's not focused and not dirty should not be valid.

Add flexibility.js script

Rocketbelt needs to support IE9 (for now). It also needs to incorporate modern layouts via Flexbox. Luckily, flexibility.js can polyfill Flexbox properties in older browsers.

The Gulp task already generates the -js-* properties that flexibility.js targets… so Rocketbelt only needs to add the script itself.

Feature Detection

Rocketbelt needs to style certain elements differently on touch devices than on non-touch devices.

Rethink the default button

Creating a button—especially a primary button—should be intentional and take some amount of effort. Perhaps a button with no decorator (e.g. <button> or .button) should be a text button.

(This could ameliorate some of the crazy selectors generated by this chunk of SASS.)

Icon system with an SVG sprite

Icon fonts are so (new Date()).getFullYear() - 1. Create an icon font equivalent using an SVG spriting technique via gulp-svg-sprite. It would be great if all SVGs could be kept within one Sketch file, then exported via sketchtool and piped to gulp-svg-sprite.

Sprite

Paragraph last-of-type margin

A zero-margin property was added for last-of-type during the initial typography design. This was implemented with longer-form use in mind but is requiring lots of overrides when content is sprinkled in between paragraphs. This property should be removed.

Dialog accessibility

To provide acceptable accessibility, the Rocketbelt dialog (modal) should:

  • Allow keyboard navigation between default modal UI elements (close button, action buttons, etc.)
  • Be closable via ESC or by clicking/tapping outside of the dialog
  • Trap keyboard focus when opened
  • Return keyboard focus to the element that opened the dialog
  • Provide aria-labelledby & aria-label attributes to indicate the purpose/content of the dialog
  • Use proper semantics
    • Dialog should be marked up as a <section> with role=dialog
    • Toggle the aria-hidden attribute when closed/opened
    • Use only <button> elements to close the dialog

Fix SASS linting issues

Embetter the SASS by fixing common-sense linting issues. The fix should include updates to .sass-lint.yml to loosen rules where necessary.

Get rid of symlinks

Symlinks aren't needed outside of the build process, and are making life painful for users on Windows.

Left nav truncated

With too many items the left nav doesn't scroll and the items are truncated.

Slim down the navigation JS

It's more configurable than we need and consequentially is a bigger download than we'd like. Streamline the thing to reduce the overall page weight.

Responsive image gallery

An image gallery in Rocketbelt should display the carousel (thumbnails) as follows:

  • Mobile widths: hidden
  • Desktop/Tablet widths: below the main image

Radio button style

Default radio button styling looks disabled. Give it a 2px border with a white background instead of a solid gray background.

Rich tooltips

Rocketbelt's tooltips need to be augmented to work with HTML content. (Right now they're text-only based on data attributes.)
General AC:

  • They should be able to be triggered via mouse or keyboard (triggering element should accept keyboard focus)
  • Tooltip should be an element with role="tooltip" that's linked to the triggering element via aria-describedby
  • Extend the existing tooltip styles
  • Allow top/right/bottom/left positioning of tooltip (similar to existing text tooltip)

See http://codepen.io/mpiotrowicz/pen/PwQYMd for a good working example.

Basic image gallery

Rocketbelt lacks a basic image gallery. The experience must be touch-friendly and should closely mimic native behavior when swiping between images on mobile devices.

Subpixel antialiasing

Light text on a dark background looks less than ideal. Add a subpixel antialiasing class to remedy this.

.selector {
  -webkit-font-smoothing: subpixel-antialiased;
  -moz-osx-font-smoothing: auto;
}

Slim down modal JS

It's more configurable than we need and huge as a consequence. Streamline the thing to reduce the overall page weight.

IE fixes

The left nav is broken on the docs site in IE.

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.