@wwtdev/bsds-css 1.7.0 → 1.8.1

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 (53) hide show
  1. package/dist/components/_accordions.scss +3 -3
  2. package/dist/components/_badge.scss +13 -11
  3. package/dist/components/_banner.scss +2 -10
  4. package/dist/components/_buttons.scss +11 -5
  5. package/dist/components/_circle-buttons.scss +6 -6
  6. package/dist/components/_dropdown-options.scss +5 -5
  7. package/dist/components/_dropdown.scss +1 -1
  8. package/dist/components/_form-booleans.scss +8 -8
  9. package/dist/components/_form-character-count.scss +2 -2
  10. package/dist/components/_form-elements.scss +4 -4
  11. package/dist/components/_form-hints.scss +3 -2
  12. package/dist/components/_form-input-composite.scss +1 -1
  13. package/dist/components/_form-labels.scss +2 -2
  14. package/dist/components/_form-switches.scss +6 -6
  15. package/dist/components/_form-text-fields.scss +12 -10
  16. package/dist/components/_loader.scss +89 -0
  17. package/dist/components/_modal.scss +36 -0
  18. package/dist/components/_overlay.scss +22 -0
  19. package/dist/components/_pagination.scss +84 -0
  20. package/dist/components/_pills.scss +9 -11
  21. package/dist/components/_profile-layout.scss +1 -5
  22. package/dist/components/_tables.scss +1 -1
  23. package/dist/components/_toast.scss +3 -8
  24. package/dist/components/_tooltip.scss +2 -2
  25. package/dist/components/accordions.css +3 -3
  26. package/dist/components/badge.css +12 -10
  27. package/dist/components/banner.css +2 -10
  28. package/dist/components/buttons.css +11 -5
  29. package/dist/components/circle-buttons.css +6 -6
  30. package/dist/components/dropdown-options.css +5 -5
  31. package/dist/components/dropdown.css +1 -1
  32. package/dist/components/form-booleans.css +8 -8
  33. package/dist/components/form-character-count.css +2 -2
  34. package/dist/components/form-elements.css +4 -4
  35. package/dist/components/form-hints.css +3 -2
  36. package/dist/components/form-input-composite.css +1 -1
  37. package/dist/components/form-labels.css +2 -2
  38. package/dist/components/form-switches.css +6 -6
  39. package/dist/components/form-text-fields.css +12 -10
  40. package/dist/components/loader.css +85 -0
  41. package/dist/components/modal.css +32 -0
  42. package/dist/components/overlay.css +18 -0
  43. package/dist/components/pagination.css +80 -0
  44. package/dist/components/pills.css +9 -11
  45. package/dist/components/profile-layout.css +1 -5
  46. package/dist/components/tables.css +1 -1
  47. package/dist/components/toast.css +3 -8
  48. package/dist/components/tooltip.css +2 -2
  49. package/dist/wwt-bsds-preset.js +5 -2
  50. package/dist/wwt-bsds-wc-base.css +110 -15
  51. package/dist/wwt-bsds.css +398 -113
  52. package/dist/wwt-bsds.min.css +1 -1
  53. package/package.json +1 -1
@@ -1,11 +1,11 @@
1
1
  @mixin accordions() {
2
2
  .bs-accordion {
3
3
  --accordion-link-color: var(--bs-purple-400);
4
- --accordion-link-outline-color: var(--bs-blue-400);
4
+ --accordion-link-outline-color: var(--bs-blue-base);
5
5
  --accordion-outline-color: transparent;
6
6
  --accordion-padding-inline: 0;
7
7
  --accordion-text-size: var(--bs-text-sm);
8
- border-block: 1px solid var(--bs-border);
8
+ border-block: 1px solid var(--bs-border-base);
9
9
  display: block;
10
10
  }
11
11
 
@@ -38,7 +38,7 @@
38
38
  }
39
39
 
40
40
  .bs-accordion :where(header button:focus-visible) {
41
- --accordion-outline-color: var(--bs-blue-400);
41
+ --accordion-outline-color: var(--bs-blue-base);
42
42
  }
43
43
 
44
44
  .bs-accordion :where(header button) > * {
@@ -1,8 +1,13 @@
1
1
  @mixin badge() {
2
- .bs-badge[data-position^='left']::before,
2
+ .bs-badge {
3
+ --badge-bg: var(--bs-red-base);
4
+ --badge-text: var(--bs-white);
5
+ }
6
+
7
+ .bs-badge[data-position^='left']::before,
3
8
  .bs-badge:where(:not([data-position^='left']))::after {
4
9
  align-items: center;
5
- background: var(--bs-red-500);
10
+ background: var(--badge-bg);
6
11
  border-radius: 0.5rem;
7
12
  content: '';
8
13
  display: inline-flex;
@@ -24,7 +29,7 @@
24
29
 
25
30
  .bs-badge[data-count]:where([data-position^='left'])::before,
26
31
  .bs-badge[data-count]:where(:not([data-position^='left']))::after {
27
- color: white;
32
+ color: var(--badge-text);
28
33
  content: attr(data-count);
29
34
  min-height: 1rem;
30
35
  min-width: 1rem;
@@ -52,15 +57,12 @@
52
57
  display: inline-flex;
53
58
  }
54
59
 
55
- .bs-badge[data-badge-color^='blue']::before,
56
- .bs-badge[data-badge-color^='blue']::after {
57
- background: var(--bs-blue-500);
60
+ .bs-badge[data-badge-color^='blue'] {
61
+ --badge-bg: var(--bs-blue-base);
58
62
  }
59
-
60
- .bs-badge[data-badge-color^='white']::before,
61
- .bs-badge[data-badge-color^='white']::after {
62
- background: white;
63
- color: var(--badge-text, var(--bs-black));
63
+ .bs-badge[data-badge-color^='white'] {
64
+ --badge-bg: var(--bs-white);
65
+ --badge-text: var(--bs-black);
64
66
  }
65
67
 
66
68
  }
@@ -1,6 +1,6 @@
1
1
  @mixin banner() {
2
2
  .bs-banner {
3
- background-color: var(--bs-bg-invert-subtle);
3
+ background-color: var(--bs-royal-400);
4
4
  color: var(--bs-gray-100);
5
5
  display: flex;
6
6
  justify-content: center;
@@ -14,10 +14,6 @@
14
14
  display: none;
15
15
  }
16
16
 
17
- :where(.dark) .bs-banner {
18
- color: var(--bs-black);
19
- }
20
-
21
17
  .bs-banner :where(.bs-banner-content) {
22
18
  align-items: center;
23
19
  display: flex;
@@ -38,14 +34,10 @@
38
34
  }
39
35
 
40
36
  .bs-banner :where(.bs-banner-content p a) {
41
- color: var(--bs-pink-200);
37
+ color: var(--bs-pink-light);
42
38
  text-decoration: none;
43
39
  }
44
40
 
45
- :where(.dark) .bs-banner :where(.bs-banner-content p a) {
46
- color: var(--bs-pink-500);
47
- }
48
-
49
41
  .bs-banner :where(.bs-banner-content p a:hover) {
50
42
  text-decoration: underline;
51
43
  }
@@ -1,8 +1,10 @@
1
1
  @mixin buttons() {
2
2
  .bs-button {
3
- --btn-main: var(--bs-blue-400);
4
- --btn-secondary: var(--bs-blue-300);
3
+ --btn-main: var(--bs-blue-base);
4
+ --btn-secondary: var(--bs-blue-medium);
5
5
  --btn-highlight: var(--bs-blue-100);
6
+ --btn-padding: var(--bs-space-1) var(--bs-space-4) calc(var(--bs-space-1) * 1.5);
7
+ --btn-focus-pseudo-width: calc(100% + 0.5rem);
6
8
  align-items: center;
7
9
  background-color: var(--btn-main);
8
10
  border: none;
@@ -15,7 +17,7 @@
15
17
  justify-content: center;
16
18
  line-height: 1.5;
17
19
  outline: 2px solid transparent;
18
- padding: var(--bs-space-1) var(--bs-space-4) calc(var(--bs-space-1) * 1.5);
20
+ padding: var(--btn-padding);
19
21
  position: relative;
20
22
  text-decoration: none;
21
23
  transition: all 100ms ease-in-out;
@@ -42,9 +44,11 @@
42
44
  content: '';
43
45
  height: calc(100% + 0.5rem);
44
46
  inset: -0.25rem;
47
+ left: auto;
45
48
  position: absolute;
49
+ right: auto;
46
50
  transition: border-color 0.125s ease-in-out;
47
- width: calc(100% + 0.5rem);
51
+ width: var(--btn-focus-pseudo-width);
48
52
  }
49
53
 
50
54
  .bs-button:focus::before {
@@ -116,6 +120,8 @@
116
120
 
117
121
  /* Text Button */
118
122
  .bs-button:where([data-text]) {
123
+ --btn-padding: 0 0;
124
+ --btn-focus-pseudo-width: calc(100% + 1.25rem); /* text btns don't have side padding, but we do want focus outline to look padded */
119
125
  background-color: transparent;
120
126
  color: var(--bs-blue-500);
121
127
  cursor: pointer;
@@ -124,7 +130,7 @@
124
130
  line-height: 150%;
125
131
  }
126
132
  .bs-button:where([data-text]):hover {
127
- color: var(--bs-blue-400);
133
+ color: var(--bs-blue-base);
128
134
  background-color: transparent;
129
135
  text-decoration: underline;
130
136
  }
@@ -1,8 +1,8 @@
1
1
  @mixin circle-buttons() {
2
2
  .bs-circle-button {
3
- --btn-main: var(--bs-blue-400);
4
- --btn-secondary: var(--bs-blue-300);
5
- --btn-highlight: var(--bs-blue-100);
3
+ --btn-main: var(--bs-blue-base);
4
+ --btn-secondary: var(--bs-blue-medium);
5
+ --btn-highlight: var(--bs-blue-lightest);
6
6
  --btn-border-color: transparent;
7
7
  --btn-border-radius: 50%;
8
8
  --btn-icon-bg-color: var(--btn-main);
@@ -124,12 +124,12 @@ a.bs-circle-button {
124
124
 
125
125
  /* Disabled State */
126
126
  .bs-circle-button:where(:disabled, [aria-disabled]:not([aria-disabled="false"])) /* for links as buttons */ {
127
- --btn-icon-stroke-color: var(--bs-gray-400);
128
- --btn-text-color: var(--bs-gray-400);
127
+ --btn-icon-stroke-color: var(--bs-ink-disabled);
128
+ --btn-text-color: var(--bs-ink-disabled);
129
129
  pointer-events: none;
130
130
  }
131
131
  .bs-circle-button:where(:disabled, [aria-disabled]:not([aria-disabled="false"])) :where(.bs-circle-button-icon) {
132
- background-color: var(--bs-gray-200);
132
+ background-color: var(--bs-bg-disabled);
133
133
  }
134
134
 
135
135
  }
@@ -54,9 +54,9 @@
54
54
  /* Hover or data-selected */
55
55
  .bs-dropdown-options :where(li:hover),
56
56
  .bs-dropdown-options :where(li[data-selected]) {
57
- background-color: var(--bs-bg-subtle);
58
- border-left: 4px solid var(--bs-blue-400);
59
- color: var(--bs-blue-400);
57
+ background-color: var(--bs-bg-medium);
58
+ border-left: 4px solid var(--bs-blue-base);
59
+ color: var(--bs-blue-base);
60
60
  outline: none;
61
61
  }
62
62
 
@@ -75,7 +75,7 @@
75
75
  .bs-dropdown-options :where(li[data-variant~="2-col"][data-variant~="description"]:hover :nth-child(3)),
76
76
  .bs-dropdown-options :where(li:not([data-variant~="2-col"])[data-variant~="description"][data-selected] :nth-child(2)),
77
77
  .bs-dropdown-options :where(li[data-variant~="2-col"][data-variant~="description"][data-selected] :nth-child(3)) {
78
- color: var(--bs-blue-400);
78
+ color: var(--bs-blue-base);
79
79
  }
80
80
 
81
81
  /* Hover or data-selected for negative + 2-col/description variants */
@@ -98,7 +98,7 @@
98
98
 
99
99
  /* List option keyboard navigation focus */
100
100
  .bs-dropdown-options :where(li:focus-visible) {
101
- --focus-border-color: var(--bs-blue-400);
101
+ --focus-border-color: var(--bs-blue-base);
102
102
  border: 2px solid var(--focus-border-color);
103
103
  outline: none;
104
104
  padding-left: 0.625rem;
@@ -7,7 +7,7 @@
7
7
 
8
8
  /* Content */
9
9
  .bs-dropdown {
10
- background-color: var(--bs-white);
10
+ background-color: var(--bs-bg-base-elevated);
11
11
  border-radius: 4px;
12
12
  bottom: auto;
13
13
  box-shadow: var(--bs-shadow-contentMedium);
@@ -55,7 +55,7 @@
55
55
  :where(input[type='checkbox'], input[type='radio']):focus-visible {
56
56
  box-shadow: inset 0 0 0 0.125rem var(--box-shadow),
57
57
  0 0 0 2px var(--offset-color, var(--bs-bg-base)),
58
- 0 0 0 4px var(--outline-color, var(--bs-blue-400));
58
+ 0 0 0 4px var(--outline-color, var(--bs-blue-base));
59
59
  outline: 2px solid transparent;
60
60
  }
61
61
 
@@ -70,7 +70,7 @@
70
70
  /* Checkbox's checkmark */
71
71
  input:where([type='checkbox'])::before {
72
72
  --filled-size: 1rem;
73
- --check-fill-color: var(--bs-blue-400);
73
+ --check-fill-color: var(--bs-blue-base);
74
74
 
75
75
  content: '';
76
76
  border-radius: 0.125rem;
@@ -105,7 +105,7 @@ input:where([type='checkbox']):where(:indeterminate)::after {
105
105
  /* Radio's dot */
106
106
  input:where([type='radio'])::before {
107
107
  --filled-size: 1rem;
108
- --radio-fill-color: var(--bs-blue-400);
108
+ --radio-fill-color: var(--bs-blue-base);
109
109
 
110
110
  background-color: var(--radio-fill-color);
111
111
  border-radius: 50%;
@@ -160,26 +160,26 @@ input:where([type='checkbox']:checked, [type='checkbox']:indeterminate, [type='r
160
160
  /* Disabled State */
161
161
 
162
162
  input:where([type='checkbox'], [type='radio']):disabled {
163
- --box-shadow: var(--bs-gray-400);
163
+ --box-shadow: var(--bs-bg-disabled);
164
164
  background-color: transparent;
165
165
  cursor: default;
166
166
  }
167
167
 
168
168
  input:where([type='checkbox']):checked:disabled::before,
169
169
  input:where([type='checkbox']):indeterminate:disabled::before {
170
- --check-fill-color: var(--bs-gray-400);
170
+ --check-fill-color: var(--bs-bg-disabled);
171
171
  }
172
172
 
173
173
  input:where([type='radio']):checked:disabled::before {
174
- --radio-fill-color: var(--bs-gray-400);
174
+ --radio-fill-color: var(--bs-bg-disabled);
175
175
  }
176
176
 
177
177
 
178
178
  /* Error state */
179
179
 
180
180
  input:where([type='checkbox'], [type='radio'])[data-error] {
181
- --box-shadow: var(--bs-red-500);
182
- --outline-color: var(--bs-red-200);
181
+ --box-shadow: var(--bs-red-base);
182
+ --outline-color: var(--bs-red-base);
183
183
  }
184
184
 
185
185
  }
@@ -10,11 +10,11 @@
10
10
  :where([disabled], [data-disabled]) + .bs-character-count,
11
11
  :where([disabled], [data-disabled]) .bs-character-count,
12
12
  .bs-character-count:where([data-disabled]) {
13
- color: var(--bs-gray-400);
13
+ color: var(--bs-ink-disabled);
14
14
  }
15
15
 
16
16
  .bs-character-count:where([data-error]) {
17
- color: var(--bs-red-400);
17
+ color: var(--bs-ink-red);
18
18
  }
19
19
 
20
20
  }
@@ -1,7 +1,7 @@
1
1
  @mixin form-elements() {
2
2
  /* Generally applicable (all input types) */
3
3
  :where([data-required]) {
4
- color: var(--bs-red-500);
4
+ color: var(--bs-ink-red);
5
5
  font-weight: var(--bs-font-bold, 600);
6
6
  }
7
7
 
@@ -10,15 +10,15 @@
10
10
  }
11
11
 
12
12
  :where(.box) :is(input, textarea, select):where(:focus-visible) {
13
- --offset-color: var(--bs-bg-subtle);
13
+ --offset-color: var(--bs-bg-medium);
14
14
  }
15
15
  :where(.box[data-invert]) :is(input, textarea, select):where(:focus-visible) {
16
- --offset-color: var(--bs-bg-invert);
16
+ --offset-color: var(--bs-bg-invert-base);
17
17
  }
18
18
 
19
19
  /* Errors and Messages */
20
20
  :is(input, select, textarea):where([data-error]) {
21
- --input-border: var(--bs-red-500);
21
+ --input-border: var(--bs-ink-red);
22
22
  }
23
23
 
24
24
  /* Fieldset */
@@ -1,7 +1,8 @@
1
1
  @mixin form-hints() {
2
2
  .bs-hint {
3
+ --hint-color: var(--bs-ink-light);
3
4
  min-width: 0;
4
- color: var(--bs-ink-light);
5
+ color: var(--hint-color);
5
6
  font-size: var(--bs-text-xs);
6
7
  padding: 0;
7
8
  margin: 0;
@@ -10,7 +11,7 @@
10
11
  }
11
12
 
12
13
  .bs-hint:where([data-error]) {
13
- color: var(--bs-red-400);
14
+ --hint-color: var(--bs-ink-red);
14
15
  }
15
16
 
16
17
  }
@@ -128,7 +128,7 @@ and issues with box-sizing
128
128
 
129
129
  /* -------- Focus styles -------- */
130
130
  .bs-input-addon {
131
- --focus-border: var(--bs-blue-400);
131
+ --focus-border: var(--bs-blue-base);
132
132
  }
133
133
 
134
134
  .bs-input-addon:where(:not([data-multifocus]):focus-within),
@@ -11,11 +11,11 @@
11
11
  }
12
12
 
13
13
  :where([data-required]) {
14
- color: var(--bs-red-500);
14
+ color: var(--bs-ink-red);
15
15
  }
16
16
 
17
17
  :where(label[data-disabled], [data-disabled] [data-required], [data-disabled] label) {
18
- --label-color: var(--bs-ink-light);
18
+ --label-color: var(--bs-ink-disabled);
19
19
  }
20
20
 
21
21
  }
@@ -46,7 +46,7 @@
46
46
 
47
47
  .bs-switch input:where(:checked) ~ span,
48
48
  .bs-switch:where([aria-pressed]):where(:not([aria-pressed="false"])) span {
49
- --switch-background: var(--bs-blue-400);
49
+ --switch-background: var(--bs-blue-base);
50
50
  }
51
51
 
52
52
  /* Toggle "ball" */
@@ -112,21 +112,21 @@
112
112
 
113
113
  .bs-switch :where(input:focus-visible) + span {
114
114
  box-shadow: 0 0 0 2px var(--offset-color, var(--bs-bg-base)),
115
- 0 0 0 4px var(--outline-color, var(--bs-blue-400));
115
+ 0 0 0 4px var(--outline-color, var(--bs-blue-base));
116
116
  outline: 2px solid transparent;
117
117
  }
118
118
  :where(.box) .bs-switch :where(input:focus-visible) + span {
119
- --offset-color: var(--bs-bg-subtle);
119
+ --offset-color: var(--bs-bg-medium);
120
120
  }
121
121
  :where(.box[data-invert]) .bs-switch :where(input:focus-visible) + span {
122
- --offset-color: var(--bs-bg-invert);
122
+ --offset-color: var(--bs-bg-invert-base);
123
123
  }
124
124
 
125
125
  /* Disabled state */
126
126
 
127
127
  .bs-switch:where([data-disabled]) {
128
- --ball-background: var(--bs-gray-400);
129
- --switch-background: var(--bs-gray-200);
128
+ --ball-background: var(--bs-ink-disabled);
129
+ --switch-background: var(--bs-bg-disabled);
130
130
  }
131
131
 
132
132
  .bs-switch input:where(:disabled) {
@@ -7,13 +7,15 @@
7
7
 
8
8
  input:where(:not([type='checkbox'], [type='radio'], [type='file'], [type='range'])),
9
9
  textarea, select {
10
+ --input-bg: var(--bs-bg-base);
11
+ --input-border: var(--bs-violet-medium);
10
12
  appearance: none;
11
- background-color: var(--input-bg, var(--bs-bg-base));
12
- border-color: var(--input-border, var(--bs-violet-300));
13
+ background-color: var(--input-bg);
14
+ border-color: var(--input-border);
13
15
  border-radius: 0.25rem;
14
16
  border-style: solid;
15
17
  border-width: var(--input-border-width, 1px);
16
- caret-color: var(--bs-blue-400);
18
+ caret-color: var(--bs-blue-base);
17
19
  color: var(--bs-ink-base);
18
20
  font-size: var(--bs-text-base);
19
21
  font-weight: 400;
@@ -36,26 +38,26 @@ textarea {
36
38
  }
37
39
 
38
40
  :is(input, textarea, select)::placeholder {
39
- color: var(--bs-violet-200);
41
+ color: var(--bs-violet-lightest);
40
42
  }
41
43
  :is(input, textarea, select):where(:focus-visible)::placeholder {
42
44
  opacity: 0;
43
45
  }
44
46
 
45
47
  :is(input:where(:not([type='checkbox'], [type='radio'])), textarea, select):where(:focus-visible) {
46
- --input-border: var(--bs-blue-400);
48
+ --input-border: var(--bs-blue-base);
47
49
  outline-width: 0px;
48
50
  }
49
51
 
50
52
  :is(input:where(:not([type='checkbox'],[type='radio'])), textarea, select):where(:disabled) {
51
- --input-border: var(--bs-gray-400);
52
- background-color: var(--bs-gray-200);
53
- color: var(--bs-gray-400);
53
+ --input-border: var(--bs-ink-disabled);
54
+ --input-bg: var(--bs-bg-disabled);
55
+ color: var(--bs-ink-disabled);
54
56
  }
55
57
 
56
58
  /* Errors and Messages */
57
59
  :is(input, select, textarea):where([data-error]) {
58
- --input-border: var(--bs-red-500);
60
+ --input-border: var(--bs-ink-red);
59
61
  }
60
62
 
61
63
  /*
@@ -75,7 +77,7 @@ see https://bugs.chromium.org/p/chromium/issues/detail?id=89530
75
77
 
76
78
  :is(input, textarea, select):disabled::placeholder,
77
79
  :is(input, textarea, select)[disabled]::placeholder {
78
- color: var(--bs-gray-400);
80
+ color: var(--bs-ink-disabled);
79
81
  opacity: 1;
80
82
  }
81
83
 
@@ -0,0 +1,89 @@
1
+ @mixin loader() {
2
+ .bs-loader {
3
+ --loader-dot-bg: var(--bs-blue-500); /* possibly add variants if requested */
4
+ --loader-dot-size: .75rem;
5
+ --loader-dot-top: 18px;
6
+ --loader-dot-top: calc(50% - var(--loader-dot-size)/2);
7
+ --loader-dot-translate: 1.75rem; /* i.e., calc(var(--loader-width)/2 - var(--loader-dot-size)/2); */
8
+ --loader-height: 3rem;
9
+ --loader-width: 4rem;
10
+ display: block;
11
+ height: var(--loader-height);
12
+ margin-inline-start: auto;
13
+ margin-inline-end: auto;
14
+ position: relative;
15
+ width: var(--loader-width);
16
+ }
17
+ .bs-loader:where([data-size="sm"]) {
18
+ --loader-dot-size: .5rem;
19
+ --loader-dot-top: 0;
20
+ --loader-dot-translate: 1.125rem;
21
+ --loader-height: .5rem;
22
+ --loader-width: 3rem;
23
+ }
24
+ .bs-loader:where([data-size="lg"]) {
25
+ --loader-dot-size: 1rem;
26
+ --loader-dot-translate: 2.375rem;
27
+ --loader-height: 4rem;
28
+ --loader-width: 6rem;
29
+ }
30
+
31
+ /* ----- loader dots ----- */
32
+ .bs-loader > :where(div) {
33
+ background-color: var(--loader-dot-bg);
34
+ border-radius: 50%;
35
+ height: var(--loader-dot-size);
36
+ position: absolute;
37
+ top: var(--loader-dot-top);
38
+ width: var(--loader-dot-size);
39
+ }
40
+
41
+ .bs-loader > :where(div) {
42
+ animation-timing-function: cubic-bezier(0, 1, 1, 0);
43
+ }
44
+ .bs-loader > :where(div:nth-child(1)) {
45
+ animation: loading-1 0.6s infinite;
46
+ left: 0%;
47
+ }
48
+ .bs-loader > :where(div:nth-child(2)) {
49
+ animation: loading-2 0.6s infinite;
50
+ left: 0%;
51
+ }
52
+ .bs-loader > :where(div:nth-child(3)) {
53
+ animation: loading-2 0.6s infinite;
54
+ left: 40%;
55
+ }
56
+ .bs-loader > :where(div:nth-child(4)) {
57
+ animation: loading-3 0.6s infinite;
58
+ left: 80%;
59
+ }
60
+
61
+ @keyframes loading-1 {
62
+ 0% {
63
+ transform: scale(0);
64
+ }
65
+ 100% {
66
+ transform: scale(1);
67
+ }
68
+ }
69
+
70
+ @keyframes loading-2 {
71
+ 0% {
72
+ transform: translate(0, 0);
73
+ }
74
+ 100% {
75
+ transform: translate(var(--loader-dot-translate), 0);
76
+ }
77
+ }
78
+
79
+ @keyframes loading-3 {
80
+ 0% {
81
+ transform: scale(1);
82
+ }
83
+ 100% {
84
+ transform: scale(0);
85
+ }
86
+ }
87
+
88
+ }
89
+
@@ -0,0 +1,36 @@
1
+ @mixin modal() {
2
+ .bs-modal {
3
+ background-color: var(--bs-bg-base-elevated);
4
+ border-radius: 4px;
5
+ box-shadow: var(--bs-shadow-contentHigh);
6
+ left: 1.5rem;
7
+ max-height: calc(100% - 3rem);
8
+ opacity: 0;
9
+ overflow: auto;
10
+ padding: 1.5rem;
11
+ position: fixed;
12
+ right: 1.5rem;
13
+ top: 50%;
14
+ transform: translateY(-50%);
15
+ transition-duration: 75ms;
16
+ transition-property: opacity;
17
+ transition-timing-function: ease-in-out;
18
+ z-index: 9999;
19
+ }
20
+
21
+ .bs-modal:where([data-shown]) {
22
+ opacity: 1;
23
+ }
24
+
25
+ @media (min-width: 752px) {
26
+ .bs-modal {
27
+ left: 50%;
28
+ margin: 0;
29
+ max-height: 40.625rem;
30
+ transform: translate(-50%, -50%);
31
+ width: 35rem;
32
+ }
33
+ }
34
+
35
+ }
36
+
@@ -0,0 +1,22 @@
1
+ @mixin overlay() {
2
+ .bs-overlay {
3
+ backdrop-filter: blur(4px);
4
+ background: rgba(29, 30, 72, 0.05);
5
+ bottom: 0;
6
+ left: 0;
7
+ opacity: 0;
8
+ position: fixed;
9
+ right: 0;
10
+ top: 0;
11
+ transition-duration: 75ms;
12
+ transition-property: opacity;
13
+ transition-timing-function: ease-in-out;
14
+ z-index: 9998;
15
+ }
16
+
17
+ .bs-overlay:where([data-shown]) {
18
+ opacity: 1;
19
+ }
20
+
21
+ }
22
+