sbx-crm-menu-ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,30 @@
1
+ # sbx-crm-menu-ui
2
+
3
+ > Menu Create by SBX Company for CRM.
4
+
5
+ [![NPM](https://img.shields.io/npm/v/sbx-crm-menu-ui.svg)](https://www.npmjs.com/package/sbx-crm-menu-ui) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install --save sbx-crm-menu-ui
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```tsx
16
+ import React, { Component } from 'react'
17
+
18
+ import MyComponent from 'sbx-crm-menu-ui'
19
+ import 'sbx-crm-menu-ui/dist/index.css'
20
+
21
+ class Example extends Component {
22
+ render() {
23
+ return <MyComponent />
24
+ }
25
+ }
26
+ ```
27
+
28
+ ## License
29
+
30
+ ISC © [Frank Carpio](https://github.com/Frank Carpio)
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export default function LanguageDropdown(): React.JSX.Element;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ interface Props {
3
+ email: string;
4
+ name: string;
5
+ }
6
+ export default function UserInfo({ name, email }: Props): React.JSX.Element;
7
+ export {};
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export default function Dropdown(): React.JSX.Element;
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export default function TopNavBarComponent(): React.JSX.Element;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const SidebarComponent: () => React.JSX.Element;
3
+ export default SidebarComponent;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { SidebarItemProps } from '../../../types/Common';
3
+ declare const SidebarItem: ({ route }: SidebarItemProps) => React.JSX.Element;
4
+ export default SidebarItem;
@@ -0,0 +1,13 @@
1
+ import { Route } from "../../../../types/Common";
2
+ export declare const generateSubMenuData: (labels: string[]) => Route[];
3
+ declare const subMenuDataHome: Route[];
4
+ declare const subMenuDataAnalytics: Route[];
5
+ declare const subMenuDataProcess: Route[];
6
+ declare const subMenuDataForm: Route[];
7
+ declare const subMenuDataComunications: Route[];
8
+ declare const subMenuDataDataProviders: Route[];
9
+ declare const subMenuData: Route[];
10
+ declare const subMenuDataReports: Route[];
11
+ declare const subMenuDataConfig: Route[];
12
+ declare const subMenuDataMarketing: Route[];
13
+ export { subMenuDataHome, subMenuData, subMenuDataComunications, subMenuDataConfig, subMenuDataDataProviders, subMenuDataForm, subMenuDataReports, subMenuDataMarketing, subMenuDataAnalytics, subMenuDataProcess, };
package/dist/index.css ADDED
@@ -0,0 +1,307 @@
1
+ .crm-class-sidebar {
2
+ width: 250px;
3
+ height: 100%;
4
+ color: white;
5
+ position: fixed;
6
+ top: 0;
7
+ left: 0;
8
+ overflow-x: hidden;
9
+ padding-top: 20px;
10
+ transition: 0.5s;
11
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
12
+ }
13
+
14
+ *,
15
+ ::after,
16
+ ::before {
17
+ box-sizing: border-box;
18
+ }
19
+
20
+ .crm-class-sidebar {
21
+ width: 320px;
22
+ height: 100%;
23
+ color: white;
24
+ position: fixed;
25
+ top: 0;
26
+ left: 0;
27
+ overflow-x: hidden;
28
+ padding-top: 20px;
29
+ transition: 0.5s;
30
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
31
+ }
32
+
33
+ .crm-class-sidebar-list {
34
+ list-style-type: none;
35
+ padding: 10px 20px;
36
+ margin: 0;
37
+ color: #555;
38
+ position: relative;
39
+ }
40
+ .crm-class-sidebar-list .cmr-class-tittle {
41
+ font-weight: bold;
42
+ margin-bottom: 10px;
43
+ display: block;
44
+ color: #3f6ad8;
45
+ }
46
+ .crm-class-sidebar-list .crm-class-sidebar-li {
47
+ padding: 10px 15px;
48
+ font-size: 16px;
49
+ transition: 0.3s;
50
+ cursor: pointer;
51
+ display: flex;
52
+ }
53
+ .crm-class-sidebar-list .crm-class-sidebar-li:hover {
54
+ background-color: #e0f3ff;
55
+ border-radius: 4px;
56
+ -webkit-border-radius: 4px;
57
+ -moz-border-radius: 4px;
58
+ -ms-border-radius: 4px;
59
+ -o-border-radius: 4px;
60
+ }
61
+
62
+ .cmr-class-content-sub-menu-items {
63
+ padding-top: 0.5rem;
64
+ padding-bottom: 0.5rem;
65
+ padding-left: 0.6rem;
66
+ padding-right: 0.4rem;
67
+ cursor: pointer;
68
+ }
69
+ .cmr-class-content-sub-menu-items:hover {
70
+ background-color: #e0f3ff;
71
+ border-radius: 4px;
72
+ -webkit-border-radius: 4px;
73
+ -moz-border-radius: 4px;
74
+ -ms-border-radius: 4px;
75
+ -o-border-radius: 4px;
76
+ color: #3f6ad8;
77
+ }
78
+
79
+ .crm-class-sidebar-sub-menu-list {
80
+ list-style-type: none;
81
+ padding: 10px 20px;
82
+ margin: 0;
83
+ color: #555;
84
+ position: relative;
85
+ }
86
+ .crm-class-sidebar-sub-menu-list::before {
87
+ content: "";
88
+ height: 100%;
89
+ opacity: 1;
90
+ width: 3px;
91
+ background: #e0f3ff;
92
+ position: absolute;
93
+ left: 20px;
94
+ top: 0;
95
+ border-radius: 15px;
96
+ }
97
+
98
+ .cmr-class-top-nav-bar {
99
+ background-color: white;
100
+ display: flex;
101
+ align-items: center;
102
+ align-content: center;
103
+ flex: 1 1;
104
+ padding: 0 1.5rem;
105
+ height: 80px;
106
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
107
+ position: relative;
108
+ z-index: 20;
109
+ }
110
+
111
+ .cmr-class-flex-container {
112
+ display: flex;
113
+ align-items: center;
114
+ }
115
+
116
+ .cmr-class-icon-container {
117
+ width: 60px;
118
+ height: 60px;
119
+ border: none;
120
+ padding: 0;
121
+ outline: none;
122
+ position: relative;
123
+ cursor: pointer;
124
+ transition: all 0.3s ease-in-out;
125
+ background: rgba(0, 0, 0, 0.06);
126
+ border-radius: 30px;
127
+ display: flex;
128
+ align-items: center;
129
+ justify-content: center;
130
+ }
131
+
132
+ .cmr-class-top-nav-bar-avatar {
133
+ width: 40px;
134
+ height: 40px;
135
+ border: none;
136
+ padding: 0;
137
+ outline: none;
138
+ position: relative;
139
+ cursor: pointer;
140
+ transition: all 0.3s ease-in-out;
141
+ background: #9b6443;
142
+ border-radius: 30px;
143
+ display: flex;
144
+ align-items: center;
145
+ justify-content: center;
146
+ color: white;
147
+ }
148
+
149
+ .cmr-class-top-nav-bar-options {
150
+ display: flex;
151
+ margin-left: auto;
152
+ }
153
+
154
+ .cmr-class-dropdown {
155
+ position: relative;
156
+ display: inline-flex;
157
+ align-items: center;
158
+ }
159
+
160
+ .cmr-class-top-nav-bar-info-user {
161
+ display: flex;
162
+ flex-direction: column;
163
+ }
164
+
165
+ .cmr-class-dropdown-content {
166
+ display: none;
167
+ position: absolute;
168
+ background-color: #f9f9f9;
169
+ min-width: 160px;
170
+ box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
171
+ padding: 12px 16px;
172
+ z-index: 1;
173
+ }
174
+
175
+ .cmr-class-cursor-pointer {
176
+ cursor: pointer;
177
+ }
178
+
179
+ .cmr-class-font-10 {
180
+ font-size: 10px;
181
+ }
182
+
183
+ .cmr-class-slate-gray {
184
+ color: #495057;
185
+ }
186
+
187
+ .cmr-class-ml-20 {
188
+ margin-left: 20px;
189
+ }
190
+
191
+ .cmr-class-mr-10 {
192
+ margin-right: 10px;
193
+ }
194
+
195
+ .cmr-class-color-icon {
196
+ color: #495057;
197
+ }
198
+
199
+ .cmr-class-ml-auto {
200
+ margin-left: auto;
201
+ }
202
+
203
+ .cmr-class-list-none {
204
+ list-style-type: none;
205
+ }
206
+
207
+ .cmr-class-font-bold {
208
+ font-weight: 900;
209
+ }
210
+
211
+ .cmr-class-mt-70 {
212
+ margin-top: 70px;
213
+ }
214
+
215
+ .cmr-class-mr-20 {
216
+ margin-right: 20px;
217
+ }
218
+
219
+ /*/*/
220
+ .cmr-class-content-flag {
221
+ width: 55px;
222
+ height: 55px;
223
+ border: none;
224
+ padding: 0;
225
+ outline: none;
226
+ position: relative;
227
+ cursor: pointer;
228
+ transition: all 0.3s ease-in-out;
229
+ background: rgba(0, 0, 0, 0.06);
230
+ border-radius: 30px;
231
+ display: flex;
232
+ align-items: center;
233
+ justify-content: center;
234
+ }
235
+
236
+ .cmr-class-flag {
237
+ display: inline-block;
238
+ width: 20px;
239
+ height: 15px;
240
+ background-size: cover;
241
+ }
242
+
243
+ .cmr-class-flag.large {
244
+ width: 30px;
245
+ height: 20px;
246
+ }
247
+
248
+ .cmr-class-flag.US {
249
+ background-image: url("https://flagcdn.com/w20/us.png");
250
+ }
251
+
252
+ .cmr-class-flag.ES {
253
+ background-image: url("https://flagcdn.com/w20/es.png");
254
+ }
255
+
256
+ .cmr-class-flag.NL {
257
+ background-image: url("https://flagcdn.com/w20/nl.png");
258
+ }
259
+
260
+ .cmr-class-dropdown-flag {
261
+ position: relative;
262
+ }
263
+
264
+ .cmr-class-dropdown-toggle {
265
+ background: none;
266
+ border: none;
267
+ cursor: pointer;
268
+ font-size: 16px;
269
+ padding: 10px;
270
+ }
271
+
272
+ .cmr-class-dropdown-menu {
273
+ display: none;
274
+ position: absolute;
275
+ background-color: white;
276
+ box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
277
+ padding: 12px 16px;
278
+ z-index: 1;
279
+ min-width: 200px;
280
+ }
281
+
282
+ .cmr-class-dropdown-menu .cmr-class-dropdown-header {
283
+ font-weight: bold;
284
+ margin-bottom: 8px;
285
+ }
286
+
287
+ .cmr-class-dropdown-flag:hover .cmr-class-dropdown-menu {
288
+ display: block;
289
+ }
290
+
291
+ .cmr-class-dropdown-item {
292
+ background: none;
293
+ border: none;
294
+ cursor: pointer;
295
+ display: flex;
296
+ align-items: center;
297
+ padding: 8px 0;
298
+ width: 100%;
299
+ text-align: left;
300
+ }
301
+
302
+ .cmr-class-selected-language {
303
+ display: flex;
304
+ align-items: center;
305
+ justify-items: center;
306
+ justify-content: center;
307
+ }
@@ -0,0 +1,4 @@
1
+ import TopNavBarComponent from './components/menu/TopNavBarComponent/TopNavBarComponent';
2
+ import SidebarComponent from './components/menu/sidebar/Sidebar';
3
+ import './styles.module.scss';
4
+ export { TopNavBarComponent, SidebarComponent };
package/dist/index.js ADDED
@@ -0,0 +1,264 @@
1
+ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
2
+
3
+ var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
4
+ var reactFontawesome = require('@fortawesome/react-fontawesome');
5
+ var React = require('react');
6
+ var React__default = _interopDefault(React);
7
+ var freeRegularSvgIcons = require('@fortawesome/free-regular-svg-icons');
8
+
9
+ function Dropdown() {
10
+ var _useState = React.useState(false),
11
+ isDropdownOpen = _useState[0],
12
+ setIsDropdownOpen = _useState[1];
13
+ var toggleDropdown = function toggleDropdown() {
14
+ setIsDropdownOpen(!isDropdownOpen);
15
+ };
16
+ return React__default.createElement("div", {
17
+ className: "cmr-class-dropdown cmr-class-mr-20",
18
+ onClick: toggleDropdown
19
+ }, React__default.createElement("span", {
20
+ className: "cmr-class-top-nav-bar-avatar"
21
+ }, "A"), React__default.createElement("span", {
22
+ className: "cmr-class-ml-20"
23
+ }, React__default.createElement(reactFontawesome.FontAwesomeIcon, {
24
+ icon: isDropdownOpen ? freeSolidSvgIcons.faChevronUp : freeSolidSvgIcons.faChevronDown,
25
+ className: "cmr-class-color-icon cmr-class-slate-gray"
26
+ })), isDropdownOpen && React__default.createElement("div", {
27
+ className: "cmr-class-dropdown-content"
28
+ }, React__default.createElement("p", null, "Dropdown content here")));
29
+ }
30
+
31
+ function UserInfo(_ref) {
32
+ var name = _ref.name,
33
+ email = _ref.email;
34
+ return React__default.createElement("div", {
35
+ className: "cmr-class-top-nav-bar-info-user"
36
+ }, React__default.createElement("span", {
37
+ className: "cmr-class-font-bold"
38
+ }, name, " "), React__default.createElement("span", null, email));
39
+ }
40
+
41
+ var languages = [{
42
+ code: "EN",
43
+ label: "English",
44
+ flag: "US"
45
+ }, {
46
+ code: "ES",
47
+ label: "Español",
48
+ flag: "ES"
49
+ }, {
50
+ code: 'NL',
51
+ label: 'Nederlands',
52
+ flag: 'NL'
53
+ }];
54
+ function LanguageDropdown() {
55
+ var _useState = React.useState(languages[0]),
56
+ selectedLanguage = _useState[0],
57
+ setSelectedLanguage = _useState[1];
58
+ var handleLanguageChange = function handleLanguageChange(language) {
59
+ setSelectedLanguage(language);
60
+ };
61
+ return React__default.createElement("div", {
62
+ className: "cmr-class-dropdown-flag cmr-class-mr-20"
63
+ }, React__default.createElement("span", {
64
+ className: "cmr-class-content-flag"
65
+ }, React__default.createElement("span", {
66
+ className: "cmr-class-flag large " + selectedLanguage.flag
67
+ })), React__default.createElement("div", {
68
+ className: "cmr-class-dropdown-menu"
69
+ }, React__default.createElement("button", {
70
+ className: "cmr-class-dropdown-toggle",
71
+ type: "button"
72
+ }, "Choose Language"), React__default.createElement("h6", {
73
+ className: "cmr-class-dropdown-header"
74
+ }, "Popular Languages"), languages.map(function (language) {
75
+ return React__default.createElement("button", {
76
+ key: language.code,
77
+ type: "button",
78
+ className: "cmr-class-dropdown-item ",
79
+ onClick: function onClick() {
80
+ return handleLanguageChange(language);
81
+ }
82
+ }, React__default.createElement("span", {
83
+ className: " opacity-8 cmr-class-flag large cmr-class-mr-20 " + language.flag
84
+ }), language.code);
85
+ })));
86
+ }
87
+
88
+ function TopNavBarComponent() {
89
+ return React__default.createElement("div", {
90
+ className: "cmr-class-top-nav-bar"
91
+ }, React__default.createElement("div", {
92
+ className: "cmr-class-flex-container"
93
+ }, React__default.createElement(reactFontawesome.FontAwesomeIcon, {
94
+ icon: freeSolidSvgIcons.faBars,
95
+ color: "#3f6ad8",
96
+ size: "2x",
97
+ className: "cmr-class-mr-20 cmr-class-cursor-pointer"
98
+ }), React__default.createElement("div", {
99
+ className: "cmr-class-flex-container"
100
+ }, React__default.createElement("div", {
101
+ className: "cmr-class-icon-container cmr-class-mr-20"
102
+ }, React__default.createElement(reactFontawesome.FontAwesomeIcon, {
103
+ icon: freeSolidSvgIcons.faSearch,
104
+ color: "#3f6ad8",
105
+ className: "",
106
+ size: "2x"
107
+ })), React__default.createElement("img", {
108
+ src: "https://sbxcloud.com/www/ibuyflowers/prod/test/images/logo-ibuyflowers.svg",
109
+ style: {
110
+ height: '40px'
111
+ },
112
+ alt: ""
113
+ }))), React__default.createElement("div", {
114
+ className: "cmr-class-top-nav-bar-options"
115
+ }, React__default.createElement(LanguageDropdown, null), React__default.createElement(Dropdown, null), React__default.createElement(UserInfo, {
116
+ name: "Admin Chilco",
117
+ email: "box+admin.chilco@socobox.co"
118
+ })));
119
+ }
120
+
121
+ function uuidV4() {
122
+ return ("" + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {
123
+ return (((c ^ crypto.getRandomValues(new Uint8Array(1))[0]) & 15) >> c / 4).toString(16);
124
+ });
125
+ }
126
+
127
+ var SidebarItem = function SidebarItem(_ref) {
128
+ var route = _ref.route;
129
+ var icon = route.icon,
130
+ label = route.label,
131
+ subRoutes = route.subRoutes,
132
+ className = route.className;
133
+ var _useState = React.useState(false),
134
+ isSubMenuOpen = _useState[0],
135
+ setIsSubMenuOpen = _useState[1];
136
+ var toggleSubMenu = function toggleSubMenu() {
137
+ setIsSubMenuOpen(function (prevState) {
138
+ return !prevState;
139
+ });
140
+ };
141
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement("li", {
142
+ className: "crm-class-sidebar-li " + (className != null ? className : ''),
143
+ onClick: toggleSubMenu
144
+ }, icon && icon, React__default.createElement("span", {
145
+ className: (isSubMenuOpen ? 'cmr-class-font-bold' : '') + " "
146
+ }, label), (subRoutes === null || subRoutes === void 0 ? void 0 : subRoutes.length) > 0 && React__default.createElement("span", {
147
+ className: "cmr-class-ml-auto"
148
+ }, React__default.createElement(reactFontawesome.FontAwesomeIcon, {
149
+ icon: isSubMenuOpen ? freeSolidSvgIcons.faChevronUp : freeSolidSvgIcons.faChevronDown,
150
+ className: "cmr-class-color-icon cmr-class-font-10 cmr-class-slate-gray"
151
+ }))), isSubMenuOpen && (subRoutes === null || subRoutes === void 0 ? void 0 : subRoutes.length) > 0 && React__default.createElement("ul", {
152
+ className: "crm-class-sidebar-sub-menu-list"
153
+ }, subRoutes === null || subRoutes === void 0 ? void 0 : subRoutes.map(function (item) {
154
+ return React__default.createElement(SidebarItem, {
155
+ key: uuidV4(),
156
+ route: item
157
+ });
158
+ })));
159
+ };
160
+
161
+ var generateSubMenuData = function generateSubMenuData(labels) {
162
+ return labels.map(function (label) {
163
+ return {
164
+ label: label,
165
+ className: "cmr-class-ml-20"
166
+ };
167
+ });
168
+ };
169
+ var subMenuDataHome = generateSubMenuData(["Dashboard", "Accounts", "My Tasks", "Web designer"]);
170
+ var subMenuDataAnalytics = generateSubMenuData(["Customer Cohorts", "Product group", "Marketing UTM", "Customer growth", "Customer events", "Claims", "Products sold", "Available Inventory", "Purchase by re order", "Most sold Varieties", "Search terms"]);
171
+ var subMenuDataProcess = generateSubMenuData(["Project manager", "Project list", "Launch process"]);
172
+ var subMenuDataForm = generateSubMenuData(["Form list"]);
173
+ var subMenuDataComunications = generateSubMenuData(["Email Blast", "Template Generator"]);
174
+ var subMenuDataDataProviders = generateSubMenuData(["Data providers"]);
175
+ var subMenuData = generateSubMenuData(["Search Engine", "CMS"]);
176
+ var subMenuDataReports = generateSubMenuData(["Crm reports", "Report generator"]);
177
+ var subMenuDataConfig = generateSubMenuData(["App", "Manage users", "Permissions assignment", "Groups manager", "Crm executions"]);
178
+ var subMenuDataMarketing = generateSubMenuData(["Conversion Rate by Page"]);
179
+
180
+ var generateRoute = function generateRoute(label, icon, subRoutes) {
181
+ if (subRoutes === void 0) {
182
+ subRoutes = [];
183
+ }
184
+ return {
185
+ label: label,
186
+ visible: true,
187
+ enable: true,
188
+ icon: React__default.createElement("span", {
189
+ className: "cmr-class-color-icon cmr-class-mr-10"
190
+ }, icon && React__default.createElement(reactFontawesome.FontAwesomeIcon, {
191
+ icon: icon,
192
+ className: "cmr-class-color-icon"
193
+ })),
194
+ action: function action() {},
195
+ subRoutes: subRoutes.map(function (subRoute) {
196
+ return generateRoute(subRoute.label, subRoute.icon, subRoute.subRoutes || []);
197
+ })
198
+ };
199
+ };
200
+ var generateRoutes = function generateRoutes(routesData) {
201
+ return routesData.map(function (routeData) {
202
+ return generateRoute(routeData.label, routeData === null || routeData === void 0 ? void 0 : routeData.icon, routeData.subRoutes);
203
+ });
204
+ };
205
+ var SidebarComponent = function SidebarComponent() {
206
+ var routesData = [{
207
+ label: 'Home',
208
+ icon: freeRegularSvgIcons.faGem,
209
+ subRoutes: subMenuDataHome
210
+ }, {
211
+ label: 'Analytics',
212
+ icon: freeSolidSvgIcons.faShip,
213
+ subRoutes: subMenuDataAnalytics
214
+ }, {
215
+ label: 'Process',
216
+ icon: freeRegularSvgIcons.faHourglass,
217
+ subRoutes: subMenuDataProcess
218
+ }, {
219
+ label: 'Forms',
220
+ icon: freeSolidSvgIcons.faWallet,
221
+ subRoutes: subMenuDataForm
222
+ }, {
223
+ label: 'Communications',
224
+ icon: freeSolidSvgIcons.faHeadphones,
225
+ subRoutes: subMenuDataComunications
226
+ }, {
227
+ label: 'Data providers',
228
+ icon: freeSolidSvgIcons.faDatabase,
229
+ subRoutes: subMenuDataDataProviders
230
+ }, {
231
+ label: 'Data',
232
+ icon: freeSolidSvgIcons.faCloudDownloadAlt,
233
+ subRoutes: subMenuData
234
+ }, {
235
+ label: 'Reports',
236
+ icon: freeSolidSvgIcons.faCog,
237
+ subRoutes: subMenuDataReports
238
+ }, {
239
+ label: 'Config',
240
+ icon: freeRegularSvgIcons.faGem,
241
+ subRoutes: subMenuDataConfig
242
+ }, {
243
+ label: 'Marketing',
244
+ icon: freeSolidSvgIcons.faBullhorn,
245
+ subRoutes: subMenuDataMarketing
246
+ }];
247
+ var routes = generateRoutes(routesData);
248
+ return React__default.createElement("div", {
249
+ className: "crm-class-sidebar"
250
+ }, React__default.createElement("ul", {
251
+ className: "crm-class-sidebar-list cmr-class-mt-70"
252
+ }, React__default.createElement("span", {
253
+ className: "cmr-class-tittle"
254
+ }, "MENU"), routes.map(function (route, index) {
255
+ return React__default.createElement(SidebarItem, {
256
+ key: "route_" + index,
257
+ route: route
258
+ });
259
+ })));
260
+ };
261
+
262
+ exports.SidebarComponent = SidebarComponent;
263
+ exports.TopNavBarComponent = TopNavBarComponent;
264
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/components/dropdown/Dropdown.tsx","../src/components/contentMenuComponent/UserInfo.tsx","../src/components/contentMenuComponent/LanguageDropdown.tsx","../src/components/menu/TopNavBarComponent/TopNavBarComponent.tsx","../src/utils/utils.ts","../src/components/menu/sidebar/SidebarItem.tsx","../src/components/menu/sidebar/subMenuComponent/SubMenuComponent.tsx","../src/components/menu/sidebar/Sidebar.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons';\n\nexport default function Dropdown() {\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n const toggleDropdown = () => {\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n return (\n <div className=\"cmr-class-dropdown cmr-class-mr-20\" onClick={toggleDropdown}>\n <span className=\"cmr-class-top-nav-bar-avatar\">A</span>\n <span className=\"cmr-class-ml-20\">\n <FontAwesomeIcon\n icon={isDropdownOpen ? faChevronUp : faChevronDown}\n className=\"cmr-class-color-icon cmr-class-slate-gray\"\n />\n </span>\n {isDropdownOpen && (\n <div className=\"cmr-class-dropdown-content\">\n <p>Dropdown content here</p>\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\n\n\ninterface Props{\n email:string;\n name:string;\n}\nexport default function UserInfo({ name, email }:Props) {\n return (\n <div className=\"cmr-class-top-nav-bar-info-user\">\n <span className=\"cmr-class-font-bold\">{name} </span>\n <span>{email}</span>\n </div>\n );\n}","import React, { useState } from \"react\";\n\ninterface Language {\n code: string;\n label: string;\n flag: string;\n}\n\nconst languages: Language[] = [\n { code: \"EN\", label: \"English\", flag: \"US\" },\n { code: \"ES\", label: \"Español\", flag: \"ES\" },\n { code: 'NL', label: 'Nederlands', flag: 'NL' }\n];\n\nexport default function LanguageDropdown() {\n const [selectedLanguage, setSelectedLanguage] = useState<Language>(\n languages[0]\n );\n\n const handleLanguageChange = (language: Language) => {\n setSelectedLanguage(language);\n };\n\n return (\n <div className=\"cmr-class-dropdown-flag cmr-class-mr-20\">\n <span className=\"cmr-class-content-flag\">\n <span className={`cmr-class-flag large ${selectedLanguage.flag}`}></span>\n </span>\n\n <div className=\"cmr-class-dropdown-menu\">\n <button className=\"cmr-class-dropdown-toggle\" type=\"button\">\n Choose Language\n </button>\n <h6 className=\"cmr-class-dropdown-header\">Popular Languages</h6>\n {languages.map((language) => (\n <button\n key={language.code}\n type=\"button\"\n className=\"cmr-class-dropdown-item \"\n onClick={() => handleLanguageChange(language)}\n >\n <span\n className={` opacity-8 cmr-class-flag large cmr-class-mr-20 ${language.flag}`}\n ></span>\n {language.code}\n </button>\n ))}\n </div>\n </div>\n );\n}\n","import { faBars, faSearch } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport React from 'react'\nimport Dropdown from '../../dropdown/Dropdown'\nimport UserInfo from '../../contentMenuComponent/UserInfo'\nimport LanguageDropdown from '../../contentMenuComponent/LanguageDropdown'\n\nexport default function TopNavBarComponent() {\n\n\n return (\n <div className=\"cmr-class-top-nav-bar\">\n <div className=\"cmr-class-flex-container\">\n <FontAwesomeIcon\n icon={faBars}\n color=\"#3f6ad8\"\n size=\"2x\"\n className=\"cmr-class-mr-20 cmr-class-cursor-pointer\"\n />\n <div className=\"cmr-class-flex-container\">\n <div className=\"cmr-class-icon-container cmr-class-mr-20\">\n <FontAwesomeIcon\n icon={faSearch}\n color=\"#3f6ad8\"\n className=\"\"\n size=\"2x\"\n />\n </div>\n\n <img\n src=\"https://sbxcloud.com/www/ibuyflowers/prod/test/images/logo-ibuyflowers.svg\"\n style={{ height: '40px' }}\n alt=\"\"\n />\n </div>\n </div>\n <div className=\"cmr-class-top-nav-bar-options\">\n {/* */}\n\n <LanguageDropdown />\n\n\n <Dropdown />\n <UserInfo name=\"Admin Chilco\" email=\"box+admin.chilco@socobox.co\" />\n </div>\n </div>\n )\n}\n","export function uuidV4() {\n return (\"\" + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c: any) =>\n (\n ((c ^ crypto.getRandomValues(new Uint8Array(1))[0]) & 15) >>\n (c / 4)\n ).toString(16)\n );\n }\n\n\n\n","import React, { useState } from 'react'\nimport { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { SidebarItemProps } from '../../../types/Common'\nimport { uuidV4 } from '../../../utils/utils'\n\nconst SidebarItem = ({ route }: SidebarItemProps) => {\n const { icon, label, subRoutes, className } = route\n const [isSubMenuOpen, setIsSubMenuOpen] = useState(false)\n\n const toggleSubMenu = () => {\n setIsSubMenuOpen((prevState) => !prevState)\n }\n return (\n <React.Fragment>\n <li\n className={`crm-class-sidebar-li ${className ?? ''}`}\n onClick={toggleSubMenu}\n >\n {icon && icon}\n <span className={`${isSubMenuOpen ? 'cmr-class-font-bold' : ''} `}>{label}</span>\n\n {subRoutes?.length! > 0 && (\n <span className=\"cmr-class-ml-auto\">\n <FontAwesomeIcon\n icon={isSubMenuOpen ? faChevronUp : faChevronDown}\n className=\"cmr-class-color-icon cmr-class-font-10 cmr-class-slate-gray\"\n />\n </span>\n )}\n </li>\n {isSubMenuOpen && subRoutes?.length! > 0 && (\n <ul className=\"crm-class-sidebar-sub-menu-list\">\n {subRoutes?.map((item) => (\n <SidebarItem key={uuidV4()} route={item} />\n ))}\n </ul>\n )}\n </React.Fragment>\n )\n}\n\nexport default SidebarItem\n","\nimport { Route } from \"../../../../types/Common\";\n\nexport const generateSubMenuData = (labels: string[]): Route[] => {\n return labels.map((label) => ({\n label,\n className: \"cmr-class-ml-20\",\n }));\n};\n\nconst subMenuDataHome: Route[] = generateSubMenuData([\n \"Dashboard\",\n \"Accounts\",\n \"My Tasks\",\n \"Web designer\",\n]);\n\nconst subMenuDataAnalytics: Route[] = generateSubMenuData([\n \"Customer Cohorts\",\n \"Product group\",\n \"Marketing UTM\",\n \"Customer growth\",\n \"Customer events\",\n \"Claims\",\n \"Products sold\",\n \"Available Inventory\",\n \"Purchase by re order\",\n \"Most sold Varieties\",\n \"Search terms\",\n]);\n\nconst subMenuDataProcess: Route[] = generateSubMenuData([\n \"Project manager\",\n \"Project list\",\n \"Launch process\",\n]);\n\nconst subMenuDataForm: Route[] = generateSubMenuData([\"Form list\"]);\n\nconst subMenuDataComunications: Route[] = generateSubMenuData([\n \"Email Blast\",\n \"Template Generator\",\n]);\n\nconst subMenuDataDataProviders: Route[] = generateSubMenuData([\n \"Data providers\",\n]);\n\nconst subMenuData: Route[] = generateSubMenuData([\"Search Engine\", \"CMS\"]);\n\nconst subMenuDataReports: Route[] = generateSubMenuData([\n \"Crm reports\",\n \"Report generator\",\n]);\n\nconst subMenuDataConfig: Route[] = generateSubMenuData([\n \"App\",\n \"Manage users\",\n \"Permissions assignment\",\n \"Groups manager\",\n \"Crm executions\",\n]);\n\nconst subMenuDataMarketing: Route[] = generateSubMenuData([\n \"Conversion Rate by Page\",\n]);\n\nexport {\n subMenuDataHome,\n subMenuData,\n subMenuDataComunications,\n subMenuDataConfig,\n subMenuDataDataProviders,\n subMenuDataForm,\n subMenuDataReports,\n subMenuDataMarketing,\n subMenuDataAnalytics,\n subMenuDataProcess,\n};\n","import {\n faBullhorn,\n faCloudDownloadAlt,\n faCog,\n faDatabase,\n faHeadphones,\n faShip,\n faWallet,\n IconDefinition\n} from '@fortawesome/free-solid-svg-icons'\n\nimport { faGem, faHourglass } from '@fortawesome/free-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\n\nimport { Route } from '../../../types/Common'\nimport SidebarItem from './SidebarItem'\nimport {\n subMenuData,\n subMenuDataAnalytics,\n subMenuDataComunications,\n subMenuDataConfig,\n subMenuDataDataProviders,\n subMenuDataForm,\n subMenuDataHome,\n subMenuDataMarketing,\n subMenuDataProcess,\n subMenuDataReports\n} from './subMenuComponent/SubMenuComponent'\nimport React from 'react'\n\nconst generateRoute = (\n label: string,\n icon: React.ReactNode | IconDefinition,\n subRoutes: Route[] = []\n): Route => ({\n label,\n visible: true,\n enable: true,\n icon: (\n <span className=\"cmr-class-color-icon cmr-class-mr-10\">\n {icon && (\n <FontAwesomeIcon\n icon={icon as IconDefinition}\n className=\"cmr-class-color-icon\"\n />\n )}\n </span>\n ),\n action: () => {\n },\n subRoutes: subRoutes.map((subRoute) =>\n generateRoute(subRoute.label, subRoute.icon, subRoute.subRoutes || [])\n )\n})\n\nconst generateRoutes = (\n routesData: {\n label: string;\n icon: IconDefinition | undefined;\n subRoutes: Route[];\n }[]\n): Route[] => {\n return routesData.map((routeData) =>\n generateRoute(routeData.label, routeData?.icon!, routeData.subRoutes)\n )\n}\n\nconst SidebarComponent = () => {\n const routesData = [\n {\n label: 'Home',\n icon: faGem,\n subRoutes: subMenuDataHome\n },\n\n { label: 'Analytics', icon: faShip, subRoutes: subMenuDataAnalytics },\n { label: 'Process', icon: faHourglass, subRoutes: subMenuDataProcess },\n { label: 'Forms', icon: faWallet, subRoutes: subMenuDataForm },\n {\n label: 'Communications',\n icon: faHeadphones,\n subRoutes: subMenuDataComunications\n },\n {\n label: 'Data providers',\n icon: faDatabase,\n subRoutes: subMenuDataDataProviders\n },\n { label: 'Data', icon: faCloudDownloadAlt, subRoutes: subMenuData },\n { label: 'Reports', icon: faCog, subRoutes: subMenuDataReports },\n { label: 'Config', icon: faGem, subRoutes: subMenuDataConfig },\n { label: 'Marketing', icon: faBullhorn, subRoutes: subMenuDataMarketing }\n ]\n\n const routes: Route[] = generateRoutes(routesData)\n\n return (\n <div className=\"crm-class-sidebar\">\n <ul className=\"crm-class-sidebar-list cmr-class-mt-70\">\n <span className=\"cmr-class-tittle\">MENU</span>\n \n {routes.map((route, index) => (\n <SidebarItem key={`route_${index}`} route={route} />\n ))}\n\n </ul>\n </div>\n )\n}\nexport default SidebarComponent\n"],"names":["Dropdown","_useState","useState","isDropdownOpen","setIsDropdownOpen","toggleDropdown","React","className","onClick","FontAwesomeIcon","icon","faChevronUp","faChevronDown","UserInfo","_ref","name","email","languages","code","label","flag","LanguageDropdown","selectedLanguage","setSelectedLanguage","handleLanguageChange","language","type","map","key","TopNavBarComponent","faBars","color","size","faSearch","src","style","height","alt","uuidV4","replace","c","crypto","getRandomValues","Uint8Array","toString","SidebarItem","route","subRoutes","isSubMenuOpen","setIsSubMenuOpen","toggleSubMenu","prevState","Fragment","length","item","generateSubMenuData","labels","subMenuDataHome","subMenuDataAnalytics","subMenuDataProcess","subMenuDataForm","subMenuDataComunications","subMenuDataDataProviders","subMenuData","subMenuDataReports","subMenuDataConfig","subMenuDataMarketing","generateRoute","visible","enable","action","subRoute","generateRoutes","routesData","routeData","SidebarComponent","faGem","faShip","faHourglass","faWallet","faHeadphones","faDatabase","faCloudDownloadAlt","faCog","faBullhorn","routes","index"],"mappings":"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"}
@@ -0,0 +1,260 @@
1
+ import { faChevronUp, faChevronDown, faBars, faSearch, faShip, faWallet, faHeadphones, faDatabase, faCloudDownloadAlt, faCog, faBullhorn } from '@fortawesome/free-solid-svg-icons';
2
+ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
+ import React, { useState } from 'react';
4
+ import { faGem, faHourglass } from '@fortawesome/free-regular-svg-icons';
5
+
6
+ function Dropdown() {
7
+ var _useState = useState(false),
8
+ isDropdownOpen = _useState[0],
9
+ setIsDropdownOpen = _useState[1];
10
+ var toggleDropdown = function toggleDropdown() {
11
+ setIsDropdownOpen(!isDropdownOpen);
12
+ };
13
+ return React.createElement("div", {
14
+ className: "cmr-class-dropdown cmr-class-mr-20",
15
+ onClick: toggleDropdown
16
+ }, React.createElement("span", {
17
+ className: "cmr-class-top-nav-bar-avatar"
18
+ }, "A"), React.createElement("span", {
19
+ className: "cmr-class-ml-20"
20
+ }, React.createElement(FontAwesomeIcon, {
21
+ icon: isDropdownOpen ? faChevronUp : faChevronDown,
22
+ className: "cmr-class-color-icon cmr-class-slate-gray"
23
+ })), isDropdownOpen && React.createElement("div", {
24
+ className: "cmr-class-dropdown-content"
25
+ }, React.createElement("p", null, "Dropdown content here")));
26
+ }
27
+
28
+ function UserInfo(_ref) {
29
+ var name = _ref.name,
30
+ email = _ref.email;
31
+ return React.createElement("div", {
32
+ className: "cmr-class-top-nav-bar-info-user"
33
+ }, React.createElement("span", {
34
+ className: "cmr-class-font-bold"
35
+ }, name, " "), React.createElement("span", null, email));
36
+ }
37
+
38
+ var languages = [{
39
+ code: "EN",
40
+ label: "English",
41
+ flag: "US"
42
+ }, {
43
+ code: "ES",
44
+ label: "Español",
45
+ flag: "ES"
46
+ }, {
47
+ code: 'NL',
48
+ label: 'Nederlands',
49
+ flag: 'NL'
50
+ }];
51
+ function LanguageDropdown() {
52
+ var _useState = useState(languages[0]),
53
+ selectedLanguage = _useState[0],
54
+ setSelectedLanguage = _useState[1];
55
+ var handleLanguageChange = function handleLanguageChange(language) {
56
+ setSelectedLanguage(language);
57
+ };
58
+ return React.createElement("div", {
59
+ className: "cmr-class-dropdown-flag cmr-class-mr-20"
60
+ }, React.createElement("span", {
61
+ className: "cmr-class-content-flag"
62
+ }, React.createElement("span", {
63
+ className: "cmr-class-flag large " + selectedLanguage.flag
64
+ })), React.createElement("div", {
65
+ className: "cmr-class-dropdown-menu"
66
+ }, React.createElement("button", {
67
+ className: "cmr-class-dropdown-toggle",
68
+ type: "button"
69
+ }, "Choose Language"), React.createElement("h6", {
70
+ className: "cmr-class-dropdown-header"
71
+ }, "Popular Languages"), languages.map(function (language) {
72
+ return React.createElement("button", {
73
+ key: language.code,
74
+ type: "button",
75
+ className: "cmr-class-dropdown-item ",
76
+ onClick: function onClick() {
77
+ return handleLanguageChange(language);
78
+ }
79
+ }, React.createElement("span", {
80
+ className: " opacity-8 cmr-class-flag large cmr-class-mr-20 " + language.flag
81
+ }), language.code);
82
+ })));
83
+ }
84
+
85
+ function TopNavBarComponent() {
86
+ return React.createElement("div", {
87
+ className: "cmr-class-top-nav-bar"
88
+ }, React.createElement("div", {
89
+ className: "cmr-class-flex-container"
90
+ }, React.createElement(FontAwesomeIcon, {
91
+ icon: faBars,
92
+ color: "#3f6ad8",
93
+ size: "2x",
94
+ className: "cmr-class-mr-20 cmr-class-cursor-pointer"
95
+ }), React.createElement("div", {
96
+ className: "cmr-class-flex-container"
97
+ }, React.createElement("div", {
98
+ className: "cmr-class-icon-container cmr-class-mr-20"
99
+ }, React.createElement(FontAwesomeIcon, {
100
+ icon: faSearch,
101
+ color: "#3f6ad8",
102
+ className: "",
103
+ size: "2x"
104
+ })), React.createElement("img", {
105
+ src: "https://sbxcloud.com/www/ibuyflowers/prod/test/images/logo-ibuyflowers.svg",
106
+ style: {
107
+ height: '40px'
108
+ },
109
+ alt: ""
110
+ }))), React.createElement("div", {
111
+ className: "cmr-class-top-nav-bar-options"
112
+ }, React.createElement(LanguageDropdown, null), React.createElement(Dropdown, null), React.createElement(UserInfo, {
113
+ name: "Admin Chilco",
114
+ email: "box+admin.chilco@socobox.co"
115
+ })));
116
+ }
117
+
118
+ function uuidV4() {
119
+ return ("" + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, function (c) {
120
+ return (((c ^ crypto.getRandomValues(new Uint8Array(1))[0]) & 15) >> c / 4).toString(16);
121
+ });
122
+ }
123
+
124
+ var SidebarItem = function SidebarItem(_ref) {
125
+ var route = _ref.route;
126
+ var icon = route.icon,
127
+ label = route.label,
128
+ subRoutes = route.subRoutes,
129
+ className = route.className;
130
+ var _useState = useState(false),
131
+ isSubMenuOpen = _useState[0],
132
+ setIsSubMenuOpen = _useState[1];
133
+ var toggleSubMenu = function toggleSubMenu() {
134
+ setIsSubMenuOpen(function (prevState) {
135
+ return !prevState;
136
+ });
137
+ };
138
+ return React.createElement(React.Fragment, null, React.createElement("li", {
139
+ className: "crm-class-sidebar-li " + (className != null ? className : ''),
140
+ onClick: toggleSubMenu
141
+ }, icon && icon, React.createElement("span", {
142
+ className: (isSubMenuOpen ? 'cmr-class-font-bold' : '') + " "
143
+ }, label), (subRoutes === null || subRoutes === void 0 ? void 0 : subRoutes.length) > 0 && React.createElement("span", {
144
+ className: "cmr-class-ml-auto"
145
+ }, React.createElement(FontAwesomeIcon, {
146
+ icon: isSubMenuOpen ? faChevronUp : faChevronDown,
147
+ className: "cmr-class-color-icon cmr-class-font-10 cmr-class-slate-gray"
148
+ }))), isSubMenuOpen && (subRoutes === null || subRoutes === void 0 ? void 0 : subRoutes.length) > 0 && React.createElement("ul", {
149
+ className: "crm-class-sidebar-sub-menu-list"
150
+ }, subRoutes === null || subRoutes === void 0 ? void 0 : subRoutes.map(function (item) {
151
+ return React.createElement(SidebarItem, {
152
+ key: uuidV4(),
153
+ route: item
154
+ });
155
+ })));
156
+ };
157
+
158
+ var generateSubMenuData = function generateSubMenuData(labels) {
159
+ return labels.map(function (label) {
160
+ return {
161
+ label: label,
162
+ className: "cmr-class-ml-20"
163
+ };
164
+ });
165
+ };
166
+ var subMenuDataHome = generateSubMenuData(["Dashboard", "Accounts", "My Tasks", "Web designer"]);
167
+ var subMenuDataAnalytics = generateSubMenuData(["Customer Cohorts", "Product group", "Marketing UTM", "Customer growth", "Customer events", "Claims", "Products sold", "Available Inventory", "Purchase by re order", "Most sold Varieties", "Search terms"]);
168
+ var subMenuDataProcess = generateSubMenuData(["Project manager", "Project list", "Launch process"]);
169
+ var subMenuDataForm = generateSubMenuData(["Form list"]);
170
+ var subMenuDataComunications = generateSubMenuData(["Email Blast", "Template Generator"]);
171
+ var subMenuDataDataProviders = generateSubMenuData(["Data providers"]);
172
+ var subMenuData = generateSubMenuData(["Search Engine", "CMS"]);
173
+ var subMenuDataReports = generateSubMenuData(["Crm reports", "Report generator"]);
174
+ var subMenuDataConfig = generateSubMenuData(["App", "Manage users", "Permissions assignment", "Groups manager", "Crm executions"]);
175
+ var subMenuDataMarketing = generateSubMenuData(["Conversion Rate by Page"]);
176
+
177
+ var generateRoute = function generateRoute(label, icon, subRoutes) {
178
+ if (subRoutes === void 0) {
179
+ subRoutes = [];
180
+ }
181
+ return {
182
+ label: label,
183
+ visible: true,
184
+ enable: true,
185
+ icon: React.createElement("span", {
186
+ className: "cmr-class-color-icon cmr-class-mr-10"
187
+ }, icon && React.createElement(FontAwesomeIcon, {
188
+ icon: icon,
189
+ className: "cmr-class-color-icon"
190
+ })),
191
+ action: function action() {},
192
+ subRoutes: subRoutes.map(function (subRoute) {
193
+ return generateRoute(subRoute.label, subRoute.icon, subRoute.subRoutes || []);
194
+ })
195
+ };
196
+ };
197
+ var generateRoutes = function generateRoutes(routesData) {
198
+ return routesData.map(function (routeData) {
199
+ return generateRoute(routeData.label, routeData === null || routeData === void 0 ? void 0 : routeData.icon, routeData.subRoutes);
200
+ });
201
+ };
202
+ var SidebarComponent = function SidebarComponent() {
203
+ var routesData = [{
204
+ label: 'Home',
205
+ icon: faGem,
206
+ subRoutes: subMenuDataHome
207
+ }, {
208
+ label: 'Analytics',
209
+ icon: faShip,
210
+ subRoutes: subMenuDataAnalytics
211
+ }, {
212
+ label: 'Process',
213
+ icon: faHourglass,
214
+ subRoutes: subMenuDataProcess
215
+ }, {
216
+ label: 'Forms',
217
+ icon: faWallet,
218
+ subRoutes: subMenuDataForm
219
+ }, {
220
+ label: 'Communications',
221
+ icon: faHeadphones,
222
+ subRoutes: subMenuDataComunications
223
+ }, {
224
+ label: 'Data providers',
225
+ icon: faDatabase,
226
+ subRoutes: subMenuDataDataProviders
227
+ }, {
228
+ label: 'Data',
229
+ icon: faCloudDownloadAlt,
230
+ subRoutes: subMenuData
231
+ }, {
232
+ label: 'Reports',
233
+ icon: faCog,
234
+ subRoutes: subMenuDataReports
235
+ }, {
236
+ label: 'Config',
237
+ icon: faGem,
238
+ subRoutes: subMenuDataConfig
239
+ }, {
240
+ label: 'Marketing',
241
+ icon: faBullhorn,
242
+ subRoutes: subMenuDataMarketing
243
+ }];
244
+ var routes = generateRoutes(routesData);
245
+ return React.createElement("div", {
246
+ className: "crm-class-sidebar"
247
+ }, React.createElement("ul", {
248
+ className: "crm-class-sidebar-list cmr-class-mt-70"
249
+ }, React.createElement("span", {
250
+ className: "cmr-class-tittle"
251
+ }, "MENU"), routes.map(function (route, index) {
252
+ return React.createElement(SidebarItem, {
253
+ key: "route_" + index,
254
+ route: route
255
+ });
256
+ })));
257
+ };
258
+
259
+ export { SidebarComponent, TopNavBarComponent };
260
+ //# sourceMappingURL=index.modern.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.modern.js","sources":["../src/components/dropdown/Dropdown.tsx","../src/components/contentMenuComponent/UserInfo.tsx","../src/components/contentMenuComponent/LanguageDropdown.tsx","../src/components/menu/TopNavBarComponent/TopNavBarComponent.tsx","../src/utils/utils.ts","../src/components/menu/sidebar/SidebarItem.tsx","../src/components/menu/sidebar/subMenuComponent/SubMenuComponent.tsx","../src/components/menu/sidebar/Sidebar.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons';\n\nexport default function Dropdown() {\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n const toggleDropdown = () => {\n setIsDropdownOpen(!isDropdownOpen);\n };\n\n return (\n <div className=\"cmr-class-dropdown cmr-class-mr-20\" onClick={toggleDropdown}>\n <span className=\"cmr-class-top-nav-bar-avatar\">A</span>\n <span className=\"cmr-class-ml-20\">\n <FontAwesomeIcon\n icon={isDropdownOpen ? faChevronUp : faChevronDown}\n className=\"cmr-class-color-icon cmr-class-slate-gray\"\n />\n </span>\n {isDropdownOpen && (\n <div className=\"cmr-class-dropdown-content\">\n <p>Dropdown content here</p>\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\n\n\ninterface Props{\n email:string;\n name:string;\n}\nexport default function UserInfo({ name, email }:Props) {\n return (\n <div className=\"cmr-class-top-nav-bar-info-user\">\n <span className=\"cmr-class-font-bold\">{name} </span>\n <span>{email}</span>\n </div>\n );\n}","import React, { useState } from \"react\";\n\ninterface Language {\n code: string;\n label: string;\n flag: string;\n}\n\nconst languages: Language[] = [\n { code: \"EN\", label: \"English\", flag: \"US\" },\n { code: \"ES\", label: \"Español\", flag: \"ES\" },\n { code: 'NL', label: 'Nederlands', flag: 'NL' }\n];\n\nexport default function LanguageDropdown() {\n const [selectedLanguage, setSelectedLanguage] = useState<Language>(\n languages[0]\n );\n\n const handleLanguageChange = (language: Language) => {\n setSelectedLanguage(language);\n };\n\n return (\n <div className=\"cmr-class-dropdown-flag cmr-class-mr-20\">\n <span className=\"cmr-class-content-flag\">\n <span className={`cmr-class-flag large ${selectedLanguage.flag}`}></span>\n </span>\n\n <div className=\"cmr-class-dropdown-menu\">\n <button className=\"cmr-class-dropdown-toggle\" type=\"button\">\n Choose Language\n </button>\n <h6 className=\"cmr-class-dropdown-header\">Popular Languages</h6>\n {languages.map((language) => (\n <button\n key={language.code}\n type=\"button\"\n className=\"cmr-class-dropdown-item \"\n onClick={() => handleLanguageChange(language)}\n >\n <span\n className={` opacity-8 cmr-class-flag large cmr-class-mr-20 ${language.flag}`}\n ></span>\n {language.code}\n </button>\n ))}\n </div>\n </div>\n );\n}\n","import { faBars, faSearch } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport React from 'react'\nimport Dropdown from '../../dropdown/Dropdown'\nimport UserInfo from '../../contentMenuComponent/UserInfo'\nimport LanguageDropdown from '../../contentMenuComponent/LanguageDropdown'\n\nexport default function TopNavBarComponent() {\n\n\n return (\n <div className=\"cmr-class-top-nav-bar\">\n <div className=\"cmr-class-flex-container\">\n <FontAwesomeIcon\n icon={faBars}\n color=\"#3f6ad8\"\n size=\"2x\"\n className=\"cmr-class-mr-20 cmr-class-cursor-pointer\"\n />\n <div className=\"cmr-class-flex-container\">\n <div className=\"cmr-class-icon-container cmr-class-mr-20\">\n <FontAwesomeIcon\n icon={faSearch}\n color=\"#3f6ad8\"\n className=\"\"\n size=\"2x\"\n />\n </div>\n\n <img\n src=\"https://sbxcloud.com/www/ibuyflowers/prod/test/images/logo-ibuyflowers.svg\"\n style={{ height: '40px' }}\n alt=\"\"\n />\n </div>\n </div>\n <div className=\"cmr-class-top-nav-bar-options\">\n {/* */}\n\n <LanguageDropdown />\n\n\n <Dropdown />\n <UserInfo name=\"Admin Chilco\" email=\"box+admin.chilco@socobox.co\" />\n </div>\n </div>\n )\n}\n","export function uuidV4() {\n return (\"\" + 1e7 + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c: any) =>\n (\n ((c ^ crypto.getRandomValues(new Uint8Array(1))[0]) & 15) >>\n (c / 4)\n ).toString(16)\n );\n }\n\n\n\n","import React, { useState } from 'react'\nimport { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { SidebarItemProps } from '../../../types/Common'\nimport { uuidV4 } from '../../../utils/utils'\n\nconst SidebarItem = ({ route }: SidebarItemProps) => {\n const { icon, label, subRoutes, className } = route\n const [isSubMenuOpen, setIsSubMenuOpen] = useState(false)\n\n const toggleSubMenu = () => {\n setIsSubMenuOpen((prevState) => !prevState)\n }\n return (\n <React.Fragment>\n <li\n className={`crm-class-sidebar-li ${className ?? ''}`}\n onClick={toggleSubMenu}\n >\n {icon && icon}\n <span className={`${isSubMenuOpen ? 'cmr-class-font-bold' : ''} `}>{label}</span>\n\n {subRoutes?.length! > 0 && (\n <span className=\"cmr-class-ml-auto\">\n <FontAwesomeIcon\n icon={isSubMenuOpen ? faChevronUp : faChevronDown}\n className=\"cmr-class-color-icon cmr-class-font-10 cmr-class-slate-gray\"\n />\n </span>\n )}\n </li>\n {isSubMenuOpen && subRoutes?.length! > 0 && (\n <ul className=\"crm-class-sidebar-sub-menu-list\">\n {subRoutes?.map((item) => (\n <SidebarItem key={uuidV4()} route={item} />\n ))}\n </ul>\n )}\n </React.Fragment>\n )\n}\n\nexport default SidebarItem\n","\nimport { Route } from \"../../../../types/Common\";\n\nexport const generateSubMenuData = (labels: string[]): Route[] => {\n return labels.map((label) => ({\n label,\n className: \"cmr-class-ml-20\",\n }));\n};\n\nconst subMenuDataHome: Route[] = generateSubMenuData([\n \"Dashboard\",\n \"Accounts\",\n \"My Tasks\",\n \"Web designer\",\n]);\n\nconst subMenuDataAnalytics: Route[] = generateSubMenuData([\n \"Customer Cohorts\",\n \"Product group\",\n \"Marketing UTM\",\n \"Customer growth\",\n \"Customer events\",\n \"Claims\",\n \"Products sold\",\n \"Available Inventory\",\n \"Purchase by re order\",\n \"Most sold Varieties\",\n \"Search terms\",\n]);\n\nconst subMenuDataProcess: Route[] = generateSubMenuData([\n \"Project manager\",\n \"Project list\",\n \"Launch process\",\n]);\n\nconst subMenuDataForm: Route[] = generateSubMenuData([\"Form list\"]);\n\nconst subMenuDataComunications: Route[] = generateSubMenuData([\n \"Email Blast\",\n \"Template Generator\",\n]);\n\nconst subMenuDataDataProviders: Route[] = generateSubMenuData([\n \"Data providers\",\n]);\n\nconst subMenuData: Route[] = generateSubMenuData([\"Search Engine\", \"CMS\"]);\n\nconst subMenuDataReports: Route[] = generateSubMenuData([\n \"Crm reports\",\n \"Report generator\",\n]);\n\nconst subMenuDataConfig: Route[] = generateSubMenuData([\n \"App\",\n \"Manage users\",\n \"Permissions assignment\",\n \"Groups manager\",\n \"Crm executions\",\n]);\n\nconst subMenuDataMarketing: Route[] = generateSubMenuData([\n \"Conversion Rate by Page\",\n]);\n\nexport {\n subMenuDataHome,\n subMenuData,\n subMenuDataComunications,\n subMenuDataConfig,\n subMenuDataDataProviders,\n subMenuDataForm,\n subMenuDataReports,\n subMenuDataMarketing,\n subMenuDataAnalytics,\n subMenuDataProcess,\n};\n","import {\n faBullhorn,\n faCloudDownloadAlt,\n faCog,\n faDatabase,\n faHeadphones,\n faShip,\n faWallet,\n IconDefinition\n} from '@fortawesome/free-solid-svg-icons'\n\nimport { faGem, faHourglass } from '@fortawesome/free-regular-svg-icons'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\n\nimport { Route } from '../../../types/Common'\nimport SidebarItem from './SidebarItem'\nimport {\n subMenuData,\n subMenuDataAnalytics,\n subMenuDataComunications,\n subMenuDataConfig,\n subMenuDataDataProviders,\n subMenuDataForm,\n subMenuDataHome,\n subMenuDataMarketing,\n subMenuDataProcess,\n subMenuDataReports\n} from './subMenuComponent/SubMenuComponent'\nimport React from 'react'\n\nconst generateRoute = (\n label: string,\n icon: React.ReactNode | IconDefinition,\n subRoutes: Route[] = []\n): Route => ({\n label,\n visible: true,\n enable: true,\n icon: (\n <span className=\"cmr-class-color-icon cmr-class-mr-10\">\n {icon && (\n <FontAwesomeIcon\n icon={icon as IconDefinition}\n className=\"cmr-class-color-icon\"\n />\n )}\n </span>\n ),\n action: () => {\n },\n subRoutes: subRoutes.map((subRoute) =>\n generateRoute(subRoute.label, subRoute.icon, subRoute.subRoutes || [])\n )\n})\n\nconst generateRoutes = (\n routesData: {\n label: string;\n icon: IconDefinition | undefined;\n subRoutes: Route[];\n }[]\n): Route[] => {\n return routesData.map((routeData) =>\n generateRoute(routeData.label, routeData?.icon!, routeData.subRoutes)\n )\n}\n\nconst SidebarComponent = () => {\n const routesData = [\n {\n label: 'Home',\n icon: faGem,\n subRoutes: subMenuDataHome\n },\n\n { label: 'Analytics', icon: faShip, subRoutes: subMenuDataAnalytics },\n { label: 'Process', icon: faHourglass, subRoutes: subMenuDataProcess },\n { label: 'Forms', icon: faWallet, subRoutes: subMenuDataForm },\n {\n label: 'Communications',\n icon: faHeadphones,\n subRoutes: subMenuDataComunications\n },\n {\n label: 'Data providers',\n icon: faDatabase,\n subRoutes: subMenuDataDataProviders\n },\n { label: 'Data', icon: faCloudDownloadAlt, subRoutes: subMenuData },\n { label: 'Reports', icon: faCog, subRoutes: subMenuDataReports },\n { label: 'Config', icon: faGem, subRoutes: subMenuDataConfig },\n { label: 'Marketing', icon: faBullhorn, subRoutes: subMenuDataMarketing }\n ]\n\n const routes: Route[] = generateRoutes(routesData)\n\n return (\n <div className=\"crm-class-sidebar\">\n <ul className=\"crm-class-sidebar-list cmr-class-mt-70\">\n <span className=\"cmr-class-tittle\">MENU</span>\n \n {routes.map((route, index) => (\n <SidebarItem key={`route_${index}`} route={route} />\n ))}\n\n </ul>\n </div>\n )\n}\nexport default SidebarComponent\n"],"names":["Dropdown","_useState","useState","isDropdownOpen","setIsDropdownOpen","toggleDropdown","React","className","onClick","FontAwesomeIcon","icon","faChevronUp","faChevronDown","UserInfo","_ref","name","email","languages","code","label","flag","LanguageDropdown","selectedLanguage","setSelectedLanguage","handleLanguageChange","language","type","map","key","TopNavBarComponent","faBars","color","size","faSearch","src","style","height","alt","uuidV4","replace","c","crypto","getRandomValues","Uint8Array","toString","SidebarItem","route","subRoutes","isSubMenuOpen","setIsSubMenuOpen","toggleSubMenu","prevState","Fragment","length","item","generateSubMenuData","labels","subMenuDataHome","subMenuDataAnalytics","subMenuDataProcess","subMenuDataForm","subMenuDataComunications","subMenuDataDataProviders","subMenuData","subMenuDataReports","subMenuDataConfig","subMenuDataMarketing","generateRoute","visible","enable","action","subRoute","generateRoutes","routesData","routeData","SidebarComponent","faGem","faShip","faHourglass","faWallet","faHeadphones","faDatabase","faCloudDownloadAlt","faCog","faBullhorn","routes","index"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ export interface Route {
3
+ label: string;
4
+ visible?: boolean;
5
+ enable?: boolean;
6
+ icon?: React.ReactNode;
7
+ action?: Function;
8
+ subRoutes?: Route[];
9
+ className?: string;
10
+ }
11
+ export interface SidebarItemProps {
12
+ route: Route;
13
+ }
@@ -0,0 +1 @@
1
+ export declare function uuidV4(): string;
package/package.json ADDED
@@ -0,0 +1,70 @@
1
+ {
2
+ "name": "sbx-crm-menu-ui",
3
+ "version": "1.0.0",
4
+ "description": "Menu Create by SBX Company for CRM.",
5
+ "author": "Frank Carpio",
6
+ "license": "ISC",
7
+ "repository": "https://github.com/socobox/sbx-crm-menu-ui",
8
+ "main": "dist/index.js",
9
+ "module": "dist/index.modern.js",
10
+ "source": "src/index.tsx",
11
+ "engines": {
12
+ "node": "18"
13
+ },
14
+ "scripts": {
15
+ "build": "microbundle-crl --no-compress --no-css-modules --format modern,cjs",
16
+ "start": "microbundle-crl watch --no-compress --format modern,cjs",
17
+ "prepare": "run-s build",
18
+ "test": "run-s test:unit test:lint test:build",
19
+ "test:build": "run-s build",
20
+ "test:lint": "eslint .",
21
+ "test:unit": "cross-env CI=1 react-scripts test --env=jsdom",
22
+ "test:watch": "react-scripts test --env=jsdom",
23
+ "predeploy": "cd example && yarn install && yarn run build",
24
+ "test-lib": "yarn run build && cp -r dist /Users/frankcarpio/Desktop/Personal/lib/sbx-crm-menu-ui"
25
+ },
26
+ "peerDependencies": {
27
+ "react": "^18.3.1"
28
+ },
29
+ "devDependencies": {
30
+ "@testing-library/jest-dom": "^6.4.6",
31
+ "@testing-library/react": "^16.0.0",
32
+ "@testing-library/user-event": "^14.5.2",
33
+ "@types/jest": "^29.5.12",
34
+ "@types/node": "^18.17.0",
35
+ "@types/react": "^18.3.3",
36
+ "@types/react-dom": "^18.3.0",
37
+ "@typescript-eslint/eslint-plugin": "^7.13.1",
38
+ "@typescript-eslint/parser": "^7.13.1",
39
+ "babel-eslint": "^10.1.0",
40
+ "cross-env": "^7.0.3",
41
+ "eslint": "^9.5.0",
42
+ "eslint-config-prettier": "^9.1.0",
43
+ "eslint-config-standard": "^17.1.0",
44
+ "eslint-config-standard-react": "^13.0.0",
45
+ "eslint-plugin-import": "^2.29.1",
46
+ "eslint-plugin-node": "^11.1.0",
47
+ "eslint-plugin-prettier": "^5.1.3",
48
+ "eslint-plugin-promise": "^6.2.0",
49
+ "eslint-plugin-react": "^7.34.2",
50
+ "eslint-plugin-standard": "^5.0.0",
51
+ "gh-pages": "^6.1.1",
52
+ "microbundle-crl": "^0.13.11",
53
+ "npm-run-all": "^4.1.5",
54
+ "prettier": "^3.3.2",
55
+ "react": "^18.3.1",
56
+ "react-dom": "^18.3.1",
57
+ "react-scripts": "^5.0.1",
58
+ "typescript": "^5.4.5"
59
+ },
60
+ "files": [
61
+ "dist"
62
+ ],
63
+ "dependencies": {
64
+ "@fortawesome/fontawesome-svg-core": "^6.5.2",
65
+ "@fortawesome/free-regular-svg-icons": "^6.5.2",
66
+ "@fortawesome/free-solid-svg-icons": "^6.5.2",
67
+ "@fortawesome/react-fontawesome": "^0.2.2",
68
+ "sass": "^1.77.6"
69
+ }
70
+ }