@appscode/design-system 1.0.3-alpha.7 → 1.0.43-alpha.100

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 (112) hide show
  1. package/base/utilities/_default.scss +298 -23
  2. package/base/utilities/_derived-variables.scss +2 -15
  3. package/base/utilities/_initial-variables.scss +99 -64
  4. package/base/utilities/_mixin.scss +90 -10
  5. package/base/utilities/_typography.scss +23 -7
  6. package/base/utilities/dark-theme.scss +25 -0
  7. package/components/_ac-accordion.scss +1 -0
  8. package/components/_ac-alert-box.scss +47 -11
  9. package/components/_ac-card.scss +55 -20
  10. package/components/_ac-code-highlight.scss +7 -1
  11. package/components/_ac-content-layout.scss +4 -4
  12. package/components/_ac-drag.scss +6 -6
  13. package/components/_ac-input.scss +140 -38
  14. package/components/_ac-modal.scss +5 -4
  15. package/components/_ac-multi-select.scss +220 -18
  16. package/components/_ac-options.scss +31 -16
  17. package/components/_ac-select-box.scss +15 -5
  18. package/components/_ac-table.scss +88 -47
  19. package/components/_ac-tabs.scss +72 -23
  20. package/components/_ac-tags.scss +2 -2
  21. package/components/_ac-terminal.scss +272 -0
  22. package/components/_app-drawer.scss +6 -6
  23. package/components/_breadcumb.scss +8 -3
  24. package/components/_buttons.scss +86 -33
  25. package/components/_card-body-wrapper.scss +3 -3
  26. package/components/_dashboard-header.scss +1 -1
  27. package/components/_direct-deploy.scss +69 -0
  28. package/components/_go-to-top.scss +1 -1
  29. package/components/_graph.scss +45 -0
  30. package/components/_image-upload.scss +6 -4
  31. package/components/_left-sidebar-menu.scss +206 -46
  32. package/components/_monaco-editor.scss +1 -1
  33. package/components/_navbar.scss +104 -27
  34. package/components/_overview-info.scss +4 -4
  35. package/components/_overview-page.scss +1 -2
  36. package/components/_pagination.scss +45 -7
  37. package/components/_payment-card.scss +28 -12
  38. package/components/_preloader.scss +1 -1
  39. package/components/_preview-modal.scss +8 -8
  40. package/components/_pricing-table.scss +1 -1
  41. package/components/_progress-bar.scss +5 -5
  42. package/components/_subscription-card.scss +15 -8
  43. package/components/_table-of-content.scss +1 -1
  44. package/components/_tfa.scss +69 -0
  45. package/components/_widget-menu.scss +9 -9
  46. package/components/_wizard.scss +32 -20
  47. package/components/ac-toaster/_ac-toasted.scss +40 -8
  48. package/components/bbum/_card-team.scss +18 -10
  49. package/components/bbum/_information-center.scss +19 -5
  50. package/components/bbum/_mobile-desktop.scss +6 -6
  51. package/components/bbum/_post.scss +5 -4
  52. package/components/bbum/_sign-up-notification.scss +6 -6
  53. package/components/bbum/_single-post-preview.scss +9 -9
  54. package/components/bbum/_user-profile.scss +97 -90
  55. package/components/ui-builder/_ui-builder.scss +31 -12
  56. package/components/ui-builder/_vue-open-api.scss +98 -0
  57. package/layouts/_404.scss +159 -0
  58. package/layouts/_code-preview.scss +14 -6
  59. package/main.scss +4 -0
  60. package/package.json +2 -7
  61. package/plugins/theme.js +142 -0
  62. package/plugins/vue-toaster.js +7 -6
  63. package/vue-components/v2/card/CardContent.vue +5 -0
  64. package/vue-components/v2/card/CardHeader.vue +12 -0
  65. package/vue-components/v2/card/OverviewCard.vue +10 -0
  66. package/vue-components/v2/card/OverviewCards.vue +5 -0
  67. package/vue-components/v2/card/PaymentCards.vue +16 -10
  68. package/vue-components/v2/content/ContentHeader.vue +1 -1
  69. package/vue-components/v2/editor/Editor.vue +37 -17
  70. package/vue-components/v2/header/Header.vue +0 -1
  71. package/vue-components/v2/modal/Modal.vue +32 -14
  72. package/vue-components/v2/modals/JsonShowModal.vue +0 -1
  73. package/vue-components/v2/navbar/Appdrawer.vue +9 -6
  74. package/vue-components/v2/navbar/ThemeMode.vue +120 -0
  75. package/vue-components/v2/pagination/Pagination.vue +8 -1
  76. package/vue-components/v2/preloader/Preloader.vue +5 -5
  77. package/vue-components/v2/sidebar/ClusterSwitcher.vue +126 -0
  78. package/vue-components/v2/sidebar/SidebarItem.vue +24 -2
  79. package/vue-components/v2/table/InfoTable.vue +13 -3
  80. package/vue-components/v2/table/Table.vue +75 -5
  81. package/vue-components/v2/table/TableRow.vue +17 -8
  82. package/vue-components/v2/table/table-cell/CellValue.vue +10 -1
  83. package/vue-components/v2/tabs/EditorTabs.vue +1 -1
  84. package/vue-components/v3/button/Button.vue +73 -0
  85. package/vue-components/v3/content/ContentHeader.vue +54 -0
  86. package/vue-components/v3/content/ContentTable.vue +65 -0
  87. package/vue-components/v3/dropdown/DropdownDivider.vue +3 -0
  88. package/vue-components/v3/dropdown/DropdownItem.vue +5 -0
  89. package/vue-components/v3/dropdown/DropdownMenu.vue +111 -0
  90. package/vue-components/v3/editor/Editor.vue +157 -0
  91. package/vue-components/v3/form-fields/Input.vue +21 -0
  92. package/vue-components/v3/header/Header.vue +45 -0
  93. package/vue-components/v3/modal/Modal.vue +135 -0
  94. package/vue-components/v3/modals/JsonShowModal.vue +87 -0
  95. package/vue-components/v3/navbar/Appdrawer.vue +63 -0
  96. package/vue-components/v3/navbar/ThemeMode.vue +128 -0
  97. package/vue-components/v3/navbar/User.vue +64 -0
  98. package/vue-components/v3/pagination/Pagination.vue +159 -0
  99. package/vue-components/v3/searchbars/SearchBar.vue +47 -0
  100. package/vue-components/v3/sidebar/ClusterSwitcher.vue +133 -0
  101. package/vue-components/v3/tab/TabItem.vue +17 -0
  102. package/vue-components/v3/table/FakeTableCell.vue +39 -0
  103. package/vue-components/v3/table/InfoTable.vue +105 -0
  104. package/vue-components/v3/table/Table.vue +238 -0
  105. package/vue-components/v3/table/TableCell.vue +28 -0
  106. package/vue-components/v3/table/TableRow.vue +60 -0
  107. package/vue-components/v3/table/table-cell/ArrayCell.vue +111 -0
  108. package/vue-components/v3/table/table-cell/CellValue.vue +117 -0
  109. package/vue-components/v3/table/table-cell/ObjectCell.vue +105 -0
  110. package/vue-components/v3/table/table-cell/ValueWithModal.vue +43 -0
  111. package/vue-components/v3/tabs/EditorTabs.vue +36 -0
  112. package/vue-components/v3/tag/Tag.vue +17 -0
@@ -1,6 +1,6 @@
1
1
  .single-post-preview {
2
- background: $ac-white;
3
- border: 1px solid #e5e9f2;
2
+ background-color: $ac-white;
3
+ border: 1px solid $ac-white-light;
4
4
  border-radius: 4px;
5
5
  margin-bottom: 15px;
6
6
 
@@ -35,7 +35,7 @@
35
35
 
36
36
  a {
37
37
  font-size: $font-size-medium;
38
- color: #1c2d41;
38
+ color: $ac-color-heading;
39
39
  line-height: 1;
40
40
  font-weight: 500;
41
41
  }
@@ -68,10 +68,10 @@
68
68
 
69
69
  .post-body {
70
70
  padding: 0 20px 15px;
71
- border-bottom: 1px solid #ebeff5;
71
+ border-bottom: 1px solid $ac-white-light;
72
72
 
73
73
  p {
74
- color: #3c4858;
74
+ color: $ac-color-text;
75
75
  font-size: $font-size-small;
76
76
  line-height: 160%;
77
77
  }
@@ -90,7 +90,7 @@
90
90
 
91
91
  li {
92
92
  font-size: $font-size-normal;
93
- color: #3c4858;
93
+ color: $ac-color-value;
94
94
  }
95
95
  }
96
96
  }
@@ -137,7 +137,7 @@
137
137
  h2 {
138
138
  font-size: $ac-size-2;
139
139
  margin-bottom: 25px;
140
- color: #003466;
140
+ color: $ac-color-heading;
141
141
  }
142
142
  }
143
143
  }
@@ -220,13 +220,13 @@
220
220
  button {
221
221
  background-color: transparent;
222
222
  border: none;
223
- color: #3c4858;
223
+ color: $ac-color-value;
224
224
  transition: 0.3s;
225
225
  font-weight: 500;
226
226
  cursor: pointer;
227
227
  display: block;
228
228
  width: 50%;
229
- border-right: 1px solid #ebeff5 !important;
229
+ border-right: 1px solid $ac-white-light !important;
230
230
  padding: 10px;
231
231
 
232
232
  &:last-child {
@@ -1,113 +1,120 @@
1
- .user-profile-wrapper {
2
- .user-profile-photo {
3
- background-color: $ac-white;
4
- border-radius: 4px;
5
- overflow: hidden;
6
- padding: 10px;
7
- position: relative;
8
- z-index: 1;
9
- margin-bottom: 10px;
10
-
11
- .thumbnail {
12
- height: 240px;
13
- background-size: cover;
14
- background-position: center;
15
- background-color: $ac-grey-lightest;
16
- background-repeat: no-repeat;
17
- border-radius: 10px;
18
-
19
- &.profile-1 {
20
- background-image: url("~@appscode/design-system-images/icons/appscode-large-icon.jpg");
21
- }
22
- }
23
-
24
- .setting-button {
25
- position: absolute;
26
- left: 15px;
27
- top: 15px;
28
- font-size: 18px;
29
- color: $ac-white;
30
- background-color: transparent;
31
- border: none;
32
- cursor: pointer;
33
- }
34
- }
35
-
36
- .profile-information {
37
- .profile-top-info {
38
- display: flex;
39
- align-items: center;
40
- justify-content: space-between;
41
-
42
- h3 {
43
- font-size: 26px;
44
- line-height: 1.4;
45
-
46
- span {
47
- font-size: 14px;
48
- line-height: 1.5;
49
- font-weight: 400;
50
- display: block;
51
- color: #74818d;
1
+ .ac-system-body.bb-user-management {
2
+ .user-profile-wrapper {
3
+ padding: 20px;
4
+ border-right: 1px solid $ac-white-light;
5
+ height: calc(100vh - 52px);
6
+ position: sticky;
7
+ top: 52px;
8
+
9
+ .user-profile-photo {
10
+ background-color: $ac-white;
11
+ border-radius: 4px;
12
+ overflow: hidden;
13
+ position: relative;
14
+ z-index: 1;
15
+ margin-bottom: 10px;
16
+
17
+ .thumbnail {
18
+ height: 240px;
19
+ background-size: cover;
20
+ background-position: center;
21
+ background-color: $ac-gray-lightest;
22
+ background-repeat: no-repeat;
23
+ border-radius: 10px;
24
+
25
+ &.profile-1 {
26
+ background-image: url("~@appscode/design-system-images/icons/appscode-large-icon.jpg");
52
27
  }
53
28
  }
54
- }
55
29
 
56
- .edit-icon {
57
- max-width: 16px;
58
- }
59
-
60
- p {
61
- font-size: 14px;
62
- color: #74818d;
63
- line-height: 160%;
64
- margin-bottom: 20px;
30
+ .setting-button {
31
+ position: absolute;
32
+ left: 15px;
33
+ top: 15px;
34
+ font-size: 18px;
35
+ color: $ac-white;
36
+ background-color: transparent;
37
+ border: none;
38
+ cursor: pointer;
39
+ }
65
40
  }
66
41
 
67
- .social-links {
68
- margin-bottom: 20px;
69
-
70
- a {
71
- max-width: 26px;
72
- margin-right: 10px;
73
- display: inline-block;
74
-
75
- &:last-child {
76
- margin-right: 0;
77
- }
42
+ .profile-information {
43
+ .profile-top-info {
44
+ display: flex;
45
+ align-items: center;
46
+ justify-content: space-between;
47
+ margin-bottom: 10px;
78
48
 
79
- img {
80
- width: 100%;
49
+ h3 {
50
+ font-size: 26px;
51
+ line-height: 1.4;
52
+
53
+ span {
54
+ font-size: 14px;
55
+ line-height: 1.5;
56
+ font-weight: 400;
57
+ display: block;
58
+ color: $ac-color-value;
59
+ }
81
60
  }
82
61
  }
83
- }
84
-
85
- .edit-profile {
86
- background-color: transparent;
87
- }
88
62
 
89
- .website-link {
90
- margin-top: 20px;
63
+ .edit-icon {
64
+ max-width: 16px;
65
+ }
91
66
 
92
- a {
93
- color: $ac-primary;
94
- display: flex;
95
- align-items: center;
67
+ p {
68
+ font-size: 14px;
69
+ color: $ac-color-text;
70
+ line-height: 160%;
96
71
  margin-bottom: 10px;
72
+ }
97
73
 
98
- &:last-child {
99
- margin-bottom: 0;
100
- }
74
+ .social-links {
75
+ margin-bottom: 20px;
101
76
 
102
- img {
103
- max-width: 18px;
77
+ a {
78
+ max-width: 26px;
104
79
  margin-right: 10px;
80
+ display: inline-block;
81
+
82
+ &:last-child {
83
+ margin-right: 0;
84
+ }
85
+
86
+ img {
87
+ width: 100%;
88
+ }
89
+ }
90
+ }
91
+ .website-link {
92
+ margin-top: 20px;
93
+
94
+ a {
95
+ color: $ac-primary;
96
+ display: flex;
97
+ align-items: center;
98
+ margin-bottom: 10px;
99
+ font-size: 13px;
100
+ &:last-child {
101
+ margin-bottom: 0;
102
+ }
103
+
104
+ img {
105
+ max-width: 15px;
106
+ margin-right: 10px;
107
+ }
105
108
  }
106
109
  }
107
110
  }
108
111
  }
109
112
  }
110
113
 
114
+ .sign-up-notification {
115
+ border: 1px solid $ac-white-light;
116
+ padding: 20px;
117
+ }
111
118
  // circle type profile start
112
119
  .ac-profile-photo {
113
120
  figure {
@@ -18,6 +18,7 @@
18
18
  p {
19
19
  font-size: 13px;
20
20
  margin-bottom: 10px;
21
+ color: $ac-color-value;
21
22
  }
22
23
  }
23
24
  .key-value-save {
@@ -60,10 +61,10 @@
60
61
  position: absolute;
61
62
  content: "";
62
63
  left: 27px;
63
- top: 5px;
64
+ top: 10px;
64
65
  width: 1px;
65
66
  height: calc(100% - 20px);
66
- border: 1px dashed #ddd;
67
+ border: 1px dashed $ac-white-light;
67
68
  z-index: -1;
68
69
  }
69
70
 
@@ -74,7 +75,7 @@
74
75
  bottom: 6px;
75
76
  width: 12px;
76
77
  height: 12px;
77
- background: #eee;
78
+ background-color: $ac-white-light;
78
79
  border-radius: 50%;
79
80
  z-index: -1;
80
81
  }
@@ -94,11 +95,15 @@
94
95
  display: inline-block;
95
96
  text-align: center;
96
97
  font-size: 10px;
97
- border: 1px solid #a6abbd;
98
+ border: 1px solid $ac-white-light;
98
99
  border-radius: 50%;
99
100
  margin-right: 10px;
100
101
  cursor: pointer;
101
- background-color: #fff;
102
+ background-color: $ac-white;
103
+ color: $ac-color-value;
104
+ &.is-disabled {
105
+ cursor: not-allowed;
106
+ }
102
107
  }
103
108
  }
104
109
  }
@@ -114,13 +119,13 @@
114
119
  .table-inner {
115
120
  min-width: 630px;
116
121
  .thead {
117
- background-color: #f1f1f1;
122
+ background-color: $ac-white-lighter;
118
123
  .tr {
119
124
  .th {
120
125
  font-weight: 600;
121
126
  }
122
- border-top: 1px solid #e7e7e7;
123
- border-bottom: 1px solid #e7e7e7;
127
+ border-top: 1px solid var(--ac-white-light);
128
+ border-bottom: 1px solid var(--ac-white-light);
124
129
  }
125
130
  }
126
131
  .thead,
@@ -143,17 +148,22 @@
143
148
 
144
149
  .tbody {
145
150
  .tr {
146
- border-bottom: 1px solid #e7e7e7;
151
+ border-bottom: 1px solid $ac-white-light;
147
152
  }
148
153
  }
149
154
  }
150
155
  .is-selected {
151
- border: 1px solid #1971bd;
152
- border-bottom: 1px solid #1971bd !important;
156
+ border: 1px solid $ac-primary;
157
+ border-bottom: 1px solid $ac-primary !important;
153
158
  border-radius: 4px;
154
159
  }
155
160
  }
156
-
161
+ .is-collapsed {
162
+ &.ac-nested-elements::before,
163
+ &.ac-nested-elements::after {
164
+ display: none;
165
+ }
166
+ }
157
167
  // details with checkradio
158
168
  .details-with-checkradio-wrapper {
159
169
  display: grid;
@@ -161,6 +171,15 @@
161
171
  grid-gap: 15px;
162
172
  }
163
173
 
174
+ // dark theme start
175
+ .is-dark-theme {
176
+ .nested-body {
177
+ code {
178
+ background-color: var(--dark-bg-light);
179
+ }
180
+ }
181
+ }
182
+ // dark theme end
164
183
  /****************************************
165
184
  Responsive Classes
166
185
  *****************************************/
@@ -0,0 +1,98 @@
1
+ .vue-schema-form-array {
2
+ .nested-body {
3
+ // margin-bottom: 15px;
4
+ display: flex;
5
+
6
+ .form-left-item {
7
+ margin-right: 10px;
8
+ width: calc(100% - 92px);
9
+ }
10
+ }
11
+ }
12
+
13
+ .nested-header {
14
+ .tabs.ac-tabs {
15
+ margin-bottom: 0;
16
+ opacity: 0;
17
+ visibility: hidden;
18
+ transition: 0.3s ease-in-out;
19
+ }
20
+
21
+ &:hover {
22
+ .tabs.ac-tabs {
23
+ opacity: 1;
24
+ visibility: visible;
25
+ }
26
+ }
27
+ }
28
+
29
+ .vue-openapi-form {
30
+ margin-left: -20px;
31
+ .is-warning {
32
+ font-size: 12px;
33
+ color: #ea3d2f;
34
+ padding-left: 10px;
35
+ }
36
+
37
+ .ac-nested-elements {
38
+ &:first-child {
39
+ margin-left: 0;
40
+ }
41
+
42
+ .nested-body {
43
+ padding-left: 0px;
44
+ }
45
+
46
+ .nested-header {
47
+ width: 100%;
48
+ }
49
+ }
50
+
51
+ .ac-single-switch {
52
+ margin-left: -15px;
53
+ }
54
+
55
+ .ac-single-input {
56
+ margin-left: 25px;
57
+
58
+ &:last-child {
59
+ margin-bottom: 15px;
60
+ }
61
+ }
62
+ }
63
+
64
+ .vue-form-scema-body {
65
+ .left-content {
66
+ width: 650px;
67
+ background-color: $ac-white-lighter;
68
+ padding: 30px;
69
+ }
70
+
71
+ .right-content {
72
+ width: 100%;
73
+ margin-top: 30px;
74
+ }
75
+ }
76
+
77
+ .v-tooltip-open {
78
+ background-color: $ac-white;
79
+ }
80
+
81
+ .ac-nested-elements::after {
82
+ top: 25px;
83
+ width: 1px;
84
+ height: calc(100% - 50px);
85
+ }
86
+
87
+ .ac-nested-elements::before {
88
+ bottom: 12px;
89
+ }
90
+
91
+ .is-collapsed {
92
+ &.ac-nested-elements::before,
93
+ &.ac-nested-elements::after {
94
+ display: none;
95
+ }
96
+ }
97
+
98
+ // for vue-tooltip
@@ -0,0 +1,159 @@
1
+ .fzf-wrapper {
2
+ padding: 45px 0;
3
+ position: relative;
4
+ z-index: 1;
5
+ background-size: cover;
6
+ background-position: center;
7
+
8
+ &.fzf-bg {
9
+ background-image: url("~@/assets/images/404/404-bg.png");
10
+ }
11
+
12
+ .fzf-left-content-wrapper {
13
+ .fzf-content-inner {
14
+ padding: 110px 0;
15
+
16
+ h1 {
17
+ font-size: 261px;
18
+ line-height: 1;
19
+ font-weight: 700;
20
+ color: #1c2c41;
21
+ margin-bottom: 60px;
22
+ }
23
+
24
+ h2 {
25
+ font-size: 36px;
26
+ font-weight: 700;
27
+ color: #1c2c41;
28
+ margin-bottom: 10px;
29
+ line-height: 46px;
30
+ }
31
+
32
+ p {
33
+ font-size: 16px;
34
+ color: #4a4a4a;
35
+ opacity: 0.8;
36
+ margin-bottom: 30px;
37
+ }
38
+ }
39
+ }
40
+ }
41
+
42
+ .animation-infinity {
43
+ position: relative;
44
+ animation: animation-jump 2s ease-in-out infinite;
45
+ -webkit-animation: animation-jump 2s ease-in-out infinite;
46
+ }
47
+
48
+ @-webkit-keyframes animation-jump {
49
+ 0% {
50
+ top: 3px;
51
+ }
52
+
53
+ 50% {
54
+ top: -3px;
55
+ }
56
+
57
+ 100% {
58
+ top: 3px;
59
+ }
60
+ }
61
+
62
+ @keyframes animation-jump {
63
+ 0% {
64
+ top: 3px;
65
+ }
66
+
67
+ 50% {
68
+ top: -3px;
69
+ }
70
+
71
+ 100% {
72
+ top: 3px;
73
+ }
74
+ }
75
+
76
+ /*=================================================================================================
77
+ Responsive code start
78
+ =================================================================================================*/
79
+ /****************************************************************
80
+ Full HD Min Width 1407
81
+ **************************************************************** */
82
+ /* Full HD Min Width 1408px */
83
+ @media (min-width: 1408px) {
84
+ }
85
+
86
+ /****************************************************************
87
+ Widescreen Between 1216px and 1407px
88
+ **************************************************************** */
89
+ @media (min-width: 1216px) and (max-width: 1407px) {
90
+ .fzf-wrapper {
91
+ .fzf-left-content-wrapper {
92
+ .fzf-content-inner {
93
+ h1 {
94
+ font-size: 220px;
95
+ }
96
+ }
97
+ }
98
+ }
99
+ }
100
+
101
+ /****************************************************************
102
+ Desktop Between 1024px and 1215px
103
+ **************************************************************** */
104
+ @media (min-width: 1024px) and (max-width: 1215px) {
105
+ .fzf-wrapper {
106
+ .fzf-left-content-wrapper {
107
+ .fzf-content-inner {
108
+ padding: 70px 0;
109
+
110
+ h1 {
111
+ font-size: 200px;
112
+ }
113
+ }
114
+ }
115
+ }
116
+ }
117
+
118
+ /****************************************************************
119
+ Tablet Between 769px and 1023px
120
+ **************************************************************** */
121
+ @media (min-width: 769px) and (max-width: 1023px) {
122
+ .fzf-wrapper {
123
+ .fzf-left-content-wrapper {
124
+ .fzf-content-inner {
125
+ padding: 70px 0;
126
+
127
+ h1 {
128
+ font-size: 200px;
129
+ }
130
+ }
131
+ }
132
+ }
133
+ }
134
+
135
+ /****************************************************************
136
+ Mobile Up to 768px.
137
+ **************************************************************** */
138
+ @media only screen and (min-width: 100px) and (max-width: 768px) {
139
+ .fzf-wrapper {
140
+ .fzf-left-content-wrapper {
141
+ .fzf-content-inner {
142
+ padding: 60px 0;
143
+
144
+ h1 {
145
+ font-size: 150px;
146
+ margin-bottom: 10px;
147
+ }
148
+
149
+ h2 {
150
+ font-size: 30px;
151
+ }
152
+ }
153
+ }
154
+ }
155
+ }
156
+
157
+ /*=================================================================================================
158
+ Responsive code end
159
+ =================================================================================================*/