@wwtdev/bsds-css 2.6.0 → 2.7.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.
- package/dist/components/_chart.scss +169 -0
- package/dist/components/_circle-buttons.scss +2 -2
- package/dist/components/_dropdown.scss +13 -0
- package/dist/components/_flyout.scss +71 -0
- package/dist/components/_form-elements.scss +1 -1
- package/dist/components/_form-input-composite.scss +3 -1
- package/dist/components/_form-labels.scss +7 -0
- package/dist/components/_form-switches.scss +1 -1
- package/dist/components/_modal.scss +11 -0
- package/dist/components/_overlay.scss +11 -0
- package/dist/components/_pills.scss +1 -1
- package/dist/components/_toast.scss +18 -2
- package/dist/components/chart.css +165 -0
- package/dist/components/circle-buttons.css +2 -2
- package/dist/components/dropdown.css +13 -0
- package/dist/components/flyout.css +67 -0
- package/dist/components/form-elements.css +1 -1
- package/dist/components/form-input-composite.css +3 -1
- package/dist/components/form-labels.css +7 -0
- package/dist/components/form-switches.css +1 -1
- package/dist/components/modal.css +11 -0
- package/dist/components/overlay.css +11 -0
- package/dist/components/pills.css +1 -1
- package/dist/components/toast.css +18 -2
- package/dist/wwt-bsds-preset.js +2 -2
- package/dist/wwt-bsds-wc-base.css +11 -5
- package/dist/wwt-bsds.css +712 -13
- package/dist/wwt-bsds.min.css +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
@mixin chart() {
|
|
2
|
+
.bs-chart {
|
|
3
|
+
display: block;
|
|
4
|
+
height: 100%;
|
|
5
|
+
width: 100%;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.bs-chart :where(figure) {
|
|
9
|
+
column-gap: 2.5rem;
|
|
10
|
+
display: grid;
|
|
11
|
+
font-size: .875rem;
|
|
12
|
+
grid-template-areas: var(--chart-gridareas, "chart" "legend");
|
|
13
|
+
grid-template-columns: var(--chart-gridcols, 100%);
|
|
14
|
+
grid-template-rows: var(--chart-gridrows, minmax(0px, auto) minmax(0px, min-content));
|
|
15
|
+
height: 100%;
|
|
16
|
+
margin-block: unset;
|
|
17
|
+
margin-inline: unset;
|
|
18
|
+
position: relative;
|
|
19
|
+
width: 100%;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.bs-chart :where(figure > :first-child) {
|
|
23
|
+
grid-area: chart;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.bs-chart :where(figure > :last-child) {
|
|
27
|
+
grid-area: legend;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.bs-chart :where(figure > div) {
|
|
31
|
+
min-width: 100%;
|
|
32
|
+
width: 100%;
|
|
33
|
+
}
|
|
34
|
+
.bs-chart :where(canvas) {
|
|
35
|
+
width: 100%;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* --------- Legend Styles --------- */
|
|
39
|
+
|
|
40
|
+
.bs-chart :where(figcaption) {
|
|
41
|
+
background-color: var(--legend-bg-color, transparent);
|
|
42
|
+
border-radius: .5rem;
|
|
43
|
+
border: 1px solid var(--legend-border-color, transparent);
|
|
44
|
+
clip-path: var(--legend-clip-path, none);
|
|
45
|
+
max-height: var(--legend-max-height, 100%);
|
|
46
|
+
overflow-y: var(--legend-overflow-y, hidden);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.bs-chart :where(figcaption[data-hidden="true"]) {
|
|
50
|
+
border: 0;
|
|
51
|
+
clip: rect(0 0 0 0);
|
|
52
|
+
height: 1px;
|
|
53
|
+
margin: 0;
|
|
54
|
+
overflow: hidden;
|
|
55
|
+
padding: 0;
|
|
56
|
+
position: absolute;
|
|
57
|
+
white-space: nowrap;
|
|
58
|
+
width: 1px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.bs-chart :where(ul) {
|
|
62
|
+
align-items: var(--legend-flexalign, center);
|
|
63
|
+
display: flex;
|
|
64
|
+
column-gap: 2.5rem;
|
|
65
|
+
flex-direction: var(--legend-flexdir, row);
|
|
66
|
+
flex-wrap: var(--legend-flexwrap, wrap);
|
|
67
|
+
padding-block: var(--legend-padding-block, .25rem);
|
|
68
|
+
/* cjs-legend-padding is set dynamically by chart.js for bar charts */
|
|
69
|
+
padding-inline: var(--legend-padding-inline, var(--cjs-legend-padding-inline, 2.5rem));
|
|
70
|
+
row-gap: .75rem;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.bs-chart :where(li, li:focus, li:active, li:focus-visible) {
|
|
74
|
+
align-items: center;
|
|
75
|
+
cursor: pointer;
|
|
76
|
+
display: flex;
|
|
77
|
+
flex-direction: row;
|
|
78
|
+
outline: 0;
|
|
79
|
+
position: relative;
|
|
80
|
+
width: var(--legend-item-width, auto);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.bs-chart :where(li)::after {
|
|
84
|
+
border: solid var(--focus-color, transparent) 2px;
|
|
85
|
+
border-radius: 0.25rem;
|
|
86
|
+
content: '';
|
|
87
|
+
display: block;
|
|
88
|
+
inset: -.25rem;
|
|
89
|
+
position: absolute;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.bs-chart :where(li:focus-visible) {
|
|
93
|
+
--focus-color: var(--bs-blue-base);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.bs-chart :where(li span) {
|
|
97
|
+
background: var(--legend-item-box-fill);
|
|
98
|
+
border-color: var(--legend-item-box-stroke);
|
|
99
|
+
border-radius: var(--legend-item-swatch-radius, 3px);
|
|
100
|
+
display: inline-block;
|
|
101
|
+
height: var(--bs-text-f-md);
|
|
102
|
+
margin-right: 10px;
|
|
103
|
+
width: var(--bs-text-f-md);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.bs-chart :where(li p) {
|
|
107
|
+
color: var(--legend-item-text-color);
|
|
108
|
+
font-size: var(--bs-text-f-md);
|
|
109
|
+
margin: 0;
|
|
110
|
+
padding: 0;
|
|
111
|
+
text-decoration: var(--legend-item-text-decoration);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* --------- Chart Layout Variants --------- */
|
|
115
|
+
/*
|
|
116
|
+
For now, per design team instructions, these are NOT responsive as we're only to expose these
|
|
117
|
+
variants for a very specific, single use-case that involves horizontal scroll...
|
|
118
|
+
If we want to make these responsive in the future, can wrap in media query.
|
|
119
|
+
*/
|
|
120
|
+
.bs-chart:where([data-layout="chart-right"], [data-layout="chart-left"]) {
|
|
121
|
+
--chart-gridrows: minmax(0px, auto);
|
|
122
|
+
--legend-bg-color: var(--bs-bg-base);
|
|
123
|
+
--legend-border-color: var(--bs-gray-light);
|
|
124
|
+
--legend-clip-path: border-box;
|
|
125
|
+
--legend-flexalign: start;
|
|
126
|
+
--legend-flexdir: column;
|
|
127
|
+
--legend-flexwrap: nowrap;
|
|
128
|
+
--legend-item-width: 100%;
|
|
129
|
+
--legend-max-height: 17.1875rem;
|
|
130
|
+
--legend-overflow-y: auto;
|
|
131
|
+
--legend-padding-block: .75rem;
|
|
132
|
+
--legend-padding-inline: .75rem;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.bs-chart:where([data-layout="chart-left"]) {
|
|
136
|
+
--chart-gridareas: "chart legend";
|
|
137
|
+
--chart-gridcols: auto minmax(150px, auto);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.bs-chart:where([data-layout="chart-right"]) {
|
|
141
|
+
--chart-gridareas: "legend chart";
|
|
142
|
+
--chart-gridcols: minmax(150px, auto) auto;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.bs-chart-table {
|
|
146
|
+
border: 0;
|
|
147
|
+
clip: rect(0 0 0 0);
|
|
148
|
+
height: 1px;
|
|
149
|
+
margin: 0;
|
|
150
|
+
overflow: hidden;
|
|
151
|
+
padding: 0;
|
|
152
|
+
position: absolute;
|
|
153
|
+
white-space: nowrap;
|
|
154
|
+
width: 1px;
|
|
155
|
+
}
|
|
156
|
+
/*
|
|
157
|
+
uncomment to make visible when testing
|
|
158
|
+
.bs-chart-table {
|
|
159
|
+
clip: none;
|
|
160
|
+
overflow: auto;
|
|
161
|
+
height: auto;
|
|
162
|
+
position: relative;
|
|
163
|
+
width: auto;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
*/
|
|
167
|
+
|
|
168
|
+
}
|
|
169
|
+
|
|
@@ -166,9 +166,9 @@ a.bs-circle-button {
|
|
|
166
166
|
/* Color Variants */
|
|
167
167
|
.bs-circle-button:where([data-variant^="color"]) {
|
|
168
168
|
--btn-focus-inset: .125rem;
|
|
169
|
-
--btn-gap:
|
|
169
|
+
--btn-gap: .5rem;
|
|
170
170
|
--btn-icon-bg-color: transparent;
|
|
171
|
-
--btn-icon-padding:
|
|
171
|
+
--btn-icon-padding: 0;
|
|
172
172
|
--btn-icon-size: .75rem; /* stays the same for all sizes */
|
|
173
173
|
--btn-icon-stroke-color: var(--btn-text-color);
|
|
174
174
|
--btn-secondary: transparent;
|
|
@@ -150,5 +150,18 @@
|
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
+
/* Vue Transition Styles - Only used in Vue component */
|
|
154
|
+
.bs-dropdown:where(.bs-dropdown-enter-from),
|
|
155
|
+
.bs-dropdown:where(.bs-dropdown-leave-to) {
|
|
156
|
+
opacity: 0;
|
|
157
|
+
transform: var(--dropdown-transform);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.bs-dropdown:where(.bs-dropdown-enter-to),
|
|
161
|
+
.bs-dropdown:where(.bs-dropdown-leave-from) {
|
|
162
|
+
opacity: 1;
|
|
163
|
+
transform: translate(0, 0);
|
|
164
|
+
}
|
|
165
|
+
|
|
153
166
|
}
|
|
154
167
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
@mixin flyout() {
|
|
2
|
+
.bs-flyout {
|
|
3
|
+
background-color: var(--bs-bg-base-to-light);
|
|
4
|
+
box-shadow: var(--bs-shadow-drawerRight);
|
|
5
|
+
height: 100%;
|
|
6
|
+
left: 0;
|
|
7
|
+
margin: 0;
|
|
8
|
+
max-width: 100vw;
|
|
9
|
+
opacity: 0;
|
|
10
|
+
padding: 1.5rem;
|
|
11
|
+
position: fixed;
|
|
12
|
+
top: 0;
|
|
13
|
+
transform: translateX(-100%);
|
|
14
|
+
transition-duration: 300ms;
|
|
15
|
+
transition-property: opacity, transform;
|
|
16
|
+
transition-timing-function: ease;
|
|
17
|
+
width: 360px;
|
|
18
|
+
z-index: 1000;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.bs-flyout:where([data-absolute="true"]) {
|
|
22
|
+
position: absolute;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.bs-flyout:where([data-position="right"]) {
|
|
26
|
+
box-shadow: var(--bs-shadow-drawerLeft);
|
|
27
|
+
left: auto;
|
|
28
|
+
right: 0;
|
|
29
|
+
transform: translateX(100%);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.bs-flyout:where([data-size="lg"]) {
|
|
33
|
+
width: 535px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.bs-flyout:where([data-shown="true"]) {
|
|
37
|
+
opacity: 1;
|
|
38
|
+
transform: translateX(0);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.bs-flyout :where(.bs-flyout-close-container) {
|
|
42
|
+
display: flex;
|
|
43
|
+
justify-content: flex-end;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.bs-flyout :where(.bs-flyout-close-container button) {
|
|
47
|
+
cursor: pointer;
|
|
48
|
+
outline-offset: 2px;
|
|
49
|
+
padding: 2px;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* Vue Transition Styles - Only used in Vue component */
|
|
53
|
+
.bs-flyout:where(.bs-flyout-enter-from),
|
|
54
|
+
.bs-flyout:where(.bs-flyout-leave-to) {
|
|
55
|
+
opacity: 0;
|
|
56
|
+
transform: translateX(-100%);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.bs-flyout:where([data-position="right"].bs-flyout-enter-from),
|
|
60
|
+
.bs-flyout:where([data-position="right"].bs-flyout-leave-to) {
|
|
61
|
+
transform: translateX(100%);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.bs-flyout:where(.bs-flyout-enter-to),
|
|
65
|
+
.bs-flyout:where(.bs-flyout-leave-from) {
|
|
66
|
+
opacity: 1;
|
|
67
|
+
transform: translateX(0);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
}
|
|
71
|
+
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
}
|
|
16
16
|
:where(.box[data-invert]) :is(input, textarea, select):where(:focus-visible),
|
|
17
17
|
:where(.box[data-invert]) :is(.bs-input, .bs-textarea, .bs-select):where(:focus-visible) {
|
|
18
|
-
--offset-color: var(--bs-bg-invert-base);
|
|
18
|
+
--offset-color: var(--bs-bg-invert-to-base);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
/* Errors and Messages */
|
|
@@ -173,7 +173,9 @@ and issues with box-sizing
|
|
|
173
173
|
}
|
|
174
174
|
|
|
175
175
|
/* -------- Hover styles -------- */
|
|
176
|
-
.bs-input-addon:hover
|
|
176
|
+
.bs-input-addon:hover,
|
|
177
|
+
:where(label):hover + .bs-input-addon,
|
|
178
|
+
:where(label):hover + * .bs-input-addon:where(:not(label .bs-input-addon, label + .bs-input-addon)) {
|
|
177
179
|
--input-bg: var(--bs-bg-input-hover);
|
|
178
180
|
}
|
|
179
181
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
:where(label, legend),
|
|
3
3
|
label:where(.bs-label) {
|
|
4
4
|
display: inline-block;
|
|
5
|
+
position: relative;
|
|
5
6
|
width: 100%;
|
|
6
7
|
}
|
|
7
8
|
|
|
@@ -29,5 +30,11 @@ label:where(.bs-label) {
|
|
|
29
30
|
--label-color: var(--bs-ink-disabled);
|
|
30
31
|
}
|
|
31
32
|
|
|
33
|
+
.bs-label:where(:has(+ input), :has(+ .bs-input-addon), :has(+ :not(label) .bs-input-addon))::after {
|
|
34
|
+
content: '';
|
|
35
|
+
inset: 0 0 -.25rem 0;
|
|
36
|
+
position: absolute;
|
|
37
|
+
}
|
|
38
|
+
|
|
32
39
|
}
|
|
33
40
|
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
}
|
|
138
138
|
:where(.box[data-invert]) .bs-switch :where(input:focus-visible) + :where(span),
|
|
139
139
|
:where(.box[data-invert]) .bs-switch:where(:focus-visible) :where(button span) {
|
|
140
|
-
--offset-color: var(--bs-bg-invert-base);
|
|
140
|
+
--offset-color: var(--bs-bg-invert-to-base);
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
/* Disabled state */
|
|
@@ -56,5 +56,16 @@
|
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
+
/* Vue Transition Styles - Only used in Vue component */
|
|
60
|
+
.bs-modal:where(.bs-modal-enter-from),
|
|
61
|
+
.bs-modal:where(.bs-modal-leave-to) {
|
|
62
|
+
opacity: 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.bs-modal:where(.bs-modal-enter-to),
|
|
66
|
+
.bs-modal:where(.bs-modal-leave-from) {
|
|
67
|
+
opacity: 1;
|
|
68
|
+
}
|
|
69
|
+
|
|
59
70
|
}
|
|
60
71
|
|
|
@@ -19,5 +19,16 @@
|
|
|
19
19
|
opacity: 1;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
/* Vue Transition Styles - Only used in Vue component */
|
|
23
|
+
.bs-overlay:where(.bs-overlay-enter-from),
|
|
24
|
+
.bs-overlay:where(.bs-overlay-leave-to) {
|
|
25
|
+
opacity: 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.bs-overlay:where(.bs-overlay-enter-to),
|
|
29
|
+
.bs-overlay:where(.bs-overlay-leave-from) {
|
|
30
|
+
opacity: 1;
|
|
31
|
+
}
|
|
32
|
+
|
|
22
33
|
}
|
|
23
34
|
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
--pill-background: var(--bs-bg-base);
|
|
67
67
|
}
|
|
68
68
|
:where(.box[data-invert]) .bs-pill {
|
|
69
|
-
--pill-background: var(--bs-bg-invert-base-subtle);
|
|
69
|
+
--pill-background: var(--bs-bg-invert-to-base-subtle);
|
|
70
70
|
--pill-text: var(--bs-gray-100);
|
|
71
71
|
}
|
|
72
72
|
:where(.box[data-invert]) :is(a, button).bs-pill:is(:hover, :focus) {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
@mixin toast() {
|
|
2
2
|
/* Base Toast Styles */
|
|
3
3
|
.bs-toast {
|
|
4
|
+
--toast-transform: translate(0, calc(100% + 1.5rem));
|
|
5
|
+
|
|
4
6
|
background-color: var(--bs-bg-base-elevated);
|
|
5
7
|
border-top: 4px solid var(--bs-blue-base);
|
|
6
8
|
bottom: 1.5rem;
|
|
@@ -11,7 +13,7 @@
|
|
|
11
13
|
opacity: 0;
|
|
12
14
|
position: fixed;
|
|
13
15
|
right: 0;
|
|
14
|
-
transform:
|
|
16
|
+
transform: var(--toast-transform);
|
|
15
17
|
transition-duration: 200ms;
|
|
16
18
|
transition-property: transform, opacity;
|
|
17
19
|
transition-timing-function: ease;
|
|
@@ -111,12 +113,13 @@
|
|
|
111
113
|
|
|
112
114
|
@media (min-width: 440px) {
|
|
113
115
|
.bs-toast {
|
|
116
|
+
--toast-transform: translate(calc(100% + 1.5rem), 0);
|
|
117
|
+
|
|
114
118
|
left: auto;
|
|
115
119
|
margin-left: 0;
|
|
116
120
|
margin-right: 0;
|
|
117
121
|
opacity: 0;
|
|
118
122
|
right: 1.5rem;
|
|
119
|
-
transform: translate(calc(100% + 1.5rem), 0);
|
|
120
123
|
}
|
|
121
124
|
|
|
122
125
|
.bs-toast:where([data-shown]:not([data-shown="false"])) {
|
|
@@ -129,5 +132,18 @@
|
|
|
129
132
|
}
|
|
130
133
|
}
|
|
131
134
|
|
|
135
|
+
/* Vue Transition Styles - Only used in Vue component */
|
|
136
|
+
.bs-toast:where(.bs-toast-enter-from),
|
|
137
|
+
.bs-toast:where(.bs-toast-leave-to) {
|
|
138
|
+
opacity: 0;
|
|
139
|
+
transform: var(--toast-transform);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.bs-toast:where(.bs-toast-enter-to),
|
|
143
|
+
.bs-toast:where(.bs-toast-leave-from) {
|
|
144
|
+
opacity: 1;
|
|
145
|
+
transform: translate(0, 0);
|
|
146
|
+
}
|
|
147
|
+
|
|
132
148
|
}
|
|
133
149
|
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
.bs-chart {
|
|
2
|
+
display: block;
|
|
3
|
+
height: 100%;
|
|
4
|
+
width: 100%;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.bs-chart :where(figure) {
|
|
8
|
+
column-gap: 2.5rem;
|
|
9
|
+
display: grid;
|
|
10
|
+
font-size: .875rem;
|
|
11
|
+
grid-template-areas: var(--chart-gridareas, "chart" "legend");
|
|
12
|
+
grid-template-columns: var(--chart-gridcols, 100%);
|
|
13
|
+
grid-template-rows: var(--chart-gridrows, minmax(0px, auto) minmax(0px, min-content));
|
|
14
|
+
height: 100%;
|
|
15
|
+
margin-block: unset;
|
|
16
|
+
margin-inline: unset;
|
|
17
|
+
position: relative;
|
|
18
|
+
width: 100%;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.bs-chart :where(figure > :first-child) {
|
|
22
|
+
grid-area: chart;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.bs-chart :where(figure > :last-child) {
|
|
26
|
+
grid-area: legend;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.bs-chart :where(figure > div) {
|
|
30
|
+
min-width: 100%;
|
|
31
|
+
width: 100%;
|
|
32
|
+
}
|
|
33
|
+
.bs-chart :where(canvas) {
|
|
34
|
+
width: 100%;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* --------- Legend Styles --------- */
|
|
38
|
+
|
|
39
|
+
.bs-chart :where(figcaption) {
|
|
40
|
+
background-color: var(--legend-bg-color, transparent);
|
|
41
|
+
border-radius: .5rem;
|
|
42
|
+
border: 1px solid var(--legend-border-color, transparent);
|
|
43
|
+
clip-path: var(--legend-clip-path, none);
|
|
44
|
+
max-height: var(--legend-max-height, 100%);
|
|
45
|
+
overflow-y: var(--legend-overflow-y, hidden);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.bs-chart :where(figcaption[data-hidden="true"]) {
|
|
49
|
+
border: 0;
|
|
50
|
+
clip: rect(0 0 0 0);
|
|
51
|
+
height: 1px;
|
|
52
|
+
margin: 0;
|
|
53
|
+
overflow: hidden;
|
|
54
|
+
padding: 0;
|
|
55
|
+
position: absolute;
|
|
56
|
+
white-space: nowrap;
|
|
57
|
+
width: 1px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.bs-chart :where(ul) {
|
|
61
|
+
align-items: var(--legend-flexalign, center);
|
|
62
|
+
display: flex;
|
|
63
|
+
column-gap: 2.5rem;
|
|
64
|
+
flex-direction: var(--legend-flexdir, row);
|
|
65
|
+
flex-wrap: var(--legend-flexwrap, wrap);
|
|
66
|
+
padding-block: var(--legend-padding-block, .25rem);
|
|
67
|
+
/* cjs-legend-padding is set dynamically by chart.js for bar charts */
|
|
68
|
+
padding-inline: var(--legend-padding-inline, var(--cjs-legend-padding-inline, 2.5rem));
|
|
69
|
+
row-gap: .75rem;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.bs-chart :where(li, li:focus, li:active, li:focus-visible) {
|
|
73
|
+
align-items: center;
|
|
74
|
+
cursor: pointer;
|
|
75
|
+
display: flex;
|
|
76
|
+
flex-direction: row;
|
|
77
|
+
outline: 0;
|
|
78
|
+
position: relative;
|
|
79
|
+
width: var(--legend-item-width, auto);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.bs-chart :where(li)::after {
|
|
83
|
+
border: solid var(--focus-color, transparent) 2px;
|
|
84
|
+
border-radius: 0.25rem;
|
|
85
|
+
content: '';
|
|
86
|
+
display: block;
|
|
87
|
+
inset: -.25rem;
|
|
88
|
+
position: absolute;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.bs-chart :where(li:focus-visible) {
|
|
92
|
+
--focus-color: var(--bs-blue-base);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.bs-chart :where(li span) {
|
|
96
|
+
background: var(--legend-item-box-fill);
|
|
97
|
+
border-color: var(--legend-item-box-stroke);
|
|
98
|
+
border-radius: var(--legend-item-swatch-radius, 3px);
|
|
99
|
+
display: inline-block;
|
|
100
|
+
height: var(--bs-text-f-md);
|
|
101
|
+
margin-right: 10px;
|
|
102
|
+
width: var(--bs-text-f-md);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.bs-chart :where(li p) {
|
|
106
|
+
color: var(--legend-item-text-color);
|
|
107
|
+
font-size: var(--bs-text-f-md);
|
|
108
|
+
margin: 0;
|
|
109
|
+
padding: 0;
|
|
110
|
+
text-decoration: var(--legend-item-text-decoration);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* --------- Chart Layout Variants --------- */
|
|
114
|
+
/*
|
|
115
|
+
For now, per design team instructions, these are NOT responsive as we're only to expose these
|
|
116
|
+
variants for a very specific, single use-case that involves horizontal scroll...
|
|
117
|
+
If we want to make these responsive in the future, can wrap in media query.
|
|
118
|
+
*/
|
|
119
|
+
.bs-chart:where([data-layout="chart-right"], [data-layout="chart-left"]) {
|
|
120
|
+
--chart-gridrows: minmax(0px, auto);
|
|
121
|
+
--legend-bg-color: var(--bs-bg-base);
|
|
122
|
+
--legend-border-color: var(--bs-gray-light);
|
|
123
|
+
--legend-clip-path: border-box;
|
|
124
|
+
--legend-flexalign: start;
|
|
125
|
+
--legend-flexdir: column;
|
|
126
|
+
--legend-flexwrap: nowrap;
|
|
127
|
+
--legend-item-width: 100%;
|
|
128
|
+
--legend-max-height: 17.1875rem;
|
|
129
|
+
--legend-overflow-y: auto;
|
|
130
|
+
--legend-padding-block: .75rem;
|
|
131
|
+
--legend-padding-inline: .75rem;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.bs-chart:where([data-layout="chart-left"]) {
|
|
135
|
+
--chart-gridareas: "chart legend";
|
|
136
|
+
--chart-gridcols: auto minmax(150px, auto);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.bs-chart:where([data-layout="chart-right"]) {
|
|
140
|
+
--chart-gridareas: "legend chart";
|
|
141
|
+
--chart-gridcols: minmax(150px, auto) auto;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.bs-chart-table {
|
|
145
|
+
border: 0;
|
|
146
|
+
clip: rect(0 0 0 0);
|
|
147
|
+
height: 1px;
|
|
148
|
+
margin: 0;
|
|
149
|
+
overflow: hidden;
|
|
150
|
+
padding: 0;
|
|
151
|
+
position: absolute;
|
|
152
|
+
white-space: nowrap;
|
|
153
|
+
width: 1px;
|
|
154
|
+
}
|
|
155
|
+
/*
|
|
156
|
+
uncomment to make visible when testing
|
|
157
|
+
.bs-chart-table {
|
|
158
|
+
clip: none;
|
|
159
|
+
overflow: auto;
|
|
160
|
+
height: auto;
|
|
161
|
+
position: relative;
|
|
162
|
+
width: auto;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
*/
|
|
@@ -165,9 +165,9 @@ a.bs-circle-button {
|
|
|
165
165
|
/* Color Variants */
|
|
166
166
|
.bs-circle-button:where([data-variant^="color"]) {
|
|
167
167
|
--btn-focus-inset: .125rem;
|
|
168
|
-
--btn-gap:
|
|
168
|
+
--btn-gap: .5rem;
|
|
169
169
|
--btn-icon-bg-color: transparent;
|
|
170
|
-
--btn-icon-padding:
|
|
170
|
+
--btn-icon-padding: 0;
|
|
171
171
|
--btn-icon-size: .75rem; /* stays the same for all sizes */
|
|
172
172
|
--btn-icon-stroke-color: var(--btn-text-color);
|
|
173
173
|
--btn-secondary: transparent;
|
|
@@ -148,3 +148,16 @@
|
|
|
148
148
|
display: none;
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
|
+
|
|
152
|
+
/* Vue Transition Styles - Only used in Vue component */
|
|
153
|
+
.bs-dropdown:where(.bs-dropdown-enter-from),
|
|
154
|
+
.bs-dropdown:where(.bs-dropdown-leave-to) {
|
|
155
|
+
opacity: 0;
|
|
156
|
+
transform: var(--dropdown-transform);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.bs-dropdown:where(.bs-dropdown-enter-to),
|
|
160
|
+
.bs-dropdown:where(.bs-dropdown-leave-from) {
|
|
161
|
+
opacity: 1;
|
|
162
|
+
transform: translate(0, 0);
|
|
163
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
.bs-flyout {
|
|
2
|
+
background-color: var(--bs-bg-base-to-light);
|
|
3
|
+
box-shadow: var(--bs-shadow-drawerRight);
|
|
4
|
+
height: 100%;
|
|
5
|
+
left: 0;
|
|
6
|
+
margin: 0;
|
|
7
|
+
max-width: 100vw;
|
|
8
|
+
opacity: 0;
|
|
9
|
+
padding: 1.5rem;
|
|
10
|
+
position: fixed;
|
|
11
|
+
top: 0;
|
|
12
|
+
transform: translateX(-100%);
|
|
13
|
+
transition-duration: 300ms;
|
|
14
|
+
transition-property: opacity, transform;
|
|
15
|
+
transition-timing-function: ease;
|
|
16
|
+
width: 360px;
|
|
17
|
+
z-index: 1000;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.bs-flyout:where([data-absolute="true"]) {
|
|
21
|
+
position: absolute;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.bs-flyout:where([data-position="right"]) {
|
|
25
|
+
box-shadow: var(--bs-shadow-drawerLeft);
|
|
26
|
+
left: auto;
|
|
27
|
+
right: 0;
|
|
28
|
+
transform: translateX(100%);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.bs-flyout:where([data-size="lg"]) {
|
|
32
|
+
width: 535px;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.bs-flyout:where([data-shown="true"]) {
|
|
36
|
+
opacity: 1;
|
|
37
|
+
transform: translateX(0);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.bs-flyout :where(.bs-flyout-close-container) {
|
|
41
|
+
display: flex;
|
|
42
|
+
justify-content: flex-end;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.bs-flyout :where(.bs-flyout-close-container button) {
|
|
46
|
+
cursor: pointer;
|
|
47
|
+
outline-offset: 2px;
|
|
48
|
+
padding: 2px;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* Vue Transition Styles - Only used in Vue component */
|
|
52
|
+
.bs-flyout:where(.bs-flyout-enter-from),
|
|
53
|
+
.bs-flyout:where(.bs-flyout-leave-to) {
|
|
54
|
+
opacity: 0;
|
|
55
|
+
transform: translateX(-100%);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.bs-flyout:where([data-position="right"].bs-flyout-enter-from),
|
|
59
|
+
.bs-flyout:where([data-position="right"].bs-flyout-leave-to) {
|
|
60
|
+
transform: translateX(100%);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.bs-flyout:where(.bs-flyout-enter-to),
|
|
64
|
+
.bs-flyout:where(.bs-flyout-leave-from) {
|
|
65
|
+
opacity: 1;
|
|
66
|
+
transform: translateX(0);
|
|
67
|
+
}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
}
|
|
15
15
|
:where(.box[data-invert]) :is(input, textarea, select):where(:focus-visible),
|
|
16
16
|
:where(.box[data-invert]) :is(.bs-input, .bs-textarea, .bs-select):where(:focus-visible) {
|
|
17
|
-
--offset-color: var(--bs-bg-invert-base);
|
|
17
|
+
--offset-color: var(--bs-bg-invert-to-base);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
/* Errors and Messages */
|
|
@@ -172,7 +172,9 @@ and issues with box-sizing
|
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
/* -------- Hover styles -------- */
|
|
175
|
-
.bs-input-addon:hover
|
|
175
|
+
.bs-input-addon:hover,
|
|
176
|
+
:where(label):hover + .bs-input-addon,
|
|
177
|
+
:where(label):hover + * .bs-input-addon:where(:not(label .bs-input-addon, label + .bs-input-addon)) {
|
|
176
178
|
--input-bg: var(--bs-bg-input-hover);
|
|
177
179
|
}
|
|
178
180
|
|