76 | The ribbon will fit perfectly in your Bootstrap theme. Checkout how it will look with a dark theme: 77 |
78 |86 | Do you like the dark theme? You can find it and many other themes on Colorganize: https://colorganize.com/webTheme/2 87 |
88 |├── .babelrc ├── .gitignore ├── LICENCE ├── README.md ├── dist ├── ReactBootstrapRibbon.js ├── ReactBootstrapRibbonButton.js ├── ReactBootstrapRibbonGroup.js ├── ReactBootstrapRibbonGroupItem.js └── react-bootstrap-ribbon.css ├── docs ├── CNAME ├── android-icon-144x144.png ├── android-icon-192x192.png ├── android-icon-36x36.png ├── android-icon-48x48.png ├── android-icon-72x72.png ├── android-icon-96x96.png ├── apple-icon-114x114.png ├── apple-icon-120x120.png ├── apple-icon-144x144.png ├── apple-icon-152x152.png ├── apple-icon-180x180.png ├── apple-icon-57x57.png ├── apple-icon-60x60.png ├── apple-icon-72x72.png ├── apple-icon-76x76.png ├── apple-icon-precomposed.png ├── apple-icon.png ├── browserconfig.xml ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon-96x96.png ├── favicon.ico ├── index.html ├── manifest.json ├── ms-icon-144x144.png ├── ms-icon-150x150.png ├── ms-icon-310x310.png ├── ms-icon-70x70.png ├── public │ ├── dark.css │ ├── main.css │ └── main.js └── src │ ├── ExampleRibbon.js │ ├── LgkLogo.js │ ├── _dark-theme.scss │ ├── dark.scss │ ├── index.js │ └── main.scss ├── index.js ├── package-lock.json ├── package.json ├── preview_desktop.jpg ├── preview_desktop.png ├── preview_mobile.jpg ├── preview_mobile.png ├── src ├── ReactBootstrapRibbon.js ├── ReactBootstrapRibbonButton.js ├── ReactBootstrapRibbonGroup.js ├── ReactBootstrapRibbonGroupItem.js └── react-bootstrap-ribbon.css └── webpack.config.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@babel/env", 5 | { 6 | "modules": false 7 | } 8 | ], 9 | "@babel/react" 10 | ] 11 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | src/client/public/ 3 | *.tgz 4 | docs/public/dark.js -------------------------------------------------------------------------------- /LICENCE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Lars Gerrit Kliesing (LGK) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # React Bootstrap Ribbon 2 | 3 | Get a Microsoft inspired Ribbon menu for your React app. It uses Bootstrap 4 components.\ 4 | [Find React Bootstrap Ribbon on NPM.](https://www.npmjs.com/package/react-bootstrap-ribbon) 5 | 6 | [](https://www.npmjs.com/package/react-bootstrap-ribbon) 7 | 8 |
17 | Add it with NPM:
18 | npm i -S react-bootstrap-ribbon
19 |
22 | After that you can import the components:
23 | import {Ribbon, RibbonGroup, RibbonGroupItem, RibbonButton} from "react-bootstrap-ribbon";
24 |
27 | Make sure you also embed the CSS:
28 | import "react-bootstrap-ribbon/dist/react-bootstrap-ribbon.css";
29 |
npm i
.npm start
and you should see the example in your browser. You can see the code under ./docs/src/index.js
.
78 |
--------------------------------------------------------------------------------
/dist/ReactBootstrapRibbon.js:
--------------------------------------------------------------------------------
1 | function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2 |
3 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4 |
5 | function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
6 |
7 | function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
8 |
9 | function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
10 |
11 | function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
12 |
13 | function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
14 |
15 | function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
16 |
17 | function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
18 |
19 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
20 |
21 | function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
22 |
23 | import React from "react";
24 | import PropTypes from "prop-types";
25 |
26 | var ReactBootstrapRibbon = /*#__PURE__*/function (_React$Component) {
27 | _inherits(ReactBootstrapRibbon, _React$Component);
28 |
29 | var _super = _createSuper(ReactBootstrapRibbon);
30 |
31 | function ReactBootstrapRibbon() {
32 | var _this;
33 |
34 | _classCallCheck(this, ReactBootstrapRibbon);
35 |
36 | _this = _super.call(this);
37 | _this.state = {
38 | mobileCurrentGroup: 0
39 | };
40 | return _this;
41 | }
42 |
43 | _createClass(ReactBootstrapRibbon, [{
44 | key: "handleChange",
45 | value: function handleChange(event) {
46 | this.setState({
47 | mobileCurrentGroup: event.target.value * 1
48 | });
49 | }
50 | }, {
51 | key: "render",
52 | value: function render() {
53 | var _this2 = this;
54 |
55 | var children = Array.isArray(this.props.children) ? this.props.children : [this.props.children];
56 | return /*#__PURE__*/React.createElement("div", {
57 | className: "bg-light"
58 | }, /*#__PURE__*/React.createElement("div", {
59 | className: "d-".concat(this.props.breakpoint, "-none")
60 | }, /*#__PURE__*/React.createElement("div", {
61 | className: "mobile-ribbon ribbon"
62 | }, /*#__PURE__*/React.createElement("div", {
63 | className: "ribbon-group-content"
64 | }, /*#__PURE__*/React.createElement("select", {
65 | className: "mobile-ribbon-select form-control",
66 | onChange: function onChange(event) {
67 | return _this2.handleChange(event);
68 | }
69 | }, children.map(function (item, index) {
70 | return /*#__PURE__*/React.createElement("option", {
71 | key: index,
72 | value: index
73 | }, item.props.title);
74 | }))), children.map(function (item, index) {
75 | return /*#__PURE__*/React.createElement("div", {
76 | key: index,
77 | className: "ribbon-group-content " + (index === _this2.state.mobileCurrentGroup ? "d-block" : "d-none")
78 | }, /*#__PURE__*/React.createElement("div", {
79 | className: "row no-gutters"
80 | }, item.props.children));
81 | }))), /*#__PURE__*/React.createElement("div", {
82 | className: "d-none d-".concat(this.props.breakpoint, "-block")
83 | }, /*#__PURE__*/React.createElement("div", {
84 | className: "ribbon d-flex",
85 | style: {
86 | height: this.props.height
87 | }
88 | }, /*#__PURE__*/React.createElement("div", {
89 | className: "row no-gutters w-100"
90 | }, this.props.children))));
91 | }
92 | }], [{
93 | key: "defaultProps",
94 | get: function get() {
95 | return {
96 | height: "8rem",
97 | breakpoint: "md"
98 | };
99 | }
100 | }]);
101 |
102 | return ReactBootstrapRibbon;
103 | }(React.Component);
104 |
105 | ReactBootstrapRibbon.propTypes = {
106 | height: PropTypes.string,
107 | breakpoint: PropTypes.oneOf(["sm", "md", "lg", "xl"])
108 | };
109 | export default ReactBootstrapRibbon;
110 |
--------------------------------------------------------------------------------
/dist/ReactBootstrapRibbonButton.js:
--------------------------------------------------------------------------------
1 | function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2 |
3 | function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
4 |
5 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6 |
7 | function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
8 |
9 | function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
10 |
11 | function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
12 |
13 | function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
14 |
15 | function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
16 |
17 | function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
18 |
19 | function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
20 |
21 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
22 |
23 | function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
24 |
25 | import React from "react";
26 |
27 | var ReactBootstrapRibbonButton = /*#__PURE__*/function (_React$Component) {
28 | _inherits(ReactBootstrapRibbonButton, _React$Component);
29 |
30 | var _super = _createSuper(ReactBootstrapRibbonButton);
31 |
32 | function ReactBootstrapRibbonButton() {
33 | _classCallCheck(this, ReactBootstrapRibbonButton);
34 |
35 | return _super.apply(this, arguments);
36 | }
37 |
38 | _createClass(ReactBootstrapRibbonButton, [{
39 | key: "render",
40 | value: function render() {
41 | return /*#__PURE__*/React.createElement("button", _extends({
42 | type: "button",
43 | className: "btn btn-light btn-block text-nowrap"
44 | }, this.props), this.props.children);
45 | }
46 | }]);
47 |
48 | return ReactBootstrapRibbonButton;
49 | }(React.Component);
50 |
51 | export default ReactBootstrapRibbonButton;
52 |
--------------------------------------------------------------------------------
/dist/ReactBootstrapRibbonGroup.js:
--------------------------------------------------------------------------------
1 | function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2 |
3 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4 |
5 | function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
6 |
7 | function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
8 |
9 | function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
10 |
11 | function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
12 |
13 | function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
14 |
15 | function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
16 |
17 | function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
18 |
19 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
20 |
21 | function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
22 |
23 | import React from "react";
24 |
25 | var ReactBootstrapRibbonGroup = /*#__PURE__*/function (_React$Component) {
26 | _inherits(ReactBootstrapRibbonGroup, _React$Component);
27 |
28 | var _super = _createSuper(ReactBootstrapRibbonGroup);
29 |
30 | function ReactBootstrapRibbonGroup() {
31 | _classCallCheck(this, ReactBootstrapRibbonGroup);
32 |
33 | return _super.apply(this, arguments);
34 | }
35 |
36 | _createClass(ReactBootstrapRibbonGroup, [{
37 | key: "render",
38 | value: function render() {
39 | return /*#__PURE__*/React.createElement("div", {
40 | className: "ribbon-col h-100 " + (this.props.colClass ? this.props.colClass : "col-sm-6")
41 | }, /*#__PURE__*/React.createElement("div", {
42 | className: "ribbon-group h-100 d-flex flex-column"
43 | }, /*#__PURE__*/React.createElement("div", {
44 | className: "ribbon-group-content h-100 flex-fill"
45 | }, /*#__PURE__*/React.createElement("div", {
46 | className: "row no-gutters row-2px h-100 p-1"
47 | }, this.props.children)), /*#__PURE__*/React.createElement("div", {
48 | className: "ribbon-group-title text-center"
49 | }, this.props.title)));
50 | }
51 | }]);
52 |
53 | return ReactBootstrapRibbonGroup;
54 | }(React.Component);
55 |
56 | export default ReactBootstrapRibbonGroup;
57 |
--------------------------------------------------------------------------------
/dist/ReactBootstrapRibbonGroupItem.js:
--------------------------------------------------------------------------------
1 | function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2 |
3 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4 |
5 | function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
6 |
7 | function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
8 |
9 | function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
10 |
11 | function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
12 |
13 | function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
14 |
15 | function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
16 |
17 | function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
18 |
19 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
20 |
21 | function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
22 |
23 | import React from "react";
24 |
25 | var ReactBootstrapRibbonGroupItem = /*#__PURE__*/function (_React$Component) {
26 | _inherits(ReactBootstrapRibbonGroupItem, _React$Component);
27 |
28 | var _super = _createSuper(ReactBootstrapRibbonGroupItem);
29 |
30 | function ReactBootstrapRibbonGroupItem() {
31 | _classCallCheck(this, ReactBootstrapRibbonGroupItem);
32 |
33 | return _super.apply(this, arguments);
34 | }
35 |
36 | _createClass(ReactBootstrapRibbonGroupItem, [{
37 | key: "render",
38 | value: function render() {
39 | return /*#__PURE__*/React.createElement("div", {
40 | className: "d-md-flex " + (this.props.colClass ? this.props.colClass : "col-6")
41 | }, this.props.children);
42 | }
43 | }]);
44 |
45 | return ReactBootstrapRibbonGroupItem;
46 | }(React.Component);
47 |
48 | export default ReactBootstrapRibbonGroupItem;
49 |
--------------------------------------------------------------------------------
/dist/react-bootstrap-ribbon.css:
--------------------------------------------------------------------------------
1 | .ribbon-col:not(:last-child) .ribbon-group {
2 | box-shadow: inset -1px 0 1px rgba(0,0,0,.1);
3 | }
4 |
5 | .ribbon-group-title {
6 | background-color: rgba(0,0,0,.1);
7 | }
--------------------------------------------------------------------------------
/docs/CNAME:
--------------------------------------------------------------------------------
1 | ribbon.lgk.io
--------------------------------------------------------------------------------
/docs/android-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/android-icon-144x144.png
--------------------------------------------------------------------------------
/docs/android-icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/android-icon-192x192.png
--------------------------------------------------------------------------------
/docs/android-icon-36x36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/android-icon-36x36.png
--------------------------------------------------------------------------------
/docs/android-icon-48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/android-icon-48x48.png
--------------------------------------------------------------------------------
/docs/android-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/android-icon-72x72.png
--------------------------------------------------------------------------------
/docs/android-icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/android-icon-96x96.png
--------------------------------------------------------------------------------
/docs/apple-icon-114x114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/apple-icon-114x114.png
--------------------------------------------------------------------------------
/docs/apple-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/apple-icon-120x120.png
--------------------------------------------------------------------------------
/docs/apple-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/apple-icon-144x144.png
--------------------------------------------------------------------------------
/docs/apple-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/apple-icon-152x152.png
--------------------------------------------------------------------------------
/docs/apple-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/apple-icon-180x180.png
--------------------------------------------------------------------------------
/docs/apple-icon-57x57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/apple-icon-57x57.png
--------------------------------------------------------------------------------
/docs/apple-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/apple-icon-60x60.png
--------------------------------------------------------------------------------
/docs/apple-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/apple-icon-72x72.png
--------------------------------------------------------------------------------
/docs/apple-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/apple-icon-76x76.png
--------------------------------------------------------------------------------
/docs/apple-icon-precomposed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/apple-icon-precomposed.png
--------------------------------------------------------------------------------
/docs/apple-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lgkonline/react-bootstrap-ribbon/bca8125be14a7d77bcffce3d3fd9e088d41f63cc/docs/apple-icon.png
--------------------------------------------------------------------------------
/docs/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 | A ribbon menu inspired by Microsoft for React using Bootstrap
44 |76 | The ribbon will fit perfectly in your Bootstrap theme. Checkout how it will look with a dark theme: 77 |
78 |86 | Do you like the dark theme? You can find it and many other themes on Colorganize: https://colorganize.com/webTheme/2 87 |
88 |92 | { e.preventDefault(); setShowExampleCode(!showExampleCode); }}>Show example code 93 |
94 | {showExampleCode && 95 |113 | Use multiple ribbons and them into Bootstraps Tab components. You can do this with react-bootstrap 114 | {" "}or reactstrap. 115 |
116 | 117 |This is the recommended method. This way you'll always get the latest version.
216 | 217 |
218 | npm install --save react-bootstrap-ribbon
219 |