blue-web 1.15.0 → 1.16.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,5 +1,5 @@
1
1
  /*!
2
- * Blue Web v1.15.0 (https://bruegmann.github.io/blue-web)
2
+ * Blue Web v1.16.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
 
@@ -15,19 +15,28 @@
15
15
 
16
16
  @import "./styles/bootstrap";
17
17
 
18
- // Per CSS-Variablen überschreibbar machen, da es von Bootstrap aus noch nicht möglich ist.
19
- // Bei neuer Bootstrap-Version prüfen, ob es noch nötig ist.
18
+ // Make it overridable via CSS variables, as it is not yet possible in Bootstrap.
19
+ // Check with a newer Bootstrap version to see if it is still necessary.
20
20
  .form-check-input:checked {
21
21
  background-color: var(--bs-primary, #{$form-check-input-checked-bg-color});
22
22
  border-color: var(--bs-primary, #{$form-check-input-checked-border-color});
23
23
  }
24
24
 
25
+ // Resets cursor from Bootstrap' _reboot.scss based on option.
26
+ @if ($enable-button-pointers: false) {
27
+ summary,
28
+ [role="button"] {
29
+ cursor: unset;
30
+ }
31
+ }
32
+
25
33
  @import "./styles/text-icons";
26
34
  @import "./styles/general";
35
+ @import "./styles/utils";
27
36
  @import "./styles/status";
28
37
  @import "./styles/menu-item";
29
38
  @import "./styles/page-header";
30
- @import "./styles/search";
39
+ @import "./styles/input-group";
31
40
  @import "./styles/action-menu";
32
41
  @import "./styles/caret";
33
42
  @import "./styles/tooltips";
@@ -41,6 +50,7 @@
41
50
  @import "./styles/collapse";
42
51
  @import "./styles/actions";
43
52
  @import "./styles/anchor";
53
+ @import "./styles/scrollspy";
44
54
 
45
55
  @import "./styles/devexpress";
46
56
  @import "./styles/inter";
@@ -41,3 +41,5 @@ $link-hover-decoration: underline !default;
41
41
  // In a future Bootstrap release, this might not be necessary anymore.
42
42
  $focus-ring-color: #{rgba(var(--bs-primary-rgb), 25%)} !default;
43
43
  $input-focus-border-color: #{rgba(var(--bs-primary-rgb), 50%)} !default;
44
+
45
+ $enable-button-pointers: false !default;
@@ -60,7 +60,8 @@
60
60
  .blue-collapse-group {
61
61
  display: grid;
62
62
  grid-template-rows: auto;
63
- grid-template-columns: 1fr;
63
+ grid-template-columns: minmax(0, 1fr);
64
+ max-width: 100%;
64
65
 
65
66
  & > details {
66
67
  display: contents;
@@ -23,6 +23,10 @@
23
23
  font-size: 1rem;
24
24
  }
25
25
 
26
+ .dxbl-pager-page-edit {
27
+ min-width: 2.5em;
28
+ }
29
+
26
30
  .dxbl-toolbar {
27
31
  --dxbl-toolbar-font-size: var(--bs-body-font-size) !important;
28
32
  font-size: var(--dxbl-toolbar-font-size);
@@ -0,0 +1,29 @@
1
+ .blue-input-group {
2
+ border: $input-border-width solid $input-border-color;
3
+ border-radius: $input-border-radius;
4
+ background-color: $input-bg;
5
+
6
+ &.focus,
7
+ &:has(input:focus) {
8
+ box-shadow: $input-btn-focus-box-shadow;
9
+ border-color: $input-focus-border-color;
10
+
11
+ .input-group-text {
12
+ color: #{var(--bs-primary-text-emphasis)};
13
+ }
14
+ }
15
+
16
+ .input-group-text {
17
+ border-color: transparent;
18
+ background-color: transparent;
19
+ }
20
+
21
+ .form-control {
22
+ border: none;
23
+ background-color: transparent !important;
24
+
25
+ &:focus {
26
+ box-shadow: none;
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,71 @@
1
+ .blue-scrollspy {
2
+ --#{$prefix}nav-link-padding-x: #{$nav-link-padding-x * 0.5};
3
+ --#{$prefix}nav-link-padding-y: #{$nav-link-padding-y * 0.5};
4
+ @include rfs(0.875rem, --#{$prefix}nav-link-font-size);
5
+ --#{$prefix}nav-link-font-weight: #{$nav-link-font-weight};
6
+ --#{$prefix}nav-link-color: #{$nav-link-color};
7
+ --#{$prefix}nav-link-hover-color: #{$nav-link-hover-color};
8
+ --#{$prefix}nav-link-disabled-color: #{$nav-link-disabled-color};
9
+
10
+ --#{$prefix}nav-tabs-border-width: #{$nav-tabs-border-width};
11
+ --#{$prefix}nav-tabs-border-color: #{$nav-tabs-border-color};
12
+ --#{$prefix}nav-tabs-border-radius: #{$nav-tabs-border-radius};
13
+ --#{$prefix}nav-tabs-link-hover-border-color: #{$nav-tabs-link-hover-border-color};
14
+ --#{$prefix}nav-tabs-link-active-color: #{$nav-tabs-link-active-color};
15
+ --#{$prefix}nav-tabs-link-active-bg: #{$nav-tabs-link-active-bg};
16
+ --#{$prefix}nav-tabs-link-active-border-color: #{$nav-tabs-link-active-border-color};
17
+
18
+ @media (prefers-reduced-motion: no-preference) {
19
+ scroll-behavior: smooth;
20
+ }
21
+
22
+ overflow-y: auto;
23
+ overscroll-behavior-y: contain;
24
+ scroll-snap-type: y mandatory;
25
+
26
+ scroll-marker-group: before;
27
+
28
+ &::scroll-marker-group {
29
+ display: flex;
30
+ min-height: calc(
31
+ (var(--#{$prefix}nav-link-padding-y) + var(--#{$prefix}nav-tabs-border-width)) * 2 +
32
+ (var(--#{$prefix}nav-link-font-size) * var(--#{$prefix}body-line-height))
33
+ );
34
+ margin-bottom: 0.25rem;
35
+ }
36
+
37
+ & > section {
38
+ &::scroll-marker {
39
+ content: attr(aria-label);
40
+
41
+ font-size: var(--#{$prefix}nav-link-font-size);
42
+ box-sizing: border-box;
43
+ text-decoration: none;
44
+
45
+ padding: var(--#{$prefix}nav-link-padding-y) var(--#{$prefix}nav-link-padding-x);
46
+ border: var(--#{$prefix}nav-tabs-border-width) solid transparent;
47
+
48
+ border-radius: var(--#{$prefix}nav-tabs-border-radius);
49
+
50
+ &:is(:hover, :focus) {
51
+ border-color: var(--#{$prefix}nav-tabs-link-hover-border-color);
52
+ }
53
+
54
+ &:target-current,
55
+ &:is(:active) {
56
+ color: var(--#{$prefix}nav-tabs-link-active-color);
57
+ background-color: var(--#{$prefix}nav-tabs-link-active-bg);
58
+ border-color: var(--#{$prefix}border-color);
59
+ }
60
+ }
61
+ }
62
+ }
63
+
64
+ .blue-scrollspy-after {
65
+ scroll-marker-group: after;
66
+
67
+ &::scroll-marker-group {
68
+ margin-bottom: 0;
69
+ margin-top: 0.25rem;
70
+ }
71
+ }
@@ -12,10 +12,13 @@
12
12
 
13
13
  position: relative;
14
14
  order: 0;
15
- cursor: pointer;
16
15
  user-select: none;
17
16
  -webkit-appearance: none;
18
17
  appearance: none;
18
+
19
+ @if ($enable-button-pointers) {
20
+ cursor: pointer;
21
+ }
19
22
  }
20
23
 
21
24
  .blue-tab::before {
@@ -0,0 +1,6 @@
1
+ // Sets `margin: 0` to last child.
2
+ // Useful for creating a gap between items together with `mb-3`.
3
+ // Inspired by Tailwind CSS class `last:m-0`.
4
+ .m-last-0:last-child {
5
+ margin: 0 !important;
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blue-web",
3
- "version": "1.15.0",
3
+ "version": "1.16.0",
4
4
  "description": "UI components built on top of Bootstrap 5",
5
5
  "license": "LGPL-3.0-or-later",
6
6
  "type": "module",
@@ -36,8 +36,8 @@
36
36
  "bootstrap": "~5.3.6"
37
37
  },
38
38
  "devDependencies": {
39
- "@astrojs/mdx": "^4.2.3",
40
- "@astrojs/react": "^4.2.3",
39
+ "@astrojs/mdx": "^4.3.0",
40
+ "@astrojs/react": "^4.3.0",
41
41
  "@babel/cli": "^7.10.4",
42
42
  "@babel/preset-env": "^7.10.4",
43
43
  "@babel/preset-typescript": "^7.9.0",
@@ -46,7 +46,7 @@
46
46
  "@types/react": "^19.0.8",
47
47
  "@types/react-dom": "^19.0.3",
48
48
  "@types/react-syntax-highlighter": "^13.5.0",
49
- "astro": "^5.6.1",
49
+ "astro": "^5.10.2",
50
50
  "autoprefixer": "^10.3.6",
51
51
  "babel-loader": "^8.4.1",
52
52
  "blue-react": "^10.1.1",
@@ -1,66 +0,0 @@
1
- .blue-search {
2
- display: flex;
3
- align-items: center;
4
- border: $input-border-width solid $input-border-color;
5
- border-radius: $input-border-radius;
6
- background-color: $input-bg;
7
-
8
- &.blue-search-body {
9
- border: 1px solid $input-border-color;
10
-
11
- .blue-search-input-group {
12
- display: flex;
13
- }
14
-
15
- &.focus {
16
- box-shadow: $input-btn-focus-box-shadow;
17
- }
18
- }
19
-
20
- &.focus {
21
- box-shadow: inset $input-btn-focus-box-shadow;
22
- }
23
- }
24
-
25
- .blue-sidebar .blue-search:not(.blue-search-body) {
26
- margin-left: map-get($spacers, 1);
27
- margin-right: map-get($spacers, 1);
28
- }
29
-
30
- .blue-search-input-group {
31
- display: none;
32
-
33
- .input-group-text {
34
- border-color: transparent;
35
- background-color: transparent;
36
- }
37
- }
38
-
39
- .blue-search-control {
40
- border: none;
41
- background-color: transparent !important;
42
-
43
- &:focus {
44
- box-shadow: none;
45
- }
46
- }
47
-
48
- .blue-search-reset-btn {
49
- color: rgba($input-color, 0.7);
50
-
51
- &:hover {
52
- color: $input-color;
53
- }
54
- }
55
-
56
- .blue-search.blue-search-sidebar {
57
- transition: opacity 0.2s ease-in-out;
58
-
59
- @media (prefers-reduced-motion) {
60
- transition: none;
61
- }
62
- }
63
-
64
- .blue-search.blue-search-sidebar:not(:hover):not(.focus) {
65
- opacity: 0.7;
66
- }