imbric-theme 0.3.2 → 0.3.5

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.
Files changed (130) hide show
  1. package/.storybook/main.js +1 -1
  2. package/atoms/AlertModal/AlertModal.js +77 -0
  3. package/atoms/AlertModal/AlertModal.module.css +3 -0
  4. package/atoms/AlertModal/AlertModal.stories.js +30 -0
  5. package/atoms/AlertModal/constants.js +4 -0
  6. package/atoms/AlertModal/index.js +3 -0
  7. package/atoms/Button/Button.js +5 -2
  8. package/atoms/Button/Button.module.css +6 -3
  9. package/atoms/Checkbox/Checkbox.js +49 -0
  10. package/atoms/Checkbox/Checkbox.module.css +3 -0
  11. package/atoms/Checkbox/Checkbox.stories.js +28 -0
  12. package/atoms/Checkbox/constants.js +1 -0
  13. package/atoms/Checkbox/index.js +3 -0
  14. package/atoms/Heading/Heading.js +1 -1
  15. package/atoms/Heading/Heading.module.css +4 -0
  16. package/atoms/Heading/constants.js +1 -1
  17. package/atoms/Icon/constants.js +30 -6
  18. package/atoms/Input/Input.js +21 -5
  19. package/atoms/Input/Input.module.css +26 -6
  20. package/atoms/Input/Input.stories.js +8 -2
  21. package/atoms/Input/__snapshots__/Input.stories.js.snap +5 -5
  22. package/atoms/Input/constants.js +1 -1
  23. package/atoms/Label/Label.js +31 -0
  24. package/atoms/Label/Label.module.css +38 -0
  25. package/atoms/Label/Label.stories.js +26 -0
  26. package/atoms/Label/constants.js +1 -0
  27. package/atoms/Label/index.js +3 -0
  28. package/atoms/Paragraph/Paragraph.module.css +4 -0
  29. package/hook/useAddColumn.js +40 -0
  30. package/hook/useStateDate.js +25 -0
  31. package/hook/useTable.js +45 -0
  32. package/index.js +22 -1
  33. package/jest.config.js +1 -1
  34. package/layout/DynamicTable/DynamicTable.js +172 -0
  35. package/layout/DynamicTable/DynamicTable.module.css +63 -0
  36. package/layout/DynamicTable/DynamicTable.stories.js +77 -0
  37. package/layout/DynamicTable/constants.js +323 -0
  38. package/layout/DynamicTable/index.js +3 -0
  39. package/layout/Navbar/Navbar.js +19 -11
  40. package/layout/Navbar/Navbar.module.css +4 -2
  41. package/layout/Navbar/Navbar.stories.js +2 -1
  42. package/layout/Sidebar/Sidebar.js +6 -3
  43. package/layout/Sidebar/Sidebar.module.css +1 -10
  44. package/layout/Sidebar/Sidebar.stories.js +1 -1
  45. package/layout/Sidebar/constants.js +228 -205
  46. package/molecules/CheckList/CheckList.js +135 -0
  47. package/molecules/CheckList/CheckList.module.css +94 -0
  48. package/molecules/CheckList/CheckList.stories.js +25 -0
  49. package/molecules/CheckList/constants.js +23 -0
  50. package/molecules/CheckList/index.js +3 -0
  51. package/molecules/ColumnTable/ColumnTable.js +124 -0
  52. package/molecules/ColumnTable/ColumnTable.module.css +22 -0
  53. package/molecules/ColumnTable/ColumnTable.stories.js +26 -0
  54. package/molecules/ColumnTable/constants.js +111 -0
  55. package/molecules/ColumnTable/index.js +3 -0
  56. package/molecules/DatePicker/DatePicker.js +236 -0
  57. package/molecules/DatePicker/DatePicker.module.css +38 -0
  58. package/molecules/DatePicker/DatePicker.stories.js +23 -0
  59. package/molecules/DatePicker/constants.js +3 -0
  60. package/molecules/DatePicker/index.js +3 -0
  61. package/molecules/Dropdown/Dropdown.js +25 -22
  62. package/molecules/Dropdown/Dropdown.module.css +21 -3
  63. package/molecules/DynamicSelect/DynamicSelect.js +109 -0
  64. package/molecules/DynamicSelect/DynamicSelect.module.css +10 -0
  65. package/molecules/DynamicSelect/DynamicSelect.stories.js +32 -0
  66. package/molecules/DynamicSelect/constants.js +7 -0
  67. package/molecules/DynamicSelect/index.js +3 -0
  68. package/molecules/Error/Error.js +2 -2
  69. package/molecules/Error/Error.module.css +3 -2
  70. package/molecules/FooterTable/FooterTable.js +47 -0
  71. package/molecules/FooterTable/FooterTable.module.css +37 -0
  72. package/molecules/FooterTable/FooterTable.stories.js +23 -0
  73. package/molecules/FooterTable/constants.js +1 -0
  74. package/molecules/FooterTable/index.js +3 -0
  75. package/molecules/ItemMenu/ItemMenu.js +35 -24
  76. package/molecules/ItemMenu/ItemMenu.module.css +13 -4
  77. package/molecules/ItemMenu/ItemMenu.stories.js +2 -0
  78. package/molecules/ItemMenu/constants.js +3 -0
  79. package/molecules/RowTable/RowTable.js +68 -0
  80. package/molecules/RowTable/RowTable.module.css +22 -0
  81. package/molecules/RowTable/RowTable.stories.js +26 -0
  82. package/molecules/RowTable/constants.js +305 -0
  83. package/molecules/RowTable/index.js +3 -0
  84. package/package.json +11 -2
  85. package/pages/Login/Login.js +102 -0
  86. package/pages/Login/Login.module.css +5 -0
  87. package/pages/Login/Login.stories.js +23 -0
  88. package/pages/Login/constants.js +1 -0
  89. package/pages/Login/index.js +3 -0
  90. package/pages/Login/validation/loginSchema.js +5 -0
  91. package/public/static/logologin.svg +16 -0
  92. package/scripts/create-component.js +2 -1
  93. package/storybook-static/0.263f852f.iframe.bundle.js +1 -0
  94. package/storybook-static/0.91dbd3f3aa2099d25061.manager.bundle.js +1 -0
  95. package/storybook-static/1.17e9ac7e.iframe.bundle.js +3 -0
  96. package/storybook-static/1.17e9ac7e.iframe.bundle.js.LICENSE.txt +8 -0
  97. package/storybook-static/1.17e9ac7e.iframe.bundle.js.map +1 -0
  98. package/storybook-static/2.cc4000c2.iframe.bundle.js +1 -0
  99. package/storybook-static/3.e9f95d01.iframe.bundle.js +1 -0
  100. package/storybook-static/4.be0a752c9f5176d6eec1.manager.bundle.js +2 -0
  101. package/storybook-static/4.be0a752c9f5176d6eec1.manager.bundle.js.LICENSE.txt +8 -0
  102. package/storybook-static/5.8efdde123acaf8fbb100.manager.bundle.js +1 -0
  103. package/storybook-static/6.2f82294ae0b087aecb24.manager.bundle.js +2 -0
  104. package/storybook-static/6.2f82294ae0b087aecb24.manager.bundle.js.LICENSE.txt +12 -0
  105. package/storybook-static/7.97068037.iframe.bundle.js +1 -0
  106. package/storybook-static/7.fa9452d2609e8a00f314.manager.bundle.js +1 -0
  107. package/storybook-static/8.66f5ef1c66fc4628f127.manager.bundle.js +1 -0
  108. package/storybook-static/8.b545d602.iframe.bundle.js +3 -0
  109. package/storybook-static/8.b545d602.iframe.bundle.js.LICENSE.txt +12 -0
  110. package/storybook-static/8.b545d602.iframe.bundle.js.map +1 -0
  111. package/storybook-static/9.269ed917.iframe.bundle.js +1 -0
  112. package/storybook-static/favicon.ico +0 -0
  113. package/storybook-static/iframe.html +348 -0
  114. package/storybook-static/index.html +59 -0
  115. package/storybook-static/main.157061c9.iframe.bundle.js +1 -0
  116. package/storybook-static/main.5a07347846ccf2d7e5dc.manager.bundle.js +1 -0
  117. package/storybook-static/runtime~main.a14e6e62.iframe.bundle.js +1 -0
  118. package/storybook-static/runtime~main.f78c3fae275fc212c109.manager.bundle.js +1 -0
  119. package/storybook-static/static/logo.svg +19 -0
  120. package/storybook-static/static/logologin.svg +16 -0
  121. package/storybook-static/static/logotipo.svg +50 -0
  122. package/storybook-static/static/logotipoS.svg +26 -0
  123. package/storybook-static/vendors~main.720e76f4.iframe.bundle.js +3 -0
  124. package/storybook-static/vendors~main.720e76f4.iframe.bundle.js.LICENSE.txt +110 -0
  125. package/storybook-static/vendors~main.720e76f4.iframe.bundle.js.map +1 -0
  126. package/storybook-static/vendors~main.fcd0b2a3431ddf75f5f7.manager.bundle.js +2 -0
  127. package/storybook-static/vendors~main.fcd0b2a3431ddf75f5f7.manager.bundle.js.LICENSE.txt +101 -0
  128. package/styles/globals.css +592 -0
  129. package/styles/tokens.css +2 -1
  130. package/tokens/index.js +2 -1
@@ -16,14 +16,32 @@
16
16
  .dropdown-select {
17
17
  width: 100%;
18
18
  height: var(--input-height);
19
- padding: 10px 30px 10px 20px;
20
- border: var(--border-width-thin) solid var(--color-primary);
19
+ padding: 8px 30px 8px 20px;
20
+ border: var(--border-width-thin) solid var(--color-brand-white-lilac);
21
21
  background: var(--input-background);
22
- border-radius: var(--input-border-radius);
22
+ /* border-radius: var(--input-border-radius); */
23
23
  color: var(--color-font-base);
24
+ font-family: var(--font-family-sans);
25
+ font-size: var(--input-font-base);
26
+ font-weight: var(--font-weight-medium);
27
+ line-height: var(--line-height-relaxed);
24
28
  transition: box-shadow 0.2s ease;
29
+ -moz-appearance: none; /* Firefox */
30
+ -webkit-appearance: none; /* Safari and Chrome */
31
+ appearance: none;
25
32
  }
26
33
 
34
+
35
+
36
+
37
+
38
+
39
+ /* padding: 12px 17px; */
40
+
41
+
42
+
43
+
44
+
27
45
  .dropdown-select:focus {
28
46
  box-shadow: 0 0 0 1px var(--color-primary), 0 0 10px 0 var(--color-primary);
29
47
  outline: none;
@@ -0,0 +1,109 @@
1
+ import React from 'react'
2
+ import Select from 'react-select'
3
+ import PropTypes from 'prop-types'
4
+ import styles from './DynamicSelect.module.css'
5
+ import withStyles from '../../hocs/withStyles'
6
+
7
+
8
+ export const DynamicSelect = ({ getStyles, optionsSelect, defaultValue, placeholder, isMulti, isClearable, isDisabled, isLoading, isRtl, isSearchable, isInline, onChange }) => {
9
+
10
+
11
+ const customStyles = {
12
+
13
+ option: (base, state) => ({
14
+ ...base,
15
+ cursor: 'pointer',
16
+ height: '100%',
17
+ backgroundColor: state.isSelected ? 'var(--color-primary)' : 'transparent',
18
+ "&:hover": {
19
+ backgroundColor: "var(--color-primary-highlight)",
20
+ color: 'var(--color-primary)',
21
+ },
22
+ // "&:active": {
23
+ // backgroundColor: "var(--color-primary)"
24
+ // }
25
+ }),
26
+ control: (base, state) => ({
27
+ ...base,
28
+ cursor: 'pointer',
29
+ width: '100%',
30
+ borderRadius: 0,
31
+ border: 'var(--border-width-thin) solid var(--color-brand-white-lilac)',
32
+ // border: state.isFocused ? "var(--border-width-thin) solid var(--color-brand-white-lilac)" : "var(--border-width-thin) solid var(--color-brand-white-lilac)",
33
+ boxShadow: state.isFocused ? "0 0 0 1px var(--color-primary), 0 0 10px 0 var(--color-primary)" : "none",
34
+ "&:hover": {
35
+ borderColor: "var(--color-primary)"
36
+ }
37
+ }),
38
+ input: (base) => ({
39
+ ...base,
40
+ cursor: 'pointer',
41
+ margin: '2px',
42
+ paddingBottom: '2px',
43
+ paddingTop: '2px',
44
+ }),
45
+
46
+ }
47
+
48
+ // const handleChange = (value) => {
49
+ // console.group('Value Changed');
50
+ // console.log(value);
51
+ // // console.log(`action: ${actionMeta.action}`);
52
+ // console.groupEnd();
53
+ // };
54
+
55
+ return (
56
+
57
+ <div className={getStyles('dynamic-select', {
58
+ 'is-inline': isInline,
59
+ })}>
60
+ <Select
61
+ name="basic"
62
+ // className="basic-single"
63
+ // classNamePrefix="select"
64
+ placeholder={placeholder}
65
+ styles={customStyles}
66
+ options={optionsSelect}
67
+ defaultValue={defaultValue}
68
+ isMulti={isMulti}
69
+ isClearable={isClearable}
70
+ isDisabled={isDisabled}
71
+ isLoading={isLoading}
72
+ isRtl={isRtl}
73
+ isSearchable={isSearchable}
74
+ onChange={onChange}
75
+ />
76
+ </div>
77
+
78
+ )
79
+ }
80
+
81
+ DynamicSelect.propTypes = {
82
+ getStyles: PropTypes.func.isRequired,
83
+ defaultValue: PropTypes.string,
84
+ placeholder: PropTypes.string,
85
+ isMulti: PropTypes.bool,
86
+ isClearable: PropTypes.bool,
87
+ isDisabled: PropTypes.bool,
88
+ isLoading: PropTypes.bool,
89
+ isRtl: PropTypes.bool,
90
+ isSearchable: PropTypes.bool,
91
+ isInline: PropTypes.bool,
92
+ onChange: PropTypes.func
93
+ }
94
+
95
+ DynamicSelect.defaultProps = {
96
+ getStyles: () => { },
97
+ defaultValue: '',
98
+ placeholder: 'seleccionar',
99
+ isMulti: false,
100
+ isClearable: true,
101
+ isDisabled: false,
102
+ isLoading: false,
103
+ isRtl: false,
104
+ isSearchable: false,
105
+ isInline: false,
106
+ onChange: () => { },
107
+ }
108
+
109
+ export default withStyles(styles)(DynamicSelect)
@@ -0,0 +1,10 @@
1
+ .dynamic-select {
2
+ position: relative;
3
+ display: inline-block;
4
+ width: 100%;
5
+ cursor: pointer;
6
+ }
7
+
8
+ .is-inline {
9
+ max-width: max-content;
10
+ }
@@ -0,0 +1,32 @@
1
+ import { DynamicSelect, styles, options } from '.'
2
+
3
+ import {
4
+ getTemplate,
5
+ getListTemplate,
6
+ getOptionsArgTypes,
7
+ } from '../../helpers/storybook'
8
+
9
+ const Template = getTemplate(DynamicSelect, styles)
10
+ const ListTemplate = getListTemplate(DynamicSelect, styles)
11
+
12
+ export default {
13
+ title: 'Molecules/DynamicSelect',
14
+ component: DynamicSelect,
15
+ args: {
16
+ optionsSelect: options.optionsSelect,
17
+ defaultValue: '',
18
+ placeholder: 'seleccionar',
19
+ isMulti: false,
20
+ isClearable: true,
21
+ isDisabled: false,
22
+ isLoading: false,
23
+ isRtl: false,
24
+ isSearchable: false,
25
+ isInline: false,
26
+ },
27
+ argTypes: {
28
+ // types: getOptionsArgTypes(options.types),
29
+ },
30
+ }
31
+
32
+ export const Default = Template.bind({})
@@ -0,0 +1,7 @@
1
+ export const options = {
2
+ optionsSelect: [
3
+ { value: 'chocolate', label: 'Chocolate' },
4
+ { value: 'strawberry', label: 'Strawberry' },
5
+ { value: 'vanilla', label: 'Vanilla' }
6
+ ]
7
+ }
@@ -0,0 +1,3 @@
1
+ export { default, DynamicSelect } from './DynamicSelect'
2
+ export { options } from './constants'
3
+ export { default as styles } from './DynamicSelect.module.css'
@@ -12,11 +12,11 @@ import Icon from '../../atoms/Icon'
12
12
  export const Error = ({ title, children, getStyles }) => {
13
13
  return (
14
14
  <div className={getStyles('error')}>
15
- <Icon className="icon-warning" name="warning" size="md" />
15
+ <Icon className="icon-warning" name="warning" size="lg" />
16
16
  <Spacer.Horizontal size="sm" />
17
17
  <div>
18
18
  {title && <Heading>{title}</Heading>}
19
- <Paragraph>{children}</Paragraph>
19
+ <Paragraph size="sm">{children}</Paragraph>
20
20
  </div>
21
21
  </div>
22
22
  )
@@ -1,9 +1,10 @@
1
1
  .error {
2
2
  display: flex;
3
3
  padding: 10px 20px;
4
- border-top: 4px solid var(--color-red-500);
5
- background: var(--color-red-200);
4
+ border-top: 2px solid var(--color-red-500);
5
+ background: var(--color-red-100);
6
6
  color: var(--color-red-800);
7
+ border-radius: var(--border-radius-sm);
7
8
  }
8
9
 
9
10
  .error :global(.icon-warning) {
@@ -0,0 +1,47 @@
1
+ import React, { useEffect } from "react";
2
+ import PropTypes from 'prop-types'
3
+
4
+ import styles from './FooterTable.module.css'
5
+ import { options } from './constants'
6
+ import withStyles from '../../hocs/withStyles'
7
+
8
+ export const FooterTable = ({ getStyles, range, setPage, page, slice }) => {
9
+ useEffect(() => {
10
+ if (slice.length < 1 && page !== 1) {
11
+ setPage(page - 1);
12
+ }
13
+ }, [slice, page, setPage]);
14
+
15
+ return (
16
+ <div className={getStyles('footer-table')}>
17
+
18
+ <div className={styles.tableFooter}>
19
+ {range.map((el, index) => (
20
+ <button
21
+ key={index}
22
+ className={`${styles.button} ${page === el ? styles.activeButton : styles.inactiveButton
23
+ }`}
24
+ onClick={() => setPage(el)}
25
+ >
26
+ {el}
27
+ </button>
28
+ ))}
29
+ </div>
30
+
31
+ </div>
32
+
33
+
34
+ )
35
+ }
36
+
37
+ FooterTable.propTypes = {
38
+ // children: PropTypes.node.isRequired,
39
+ getStyles: PropTypes.func.isRequired,
40
+ // type: PropTypes.oneOf(options.types),
41
+ }
42
+
43
+ FooterTable.defaultProps = {
44
+ getStyles: () => { },
45
+ }
46
+
47
+ export default withStyles(styles)(FooterTable)
@@ -0,0 +1,37 @@
1
+ .footer-table {
2
+ display: flex;
3
+ }
4
+
5
+ .tableFooter {
6
+ background-color: #f1f1f1;
7
+ padding: 8px 0px;
8
+ width: 100%;
9
+ font-weight: 500;
10
+ text-align: left;
11
+ font-size: 16px;
12
+ color: #2c3e50;
13
+ border-bottom-left-radius: 15px;
14
+ border-bottom-right-radius: 15px;
15
+ display: flex;
16
+ align-items: center;
17
+ justify-content: center;
18
+ }
19
+
20
+ .button {
21
+ border: none;
22
+ padding: 7px 14px;
23
+ border-radius: 10px;
24
+ cursor: pointer;
25
+ margin-right: 4px;
26
+ margin-left: 4px;
27
+ }
28
+
29
+ .activeButton {
30
+ color: white;
31
+ background: #185adb;
32
+ }
33
+
34
+ .inactiveButton {
35
+ color: #2c3e50;
36
+ background: #f9f9f9;
37
+ }
@@ -0,0 +1,23 @@
1
+ import { FooterTable, styles, options } from '.'
2
+
3
+ import {
4
+ getTemplate,
5
+ getListTemplate,
6
+ getOptionsArgTypes,
7
+ } from '../../helpers/storybook'
8
+
9
+ const Template = getTemplate(FooterTable, styles)
10
+ const ListTemplate = getListTemplate(FooterTable, styles)
11
+
12
+ export default {
13
+ title: 'Molecules/FooterTable',
14
+ component: FooterTable,
15
+ args: {},
16
+ argTypes: {
17
+ // types: getOptionsArgTypes(options.types),
18
+ },
19
+ }
20
+
21
+ export const Default = Template.bind({})
22
+ // export const List = ListTemplate.bind({})
23
+ // List.args = { items: options.types.map((type) => ({ type })) }
@@ -0,0 +1 @@
1
+ export const options = { types: [] }
@@ -0,0 +1,3 @@
1
+ export { default, FooterTable } from './FooterTable'
2
+ export { options } from './constants'
3
+ export { default as styles } from './FooterTable.module.css'
@@ -1,5 +1,6 @@
1
1
  import React, { useState } from 'react'
2
2
  import PropTypes from 'prop-types'
3
+ import Link from 'next/link'
3
4
 
4
5
  import styles from './ItemMenu.module.css'
5
6
  import { options } from './constants'
@@ -7,7 +8,7 @@ import withStyles from '../../hocs/withStyles'
7
8
 
8
9
  import Icon from '../../atoms/Icon'
9
10
 
10
- export const ItemMenu = ({ children, getStyles, size, icon, color, background, subMenu, itemSubmenu }) => {
11
+ export const ItemMenu = ({ children, getStyles, size, icon, color, background, subMenu, itemSubmenu, itemHref, itemActive }) => {
11
12
 
12
13
  //create initial menuCollapse state using useState hook
13
14
  const [subMenuCollapse, setSubMenuCollapse] = useState(false)
@@ -22,45 +23,50 @@ export const ItemMenu = ({ children, getStyles, size, icon, color, background, s
22
23
  if (!subMenu) {
23
24
  return (
24
25
  <>
25
- <li className={getStyles('pro-menu-item')}>
26
+ <Link href={itemHref} passHref>
27
+ <li className={getStyles('pro-menu-item', { 'active': itemActive })}>
26
28
 
27
- <div className={getStyles('pro-inner-item')}>
29
+ <div className={getStyles('pro-inner-item')}>
28
30
 
29
- <span className={getStyles('pro-icon-wrapper')}>
31
+ <span className={getStyles('pro-icon-wrapper')}>
30
32
 
31
- <span className={getStyles('pro-icon')}>
32
- <Icon
33
- size={size}
34
- name={icon}
35
- color={color}
36
- background={background}
37
- onClick={function noRefCheck() { }}
38
- />
39
- </span>
33
+ <span className={getStyles('pro-icon')}>
40
34
 
41
- </span>
35
+ <Icon
36
+ size={size}
37
+ name={icon}
38
+ color={ itemActive ? 'primary' : color}
39
+ background={background}
40
+ onClick={function noRefCheck() { }}
41
+ />
42
42
 
43
- <span className={getStyles('pro-item-content', { 'color': color })}>{children}</span>
43
+ </span>
44
44
 
45
- </div>
45
+ </span>
46
46
 
47
- </li>
47
+ <span className={getStyles('pro-item-content', { 'color': color })}>{children}</span>
48
+
49
+ </div>
50
+
51
+ </li>
52
+ </Link>
48
53
  </>
49
54
  )
50
55
  } else {
51
56
  return (
52
57
  <>
53
- <li className={getStyles('pro-menu-item', 'pro-sub-menu', { 'open': subMenuCollapse })} title="Home" href="/">
58
+ <li className={getStyles('pro-menu-item', 'pro-sub-menu', { 'open': subMenuCollapse }, { 'activesubtxt': itemActive })} title="Home" href="/">
54
59
 
55
60
  <div className={getStyles('pro-inner-item')} onClick={subMenuIconClick}>
56
61
 
57
62
  <span className={getStyles('pro-icon-wrapper')}>
58
63
 
59
64
  <span className={getStyles('pro-icon')}>
65
+
60
66
  <Icon
61
67
  size={size}
62
68
  name={icon}
63
- color={color}
69
+ color={ itemActive ? 'primary' : color}
64
70
  background={background}
65
71
  onClick={function noRefCheck() { }}
66
72
  />
@@ -68,7 +74,7 @@ export const ItemMenu = ({ children, getStyles, size, icon, color, background, s
68
74
 
69
75
  </span>
70
76
 
71
- <span className={getStyles('pro-item-content', { 'color': color })}>{children}</span>
77
+ <span className={getStyles('pro-item-content', 'title', { 'color': color })}>{children}</span>
72
78
 
73
79
  <span className={getStyles('pro-arrow-wrapper')}>
74
80
  <span className={getStyles('pro-arrow')}></span>
@@ -81,10 +87,12 @@ export const ItemMenu = ({ children, getStyles, size, icon, color, background, s
81
87
  <ul>
82
88
 
83
89
  {itemSubmenu.map((item, index) => (
84
- <li key={index} className={getStyles('pro-menu-item')} href={item.href}>
85
- <div className={getStyles('pro-inner-item')} role="button">
86
- <span className={getStyles('pro-item-content')}>{item.text}</span></div>
87
- </li>
90
+ <Link key={index} href={item.href} passHref>
91
+ <li className={getStyles('pro-menu-item', { 'activesub': item.active })}>
92
+ <div className={getStyles('pro-inner-item')} role="button">
93
+ <span className={getStyles('pro-item-content')}>{item.text}</span></div>
94
+ </li>
95
+ </Link>
88
96
  ))}
89
97
  </ul>
90
98
  </div>
@@ -102,6 +110,7 @@ ItemMenu.propTypes = {
102
110
  children: PropTypes.node.isRequired,
103
111
  getStyles: PropTypes.func.isRequired,
104
112
  subMenu: PropTypes.bool.isRequired,
113
+ itemActive: PropTypes.bool,
105
114
  icon: PropTypes.oneOf(options.icons),
106
115
  size: PropTypes.oneOf(options.sizes),
107
116
  color: PropTypes.oneOf(options.colors),
@@ -110,10 +119,12 @@ ItemMenu.propTypes = {
110
119
 
111
120
  ItemMenu.defaultProps = {
112
121
  subMenu: false,
122
+ itemActive: false,
113
123
  icon: 'home',
114
124
  size: 'lg',
115
125
  color: 'highlight',
116
126
  background: 'transparent',
127
+ itemHref: '/',
117
128
  getStyles: () => { },
118
129
  }
119
130
 
@@ -89,14 +89,23 @@
89
89
  color: var(--color-primary);
90
90
  }
91
91
 
92
-
93
92
  /* ////////////////////// */
94
93
 
94
+ .pro-menu-item.active .pro-item-content {
95
+ color: var(--color-primary);
96
+ }
95
97
 
96
- .pro-menu-item.active {
97
- color: #d8d8d8;
98
+ .pro-sub-menu .pro-menu-item.activesub .pro-item-content {
99
+ color: var(--color-primary);
98
100
  }
99
101
 
102
+ .pro-menu-item.pro-sub-menu.activesubtxt .pro-inner-item .pro-item-content.title {
103
+ color: var(--color-primary);
104
+ /* font-size: 32px; */
105
+ }
106
+
107
+ /* ////////////////////// */
108
+
100
109
  .pro-menu-item .suffix-wrapper {
101
110
  opacity: 1;
102
111
  transition: opacity 0.2s;
@@ -190,7 +199,7 @@
190
199
  }
191
200
 
192
201
  .pro-menu-item.pro-sub-menu .pro-inner-list-item .pro-inner-item {
193
- padding: 14px 30px 14px 15px;
202
+ padding: 10px 30px 10px 15px;
194
203
  margin: 0;
195
204
  }
196
205
 
@@ -16,6 +16,8 @@ export default {
16
16
  children: 'Home',
17
17
  subMenu: false,
18
18
  itemSubmenu: options.itemSubmenu,
19
+ itemActive: false,
20
+ itemHref: '/'
19
21
  },
20
22
  argTypes: {
21
23
  itemSubmenu: {
@@ -18,16 +18,19 @@ export const options = {
18
18
  text: "Taxi",
19
19
  href: "/taxi",
20
20
  view: true,
21
+ active: false,
21
22
  },
22
23
  {
23
24
  text: "Parking",
24
25
  href: "/parking",
25
26
  view: true,
27
+ active: false,
26
28
  },
27
29
  {
28
30
  text: "Sharing",
29
31
  href: "/sharing",
30
32
  view: true,
33
+ active: false,
31
34
  },
32
35
  ],
33
36
  }
@@ -0,0 +1,68 @@
1
+ import React from 'react'
2
+ import PropTypes from 'prop-types'
3
+
4
+ import styles from './RowTable.module.css'
5
+ import { options } from './constants'
6
+ import withStyles from '../../hocs/withStyles'
7
+
8
+ import Moment from 'react-moment'
9
+
10
+ export const RowTable = ({ getStyles, slice, columnsData }) => {
11
+ return (
12
+ <div className={getStyles('tbl-content')}>
13
+ <table className={getStyles('table')} cellPadding="0" cellSpacing="0" border="0">
14
+ <tbody>
15
+ {slice.map((item, index) => (
16
+
17
+ <tr key={index}>
18
+ {columnsData.map((itemTd) => (
19
+ itemTd.activeView ?
20
+
21
+ (
22
+ itemTd.subAccessor !== '' ?
23
+
24
+ <td className={getStyles('td')} key={[itemTd.accessor]}>{item[itemTd.accessor][itemTd.subAccessor]}</td> :
25
+
26
+ itemTd.typeFilter === 'date' ?
27
+
28
+ <td className={getStyles('td')} key={[itemTd.accessor]}>
29
+ <Moment format="DD/MM/YYYY hh:mm:ss">
30
+ {item[itemTd.accessor]}
31
+ </Moment>
32
+ </td>
33
+
34
+ : itemTd.typeFilter === 'number' ?
35
+
36
+ itemTd.subTypeFilter ?
37
+
38
+ <td className={getStyles('td')} key={[itemTd.accessor]}>{item[itemTd.accessor].toFixed(2).toString().replace(/\./g, ',')} €</td>
39
+ :
40
+ <td className={getStyles('td')} key={[itemTd.accessor]}>{item[itemTd.accessor]}</td>
41
+
42
+ : itemTd.subTypeFilter ?
43
+
44
+ <td className={getStyles('td')} key={[itemTd.accessor]}>{item[itemTd.accessor].toString().replace(/\./g, ',').slice(0, 5)} €</td>
45
+ :
46
+ <td className={getStyles('td')} key={[itemTd.accessor]}>{item[itemTd.accessor]}</td>
47
+
48
+ ) : null
49
+ ))}
50
+ </tr>
51
+
52
+ ))}
53
+ </tbody>
54
+ </table>
55
+ </div>
56
+ )
57
+ }
58
+
59
+ RowTable.propTypes = {
60
+ getStyles: PropTypes.func.isRequired,
61
+ type: PropTypes.oneOf(options.types),
62
+ }
63
+
64
+ RowTable.defaultProps = {
65
+ getStyles: () => { },
66
+ }
67
+
68
+ export default withStyles(styles)(RowTable)
@@ -0,0 +1,22 @@
1
+ .table {
2
+ width: 100%;
3
+ table-layout: fixed;
4
+
5
+ }
6
+
7
+ .tbl-content {
8
+ height: max-content;
9
+ overflow-x: auto;
10
+ margin-top: 0px;
11
+ border: 1px solid rgba(0, 0, 0, 0.1);
12
+ }
13
+
14
+ .td {
15
+ padding: 15px;
16
+ text-align: left;
17
+ vertical-align: middle;
18
+ font-weight: 300;
19
+ font-size: 12px;
20
+ color: var(--color-font-base);
21
+ border-bottom: solid 1px rgba(0, 0, 0, 0.1);
22
+ }
@@ -0,0 +1,26 @@
1
+ import { RowTable, styles, options } from '.'
2
+
3
+ import {
4
+ getTemplate,
5
+ getListTemplate,
6
+ getOptionsArgTypes,
7
+ } from '../../helpers/storybook'
8
+
9
+ const Template = getTemplate(RowTable, styles)
10
+ const ListTemplate = getListTemplate(RowTable, styles)
11
+
12
+ export default {
13
+ title: 'Molecules/RowTable',
14
+ component: RowTable,
15
+ args: {
16
+ slice: options.bookings,
17
+ columnsData: options.columns,
18
+ },
19
+ argTypes: {
20
+ // types: getOptionsArgTypes(options.types),
21
+ },
22
+ }
23
+
24
+ export const Default = Template.bind({})
25
+ // export const List = ListTemplate.bind({})
26
+ // List.args = { items: options.types.map((type) => ({ type })) }