Skip to content
Compare
Choose a tag to compare
@ianmcburnie ianmcburnie released this 21 Jul 20:49
· 2534 commits to master since this release

Skin v3 - Open Source!

Yum!

2608966304_932ee24b3a_z

(I humbly apologise for this tired old joke).


Breaking Changes (since v2.10.1)

A major version update, and going all "open-sauce", gave us the opportunity to clean up a few things, refactor code and simplify our build system where necessary. It also laid the foundations for supporting our exciting new design system (DS6) in parallel with the current system that we all know and love (DS4).

So, all in all, please pay extra careful attention to the following information and be sure to cross reference these notes with the documentation and code examples found on the Skin website.

Package Name Change

You may have noticed this one already. Yes, the package name has changed from skin-ebay to @ebay/skin. Holy birthday cake, Batman!

Yes, for reasons beyond our control, we could not continue with the old name when moving to the public NPM repository. We hope the new name looks just familiar enough to fill you with comfort. There is just one small gotcha to watch out for...

In order to support the newly scoped package name, users of eBay's internal NPM repository must add the following exception to their .npmrc file or .yarnrc file, respectively:

#.npmrc
@ebay:registry=https://registry.npmjs.org

#.yarnrc
"@ebay:registry" "https://registry.npmjs.org/"

If you are not an eBay employee and/or are using the public NPM repository, then you can safely ignore this exception.

Removal of Normalize.css

For various reasons (which we won't go into here), we decided the timing was right to make a clean break with Normalize.css, and remove it as a dependency entirely.

Whilst we feel like we have accounted for most of the benefits of Normalize.css in our own code at a modular level, if you do notice anything unusual in your app, this change will be the most likely culprit.

Removal of Support for Font-Icons in Modules

Skin no longer provides "out of the box" support for font-icons in any of it's modules. For example, the down arrow icon in listbox, or the checkmark icon next to menu items. Inline SVG must be used for those instead.

The icon-font and all of it's icons do still remain however, and won't ever be removed for DS4. So you are free to use them for your own needs as you wish. Sure, it might make you feel a little bit dirty, but we won't judge you.

If you need a specific font-icon converting to SVG please create an issue, or better still, a PR containing the changes.

Removal of "skin-large" Class

First of all, the skin-large Lasso flag is still absolutely required for those apps on that stack leveraging an adaptive approach. The change discussed here is that the .skin-large classname is no longer required on the HTML body.

Instead of using a class to override the base rules with specificity (which felt like a sledgehammer tactic), we now rely on the natural cascade of the large rules appearing last in the CSS source order (with great mental willpower, I am avoiding another sauce joke).

Removal of Deprecated Modules

The previously deprecated alert, iconbutton and tile modules have now been permanently removed. If necessary, please refer to previous release notes for more info about the "whys" and "hows".

Listbox

The SVG icon now requires an additional span wrapper tag. The listbox__icon class moves from the SVG tag to the new span tag. The purpose of the new span tag is to prevent the SVG icon from appearing alongside the native HTML icon in a non-CSS state.

When the SVG tag natively supports the hidden attribute we can again reconsider this markup.

Tabs

Tab panels now require an additional tabs__cell child element. We made this change to better leverage CSS margin-collapse, and for consistency with other modules.

Dialog

Perhaps not so much a breaking change, but more of an "evolution", the dialog gutters and margins have been increased from 8px to 16px for large screens.

Pagination

The class pagination__list was renamed to pagination__items for consistency with tab and menu modules.

Documentation

For those of you who have made contributions to the Skin documentation in the past, notice that the documentation source has now moved to the docs folder. We can now leverage GitHub Pages directly from this folder without the need for a separate branch (the gh-pages branch is no longer used and is scheduled for deletion). This change has radically simplified the build process.


New Features

V3 also introduces a few new additions, which are described below.

Adaptive and Responsive CDN Support

The CDN now provides the following 3 files:

  • skin.min.css - the mobile-first styles for small screens up to 600px (adaptive)
  • skin-large.min.css - the rules for 601px and over (adaptive)
  • skin-full.min.css - small and large rules, with large rules wrapped in media query (responsive)

None of those files contain rules for the grid system. The grid system is considered large enough to be it's own separate entity and download.

Checkbox and Radio Custom Icon

Any SVG icon can now be used as the checked or unchecked state. We anticipate this might be useful in cases where checkboxes or radios are used 'under the hood' for multi-select or single-select use cases (e.g. interactive star rating).

Be careful though, not every icon is going to be suitable for this use case, and may not even be perceived as an interactive control. Great power and responsibility and all that.

Field Group

A new field-group helper class was added which leverages flex box to allow easy side-by-side layout of fluid field controls.

As with everything discussed in these notes, head over to the Skin website to view code examples and documentation.


What's Next?

Next up, we will begin adding some foundational rules and modules for the new design system (DS6) - such as type ramp and button. Head over to the milestones page if you'd like to get involved.


Release notes by Ian.