ReX React UI Component: switch
This project is part of ReX Design System and it can be used to create UI Components compatible with:
React, HTML/CSS and Vue.js
How to install
npm install @rakuten-rex/switch@1.0.0 --save
yarn add @rakuten-rex/switch@1.0.0
Getting started
Storybook Live examples
For a complete guide of properties for React and HTML classes please visit our Storybook page:
https://rakuten-rex.github.io/switch/
Storybook features
- Stories by component types
- HTML raw output
- JSX output
- Stories source code
- Knobs with multiple options
ZeroHeight Documentation
For a complete Documentation including all ReX Design System Components, Live HTML/React examples and Demos please visit:
https://rakuten-rex.github.io/
How to integrate ReX in your project
A) JavaScript modules
React component (JavaScript + CSS Styles)
For plug and play components integration.
Example:
my-component.jsx
// A single Switch
import SwitchToggle from '@rakuten-rex/switch';
function MyCustomComponent() {
return (
<SwitchToggle id='switch' label='Toggle this switch element' name='pet' value='dog' aria-checked={true} checked={true} />
);
}
// Multiple Switches
import SwitchToggleGroup from '@rakuten-rex/switch/SwitchToggleGroup';
function () {
return (
<SwitchToggleGroup options={[{ "id" : "choice1" , "name" : "setting" , "value" : "airplane" , "label" : "Airplane Mode" , "checked" : false, "disabled" : false, "ariaChecked" : false }, { "id" : "choice2" , "name" : "setting" , "value" : "notification" , "label" : "Notification" , "checked" : true, "disabled" : false, "ariaChecked" : true }, { "id" : "choice5" , "name" : "setting" , "value" : "onoff" , "label" : "Show lists" , "checked" : false, "disabled" : true, "ariaChecked" : false }]} />
);
}
Click here to see all working examples in Storybook.
CSS Styles only
For your own JavaScript integration (React, Vue, Angular, etc.) or Static HTML.
Using CSS Variables (Modern Websites and WebApps)
Example:
my-component.jsx
import '@rakuten-rex/switch/SwitchToggle/css';
function MyCustomComponent() {
return (
<div class="rex-switch">
<input type="checkbox" id="switch1" label="Toggle this switch element" value="dog" name="pet" aria-checked="true" checked="" readonly="" />
<label class="rex-switch-label" for="switch1">Toggle switch element</label>
</div>
);
}
Using Static CSS (Legacy Websites)
Example:
my-component.jsx
import '@rakuten-rex/switch/SwitchToggle/css/static';
function MyCustomComponent() {
return (
<div class="rex-switch">
<input type="checkbox" id="switch1" label="Toggle this switch element" value="dog" name="pet" aria-checked="true" checked="" readonly="" />
<label class="rex-switch-label" for="switch1">Toggle switch element</label>
</div>
);
}
Click here to see all working examples in Storybook.
Sass mixins
For your own customization of styles (React, Vue, Angular, etc.) or Static HTML.
Example:
my-styles.scss
@import '@rakuten-rex/switch/Switch/sass/styles.mixin';
.rex-switch {
@include rex-switch();
}
Vue.js
A basic implementation based on HTML structure and import CSS styles into your component.
Example:
my-component.vue
<template>
<div class="rex-switch">
<input type="checkbox" id="switch1" label="Toggle this switch element" value="dog" name="pet" aria-checked="true" checked="" readonly="" />
<label class="rex-switch-label" for="switch1">Toggle switch element</label>
</div>
</template>
<script>
export default {
name: 'MyComponent',
}
</script>
<style scoped>
@import "~@rakuten-rex/switch/SwitchToggle/css";
</style>
B) Static HTML
Copy-paste the stylesheet <link>
into your <head>
tag to load our CSS styles.
Using CSS Variables (Modern Websites and WebApps)
Production mode URL (recommended for Static HTML projects):
https://unpkg.com/@rakuten-rex/switch@1.0.0/SwitchToggle/SwitchToggle.production.min.css
Development mode URL (for local testing):
https://unpkg.com/@rakuten-rex/switch@1.0.0/SwitchToggle/SwitchToggle.development.css
Using Static CSS (Legacy Websites)
https://unpkg.com/@rakuten-rex/switch@1.0.0/SwitchToggle/SwitchToggle.static.css
Single component integration
Add it from unpkg.com CDN (NPM) into your HTML template or HTML static page.
Example:
my-page.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>My Page</title>
<!-- ReX switch -->
<link href="https://unpkg.com/@rakuten-rex/switch@1.0.0/SwitchToggle/SwitchToggle.production.min.css" rel="stylesheet">
</head>
<body>
<div class="rex-switch">
<input type="checkbox" id="switch1" label="Toggle this switch element" value="dog" name="pet" aria-checked="true" checked="" readonly="" />
<label class="rex-switch-label" for="switch1">Toggle switch element</label>
</div>
</body>
</html>
Documentation, source code and distribution
Site | URL | |
---|---|---|
Github (Source Code) | https://github.com/rakuten-rex | |
NPM (Package distribution) | https://www.npmjs.com/org/rakuten-rex | |
ZeroHeight (Documentation) | https://zeroheight.com/390c074f3 |
Project Stack
Front-end |
---|
HTML5 CSS3 & Sass JavaScript ES6 React |
Tools |
---|
webpack Storybook Babel ESLint Prettier |
Features
Styles features | JavaScript features |
---|---|
Theme support via CSS variables | React components splitted by type |
Static CSS styles available for HTML/VueJS/AngularJS | Universal Module Definition support |
Sass mixins for custom builds | |
Reset CSS styles already bundled by HTML tags | |
Removed duplicated CSS props | |
CSS classes prefix rex-
|
Browser Support
PC | Mobile |
---|---|
Chrome 49+ | iOS 9+ (Safari 9.3+, Chrome 78+) |
Safari 9.1+ | Android 6+ (Chrome 78+, Android Browser 76+) |
Firefox 31+ | |
MS Edge 15+ | |
IE 11+ |
Development environment
How to initialize the project for a new repository
npm run setup
How to add a new ReX Component to the project
npm run generate:rex-component
How to start the project
The development environment is based on Storybook, for more info visit https://storybook.js.org/ .
npm start
How to build
The build task will generate a NPM package ready to be published and also a static version of Storybook, one folder for NPM ./npm/@rakuten-rex/switch
and other one for Github pages ./docs
.
npm run build
How to check build version
By using Node http-server, you can check the static version of Storybook with production settings and builds.
npm run serve
How to publish to NPM
Build the project
npm run build
Publish to NPM
Build the project first and then publish it to NPM.
npm run publish:component
Once the process finish, take a look to the NPM site:
https://www.npmjs.com/package/@rakuten-rex/switch
Javascript and React related documents
Take a look to this nice documentation pages to be more familiar with React and modern Javascript:
Official site
https://reactjs.org/docs/getting-started.html
Google Web Fundamentals (the whole site is a must to read)
https://developers.google.com/web/fundamentals/
Webpack as magic bundler
Composing Software series (how to understand Funcional Programming)
https://medium.com/javascript-scene/composing-software-an-introduction-27b72500d6ea
Common React patterns
Understanding Storybook with nice images
https://blog.hichroma.com/the-delightful-storybook-workflow-b322b76fd07