blue-web 1.6.4 → 1.8.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/dist/style.scss CHANGED
@@ -1,9 +1,10 @@
1
1
  /*!
2
- * Blue Web v1.6.4 (https://bruegmann.github.io/blue-web)
2
+ * Blue Web v1.8.0 (https://bruegmann.github.io/blue-web)
3
3
  * Licensed under GNU General Public License v3.0 (https://github.com/bruegmann/blue-web/blob/master/LICENSE).
4
4
  */
5
5
 
6
6
  @import "./styles/bootstrap-variables";
7
+
7
8
  @import "node_modules/bootstrap/scss/functions";
8
9
  @import "node_modules/bootstrap/scss/variables";
9
10
  @import "./styles/variables";
@@ -22,12 +23,9 @@
22
23
 
23
24
  @import "./styles/text-icons";
24
25
  @import "./styles/general";
25
- @import "./styles/router";
26
26
  @import "./styles/status";
27
- @import "./styles/layout";
28
- @import "./styles/grid-layout";
29
27
  @import "./styles/menu-item";
30
- @import "./styles/sidebar";
28
+ @import "./styles/page-header";
31
29
  @import "./styles/search";
32
30
  @import "./styles/action-menu";
33
31
  @import "./styles/caret";
@@ -1,6 +1,11 @@
1
1
  .blue-actions {
2
+ --max-width: calc(
3
+ var(--bs-btn-border-width, 1px) + var(--bs-btn-padding-x, 0.75rem) +
4
+ (var(--bs-btn-font-size, 1rem) * var(--bs-btn-line-height, 1.5)) + var(--bs-btn-padding-x, 0.75rem) +
5
+ var(--bs-btn-border-width, 1px)
6
+ );
7
+
2
8
  display: inline;
3
- position: absolute;
4
9
  left: 0;
5
10
  right: 0;
6
11
  top: 0;
@@ -9,20 +14,15 @@
9
14
  overflow: hidden;
10
15
 
11
16
  .blue-actions-menu {
12
- max-width: $normal-size;
17
+ max-width: var(--max-width);
18
+ & > .blue-menu-item-wrapper {
19
+ display: block;
20
+ position: relative;
21
+ }
13
22
  }
14
23
 
15
24
  &.open {
16
- left: -#{$normal-size};
17
- width: calc(100% + #{$normal-size});
18
- }
19
-
20
- .navbar-nav > li > a {
21
- animation: fadeInDown 0.5s;
22
-
23
- @media (prefers-reduced-motion) {
24
- animation-duration: 0s;
25
- }
25
+ background-color: var(--blue-menu-item-dropdown-bg);
26
26
  }
27
27
 
28
28
  &.none {
@@ -60,10 +60,8 @@
60
60
  }
61
61
  }
62
62
 
63
- .blue-actions-menu-toggle {
64
- & > span:first-child {
65
- transform: rotate(90deg);
66
- }
63
+ .blue-actions-menu-toggle > span:first-child {
64
+ transform: rotate(90deg);
67
65
  }
68
66
 
69
67
  .blue-actions-menu-item {
@@ -3,6 +3,15 @@ $light: #ecedf0 !default;
3
3
  // Components
4
4
  //
5
5
 
6
+ $font-size-base: 1rem !default;
7
+
8
+ $h1-font-size: $font-size-base * 2 !default;
9
+ $h2-font-size: $font-size-base * 1.5 !default;
10
+ $h3-font-size: $font-size-base * 1.25 !default;
11
+ $h4-font-size: $font-size-base * 1.125 !default;
12
+ $h5-font-size: $font-size-base * 1.1 !default;
13
+ $h6-font-size: $font-size-base !default;
14
+
6
15
  $border-radius: 0.5rem !default;
7
16
  $border-radius-lg: 0.7rem !default;
8
17
  $border-radius-sm: 0.3rem !default;
@@ -1,10 +1,3 @@
1
- @include blue-custom-scrollbar(
2
- transparent,
3
- rgba(var(--blue-scrollbar-thumb-color-rgb), 0.5),
4
- rgba(var(--blue-scrollbar-thumb-color-rgb), 0.6),
5
- rgba(var(--blue-scrollbar-thumb-color-rgb), 0.7)
6
- );
7
-
8
1
  * {
9
2
  scrollbar-width: thin;
10
3
  }
@@ -1,3 +1,226 @@
1
+ @keyframes blue-menu-item-indicator-in-from-side {
2
+ from {
3
+ transform: translateX(-100%);
4
+ }
5
+ to {
6
+ transform: translateX(1);
7
+ }
8
+ }
9
+
10
+ @keyframes blue-menu-item-indicator-in-from-below {
11
+ from {
12
+ transform: translateY(100%);
13
+ }
14
+ to {
15
+ transform: translateY(1);
16
+ }
17
+ }
18
+
19
+ .blue-menu-item {
20
+ transition: width 0.5s, background-color 0.3s, color 0.15s, box-shadow 0.3s, opacity 0.3s !important;
21
+
22
+ @media (prefers-reduced-motion) {
23
+ transition: none !important;
24
+ }
25
+
26
+ border: none;
27
+
28
+ &:focus {
29
+ box-shadow: none;
30
+ }
31
+
32
+ &:focus-visible {
33
+ &,
34
+ &.active {
35
+ box-shadow: inset 0 0 0.25rem;
36
+ }
37
+ }
38
+ }
39
+
40
+ .blue-menu-item-icon {
41
+ display: inline-block;
42
+
43
+ & > * {
44
+ display: block;
45
+ width: 1.5rem;
46
+ }
47
+ }
48
+
49
+ .blue-menu-item-icon.iconForActive {
50
+ display: none;
51
+ }
52
+
53
+ .blue-menu-item.active {
54
+ .blue-menu-item-icon.hasIconForActive {
55
+ display: none;
56
+ }
57
+ .blue-menu-item-icon.iconForActive {
58
+ display: inline-block;
59
+ }
60
+ }
61
+
62
+ .blue-menu-item-dropdown {
63
+ margin-left: 1rem;
64
+ animation: blue-menu-item-dropdown 0.15s;
65
+
66
+ @media (prefers-reduced-motion) {
67
+ animation-duration: 0s;
68
+ }
69
+
70
+ position: relative;
71
+
72
+ &::before {
73
+ content: "";
74
+ position: absolute;
75
+ top: 0.125rem;
76
+ right: 0.125rem;
77
+ bottom: 0.125rem;
78
+ left: 0.125rem;
79
+ border-radius: $border-radius;
80
+ box-shadow: $box-shadow;
81
+ border: 1px solid color-mix(in srgb, currentColor 15%, transparent);
82
+ background-color: var(--blue-menu-item-dropdown-bg);
83
+ }
84
+ }
85
+
86
+ .blue-sidebar .blue-menu-item-dropdown {
87
+ --blue-sidebar-bg: var(--blue-sidebar-depth-1-bg, #{$sidebar-deep-bg});
88
+
89
+ &::before {
90
+ background-color: var(--blue-sidebar-bg);
91
+ box-shadow: 0 0.5rem 1rem $black;
92
+ opacity: 0.15;
93
+ border-color: currentColor;
94
+ }
95
+
96
+ .blue-menu-item-dropdown {
97
+ --blue-sidebar-bg: var(--blue-sidebar-depth-2-bg, #{darken($sidebar-deep-bg, 4%)});
98
+
99
+ .blue-menu-item-dropdown {
100
+ --blue-sidebar-bg: var(--blue-sidebar-depth-3-bg, #{darken($sidebar-deep-bg, 8%)});
101
+
102
+ .blue-menu-item-dropdown {
103
+ --blue-sidebar-bg: var(--blue-sidebar-depth-4-bg, #{darken($sidebar-deep-bg, 12%)});
104
+
105
+ .blue-menu-item-dropdown {
106
+ --blue-sidebar-bg: var(--blue-sidebar-depth-5-bg, #{darken($sidebar-deep-bg, 16%)});
107
+
108
+ .blue-menu-item-dropdown {
109
+ --blue-sidebar-bg: var(--blue-sidebar-depth-6-bg, #{darken($sidebar-deep-bg, 20%)});
110
+ }
111
+ }
112
+ }
113
+ }
114
+ }
115
+ }
116
+
117
+ .blue-header .blue-menu-item-dropdown {
118
+ --blue-sidebar-bg: #{$header-deep-bg};
119
+
120
+ &::before {
121
+ background-color: var(--blue-header-bg);
122
+ }
123
+
124
+ .blue-menu-item-dropdown {
125
+ --blue-sidebar-bg: #{darken($header-deep-bg, 4%)};
126
+
127
+ .blue-menu-item-dropdown {
128
+ --blue-sidebar-bg: #{darken($header-deep-bg, 8%)};
129
+
130
+ .blue-menu-item-dropdown {
131
+ --blue-sidebar-bg: #{darken($header-deep-bg, 12%)};
132
+
133
+ .blue-menu-item-dropdown {
134
+ --blue-sidebar-bg: #{darken($header-deep-bg, 16%)};
135
+
136
+ .blue-menu-item-dropdown {
137
+ --blue-sidebar-bg: #{darken($header-deep-bg, 20%)};
138
+ }
139
+ }
140
+ }
141
+ }
142
+ }
143
+ }
144
+
145
+ .blue-menu-item-dropdown-caret.blue-caret {
146
+ display: none;
147
+ position: absolute;
148
+ right: 1.5rem;
149
+ top: 50%;
150
+ transform: translateY(-50%);
151
+ align-items: center;
152
+ }
153
+
154
+ .blue-menu-item {
155
+ color: inherit;
156
+ width: auto;
157
+ height: $normal-size;
158
+ font-size: $bla-btn-font-size;
159
+ display: flex;
160
+ align-items: center;
161
+ border-color: transparent;
162
+ @include slide-transition();
163
+
164
+ &::before {
165
+ content: "";
166
+ position: absolute;
167
+ top: 0.125rem;
168
+ right: 0.125rem;
169
+ bottom: 0.125rem;
170
+ left: 0.125rem;
171
+ background-color: currentColor;
172
+ border-radius: $border-radius;
173
+ transform: scale(0.9);
174
+ opacity: 0;
175
+ transition: all 0.2s;
176
+
177
+ @media (prefers-reduced-motion) {
178
+ transition: none;
179
+ }
180
+ }
181
+
182
+ &[draggable] {
183
+ cursor: move;
184
+
185
+ &:active {
186
+ box-shadow: inset 0 0 0.25rem;
187
+ }
188
+ }
189
+
190
+ &:hover,
191
+ &:active,
192
+ &.highlighted {
193
+ color: inherit;
194
+ border-color: transparent;
195
+
196
+ &::before {
197
+ transform: scale(1);
198
+ opacity: 0.25;
199
+ }
200
+ }
201
+
202
+ &.highlighted {
203
+ &::before {
204
+ opacity: 0.16;
205
+ }
206
+ }
207
+
208
+ &:hover,
209
+ &:active {
210
+ &::before {
211
+ opacity: 0.25;
212
+ }
213
+ }
214
+
215
+ &.active::after {
216
+ @include blue-menu-item-indicator();
217
+ }
218
+
219
+ & > * + .blue-menu-item-label {
220
+ margin-left: 0.5rem;
221
+ }
222
+ }
223
+
1
224
  .blue-menu-item-wrapper {
2
225
  display: contents;
3
226
  }
@@ -1,6 +1,5 @@
1
1
  @import "./mixins/misc";
2
2
  @import "./mixins/menu-item";
3
- @import "./mixins/sidebar";
4
3
  @import "./mixins/action-menu";
5
4
  @import "./mixins/switch";
6
5
  @import "./mixins/custom-property";
@@ -0,0 +1,63 @@
1
+ .blue-header {
2
+ @include header-bg();
3
+ color: var(--blue-header-color);
4
+ }
5
+
6
+ .blue-header {
7
+ height: $normal-size;
8
+ position: fixed;
9
+ top: 0;
10
+ left: $normal-size;
11
+ right: 0;
12
+ z-index: 4;
13
+
14
+ @media screen and (min-width: 768px) {
15
+ right: $scrollbar-size;
16
+ }
17
+
18
+ .navbar-nav {
19
+ margin: 0;
20
+
21
+ > li {
22
+ float: left;
23
+
24
+ > a {
25
+ background-color: transparent;
26
+ color: var(--blue-header-color);
27
+ padding: $bla-header-nav-padding;
28
+
29
+ &:hover,
30
+ &:focus {
31
+ background-color: $bla-button-bg-hover;
32
+ }
33
+ }
34
+ }
35
+ }
36
+
37
+ .navbar-left {
38
+ float: left !important;
39
+ }
40
+
41
+ .navbar-right {
42
+ float: right !important;
43
+ }
44
+
45
+ .blue-search {
46
+ width: 16rem;
47
+ }
48
+ }
49
+
50
+ .blue-header-title {
51
+ a {
52
+ color: inherit;
53
+
54
+ &:focus {
55
+ text-decoration: none;
56
+ }
57
+ }
58
+ }
59
+
60
+ .blue-header-title-image {
61
+ width: 2rem;
62
+ height: 2rem;
63
+ }
@@ -15,8 +15,6 @@
15
15
  }
16
16
 
17
17
  .blue-status-alert {
18
- @extend .blue-normal-scrollbar;
19
-
20
18
  &:after {
21
19
  content: "";
22
20
  display: block;
@@ -30,7 +30,11 @@ $scrollbar-thumb-color: white !default;
30
30
  $scrollbar-thumb-color-rgb: red($scrollbar-thumb-color), green($scrollbar-thumb-color), blue($scrollbar-thumb-color) !default;
31
31
 
32
32
  // Default size for many components, like sidebar menu items.
33
- $normal-size: 3rem !default;
33
+ $normal-size: calc(
34
+ var(--bs-btn-border-width, 1px) + var(--bs-btn-padding-y, 0.375rem) +
35
+ (var(--bs-btn-font-size, 1rem) * var(--bs-btn-line-height, 1.5)) + var(--bs-btn-padding-y, 0.375rem) +
36
+ var(--bs-btn-border-width, 1px)
37
+ ) !default;
34
38
 
35
39
  // Height of actions menu when it is expanded, like on mobile devices.
36
40
  $actions-height: 7.5rem !default;
@@ -129,4 +133,5 @@ $sidebar-expanded-breakpoint: 1400px !default;
129
133
  --blue-header-color: #{$header-color};
130
134
  --blue-action-link-bg-color: var(--blue-theme);
131
135
  --blue-menu-item-indicator-bg: #{$sidebar-indicator-color};
136
+ --blue-menu-item-height: #{$normal-size};
132
137
  }
@@ -8,10 +8,9 @@
8
8
  }
9
9
 
10
10
  @mixin actions($breakpoint) {
11
- @media screen and (max-width: #{$breakpoint + 1px}) {
11
+ @media (max-width: #{$breakpoint + 1px}) {
12
12
  &.open {
13
13
  display: block;
14
- background-color: var(--blue-header-depth-1-bg, #{darken($theme, 30%)});
15
14
  width: auto;
16
15
  position: absolute;
17
16
  z-index: 1;
@@ -28,25 +27,12 @@
28
27
 
29
28
  @include show-action-menu-again();
30
29
 
31
- .navbar-nav {
32
- display: flex;
33
- flex-wrap: wrap;
34
- justify-content: center;
35
- flex-direction: column;
36
-
37
- > li {
38
- text-align: center;
39
- height: $actions-height;
40
- display: flex;
41
- align-items: center;
42
- }
43
- }
44
-
45
30
  .blue-actions-menu-item:not(.blue-actions-menu-toggle) {
46
31
  display: flex;
47
32
  }
48
33
 
49
34
  .blue-actions-menu {
35
+ flex-direction: column;
50
36
  .blue-menu-item-dropdown {
51
37
  --blue-sidebar-bg: #{darken($theme, 34%)};
52
38
  }
@@ -58,7 +44,7 @@
58
44
  }
59
45
  }
60
46
 
61
- @media screen and (min-width: $breakpoint) {
47
+ @media (min-width: $breakpoint) {
62
48
  @include show-action-menu-again();
63
49
 
64
50
  .blue-actions-menu .blue-actions-label {
@@ -68,5 +54,11 @@
68
54
  .blue-actions-menu-toggle {
69
55
  display: none;
70
56
  }
57
+
58
+ .blue-actions-menu > .blue-menu-item-wrapper > .blue-menu-item-dropdown,
59
+ .blue-actions-menu > .blue-menu-item-wrapper > * > .blue-menu-item-dropdown {
60
+ position: absolute;
61
+ right: 0;
62
+ }
71
63
  }
72
64
  }
@@ -1,40 +1,3 @@
1
- /**
2
- @deprecated Will be removed in a future version. Please use `blue-custom-scrollbar` instead!
3
- */
4
- @mixin custom-scrollbar($thumb-color, $bg-color, $track-border-radius: 0) {
5
- @include blue-custom-scrollbar(
6
- $bg-color,
7
- rgba($thumb-color, 0.5),
8
- rgba($thumb-color, 0.6),
9
- rgba($thumb-color, 0.7),
10
- $track-border-radius
11
- );
12
- }
13
-
14
- @mixin blue-custom-scrollbar(
15
- $bg-color,
16
- $thumb-color,
17
- $thumb-color-hover: $thumb-color,
18
- $thumb-color-focus: $thumb-color,
19
- $track-border-radius: 0
20
- ) {
21
- ::-webkit-scrollbar-thumb {
22
- background-color: $thumb-color;
23
- box-shadow: inset 1px 1px 0 rgba(white, 0.2), inset 0 -1px 0 rgba(white, 0.17);
24
- }
25
- ::-webkit-scrollbar-thumb:hover {
26
- background-color: $thumb-color-hover;
27
- }
28
- ::-webkit-scrollbar-thumb:active {
29
- background-color: $thumb-color-focus;
30
- }
31
-
32
- ::-webkit-scrollbar-track {
33
- background-color: $bg-color;
34
- border-radius: $track-border-radius;
35
- }
36
- }
37
-
38
1
  @mixin slide-transition() {
39
2
  $slide-transition: width 0.5s;
40
3
  transition: $slide-transition;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blue-web",
3
- "version": "1.6.4",
3
+ "version": "1.8.0",
4
4
  "description": "UI components built on top of Bootstrap 5",
5
5
  "license": "LGPL-3.0-or-later",
6
6
  "homepage": "https://bruegmann.github.io/blue-web/v1",
@@ -12,8 +12,8 @@
12
12
  "url": "https://github.com/bruegmann/blue-react/issues"
13
13
  },
14
14
  "scripts": {
15
- "start": "react-scripts start",
16
- "build-docs": "react-scripts build && node indexCssSections.js && node indexJsSections.js",
15
+ "start": "craco start",
16
+ "build-docs": "craco build && node indexCssSections.js && node indexJsSections.js",
17
17
  "build-types": "tsc --declaration --emitDeclarationOnly --declarationDir ./dist/js --noEmit false --project tsconfig.build.json",
18
18
  "build": "babel ./src/js --out-dir ./dist/js --extensions \".tsx,.js,.ts\"",
19
19
  "build-bundles": "webpack",
@@ -22,8 +22,8 @@
22
22
  "build-neu-css-legacy": "node-sass ./dist/neu.scss ./dist/neu.css && npx postcss ./dist/neu.css --use autoprefixer -r && npx postcss ./dist/neu.css --use postcss-minify -o ./dist/neu.min.css",
23
23
  "build-neu-css": "sass --load-path=. ./dist/neu.scss:./dist/neu.css && npx postcss ./dist/neu.css --use autoprefixer -r && npx postcss ./dist/neu.css --use postcss-minify -o ./dist/neu.min.css",
24
24
  "build-release": "npm run build-types && npm run build && npm run build-bundles && npm run build-css",
25
- "test": "react-scripts test",
26
- "eject": "react-scripts eject",
25
+ "test": "craco test",
26
+ "eject": "craco eject",
27
27
  "predeploy": "npm run build-docs",
28
28
  "deploy": "gh-pages --dist build --dest v1",
29
29
  "prepublishOnly": "npm i && npm run build-release",
@@ -40,6 +40,7 @@
40
40
  "@babel/preset-env": "^7.10.4",
41
41
  "@babel/preset-react": "^7.10.4",
42
42
  "@babel/preset-typescript": "^7.9.0",
43
+ "@craco/craco": "^7.1.0",
43
44
  "@testing-library/jest-dom": "^4.2.4",
44
45
  "@testing-library/react": "^9.5.0",
45
46
  "@testing-library/user-event": "^7.2.1",
@@ -51,7 +52,7 @@
51
52
  "@types/react-router-dom": "^5.3.3",
52
53
  "@types/react-syntax-highlighter": "^13.5.0",
53
54
  "autoprefixer": "^10.3.6",
54
- "blue-react": "^9.9.3",
55
+ "blue-react": "file:../blue-react/blue-react-10.0.0-rc5.tgz",
55
56
  "gh-pages": "^3.1.0",
56
57
  "license-report": "^6.2.0",
57
58
  "lint-staged": "^11.1.2",