@wwtdev/bsds-css 2.28.0 → 3.0.0-rc.21

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 (94) hide show
  1. package/README.md +4 -4
  2. package/dist/wwt-bsds-preset.js +196 -68
  3. package/dist/wwt-bsds.css +2189 -1471
  4. package/dist/wwt-bsds.min.css +1 -1
  5. package/package.json +7 -11
  6. package/dist/components/_accordions.scss +0 -122
  7. package/dist/components/_alert.scss +0 -143
  8. package/dist/components/_badge.scss +0 -95
  9. package/dist/components/_banner.scss +0 -68
  10. package/dist/components/_buttons.scss +0 -289
  11. package/dist/components/_chart.scss +0 -169
  12. package/dist/components/_circle-buttons.scss +0 -231
  13. package/dist/components/_dropdown-options.scss +0 -236
  14. package/dist/components/_dropdown.scss +0 -189
  15. package/dist/components/_empty-state.scss +0 -99
  16. package/dist/components/_filter-buttons.scss +0 -116
  17. package/dist/components/_flyout.scss +0 -75
  18. package/dist/components/_form-booleans.scss +0 -182
  19. package/dist/components/_form-character-count.scss +0 -21
  20. package/dist/components/_form-container.scss +0 -111
  21. package/dist/components/_form-elements.scss +0 -40
  22. package/dist/components/_form-field-details.scss +0 -19
  23. package/dist/components/_form-hints.scss +0 -22
  24. package/dist/components/_form-input-composite.scss +0 -312
  25. package/dist/components/_form-input-phone.scss +0 -21
  26. package/dist/components/_form-input-search.scss +0 -74
  27. package/dist/components/_form-labels.scss +0 -40
  28. package/dist/components/_form-switches.scss +0 -154
  29. package/dist/components/_form-text-fields.scss +0 -205
  30. package/dist/components/_horizontal-navigation-mobile.scss +0 -238
  31. package/dist/components/_horizontal-navigation.scss +0 -220
  32. package/dist/components/_inline-tabs.scss +0 -86
  33. package/dist/components/_loader.scss +0 -105
  34. package/dist/components/_modal.scss +0 -185
  35. package/dist/components/_overlay.scss +0 -34
  36. package/dist/components/_pagination.scss +0 -85
  37. package/dist/components/_pills.scss +0 -224
  38. package/dist/components/_profile-details.scss +0 -44
  39. package/dist/components/_profile-img.scss +0 -73
  40. package/dist/components/_profile-layout.scss +0 -29
  41. package/dist/components/_spinner.scss +0 -95
  42. package/dist/components/_tab-list.scss +0 -151
  43. package/dist/components/_table.scss +0 -331
  44. package/dist/components/_tables.scss +0 -84
  45. package/dist/components/_timeline.scss +0 -122
  46. package/dist/components/_toast.scss +0 -149
  47. package/dist/components/_toaster.scss +0 -27
  48. package/dist/components/_tooltip.scss +0 -179
  49. package/dist/components/_vertical-navigation.scss +0 -280
  50. package/dist/components/accordions.css +0 -118
  51. package/dist/components/alert.css +0 -139
  52. package/dist/components/badge.css +0 -91
  53. package/dist/components/banner.css +0 -64
  54. package/dist/components/buttons.css +0 -285
  55. package/dist/components/chart.css +0 -165
  56. package/dist/components/circle-buttons.css +0 -227
  57. package/dist/components/dropdown-options.css +0 -232
  58. package/dist/components/dropdown.css +0 -185
  59. package/dist/components/empty-state.css +0 -95
  60. package/dist/components/filter-buttons.css +0 -112
  61. package/dist/components/flyout.css +0 -71
  62. package/dist/components/form-booleans.css +0 -178
  63. package/dist/components/form-character-count.css +0 -17
  64. package/dist/components/form-container.css +0 -108
  65. package/dist/components/form-elements.css +0 -36
  66. package/dist/components/form-field-details.css +0 -15
  67. package/dist/components/form-hints.css +0 -18
  68. package/dist/components/form-input-composite.css +0 -308
  69. package/dist/components/form-input-phone.css +0 -17
  70. package/dist/components/form-input-search.css +0 -70
  71. package/dist/components/form-labels.css +0 -36
  72. package/dist/components/form-switches.css +0 -150
  73. package/dist/components/form-text-fields.css +0 -201
  74. package/dist/components/horizontal-navigation-mobile.css +0 -234
  75. package/dist/components/horizontal-navigation.css +0 -216
  76. package/dist/components/inline-tabs.css +0 -83
  77. package/dist/components/loader.css +0 -101
  78. package/dist/components/modal.css +0 -181
  79. package/dist/components/overlay.css +0 -30
  80. package/dist/components/pagination.css +0 -81
  81. package/dist/components/pills.css +0 -220
  82. package/dist/components/profile-details.css +0 -40
  83. package/dist/components/profile-img.css +0 -69
  84. package/dist/components/profile-layout.css +0 -25
  85. package/dist/components/spinner.css +0 -91
  86. package/dist/components/tab-list.css +0 -147
  87. package/dist/components/table.css +0 -327
  88. package/dist/components/tables.css +0 -80
  89. package/dist/components/timeline.css +0 -118
  90. package/dist/components/toast.css +0 -145
  91. package/dist/components/toaster.css +0 -23
  92. package/dist/components/tooltip.css +0 -175
  93. package/dist/components/vertical-navigation.css +0 -276
  94. package/dist/wwt-bsds-wc-base.css +0 -1129
@@ -1,40 +0,0 @@
1
- .bs-profile-details {
2
- color: var(--bs-ink-light);
3
- font-size: var(--bs-text-sm);
4
- line-height: 1.3;
5
- }
6
-
7
- .bs-profile-details > :where(*) {
8
- display: block;
9
- }
10
-
11
- .bs-profile-details > :where(.bs-profile-name) {
12
- color: var(--profile-name-color, var(--bs-ink-base));
13
- text-decoration: var(--profile-name-decoration, none);
14
- }
15
-
16
- /* Action button aka Follow toggle. */
17
- .bs-profile-details > :where(button:first-child) {
18
- color: var(--profile-action-color, var(--bs-orange-warning));
19
- font-size: inherit;
20
- }
21
- .bs-profile-details > :where(button:first-child:hover) {
22
- text-decoration: underline;
23
- }
24
- /* Remove the profile name underline when hovering on the action button. */
25
- .bs-profile-details:has(:where(button:first-child:hover)) {
26
- --profile-name-decoration: none;
27
- }
28
-
29
- /* Action button and optional meta details w/ icon */
30
- .bs-profile-details > :where([data-icon]) {
31
- align-items: center;
32
- column-gap: 0.5rem;
33
- cursor: pointer;
34
- display: flex;
35
- font-size: inherit;
36
- }
37
- .bs-profile-details .bs-icon {
38
- height: .75rem;
39
- width: .75rem;
40
- }
@@ -1,69 +0,0 @@
1
- .bs-profile-img,
2
- .bs-profile-img:where([data-img-size^='sm']) {
3
- --profile-size: 2rem;
4
- --profile-text: 0.8125rem;
5
-
6
- aspect-ratio: 1/1;
7
- border-radius: 50%;
8
- height: var(--profile-size);
9
- overflow: hidden;
10
- position: relative;
11
- width: var(--profile-size);
12
- }
13
-
14
- .bs-profile-img :where(img) {
15
- height: 100%;
16
- object-fit: cover;
17
- width: 100%;
18
- }
19
- .bs-profile-img:where([data-no-img]:not([data-no-img="false"])) img {
20
- display: none;
21
- }
22
-
23
- .bs-profile-img::before,
24
- .bs-profile-img::after {
25
- border-radius: 50%;
26
- border-collapse: collapse;
27
- height: 100%;
28
- inset: 0;
29
- position: absolute;
30
- width: 100%;
31
- }
32
- /* Shadow */
33
- .bs-profile-img::before {
34
- box-shadow: var(--bs-shadow-profilePhoto);
35
- content: '';
36
- }
37
- .bs-profile-img:where([data-no-img]:not([data-no-img="false"]))::before {
38
- display: none;
39
- }
40
- /* Initials */
41
- .bs-profile-img:where([data-no-img]:not([data-no-img="false"]))::after {
42
- align-items: center;
43
- border: 1px solid currentColor;
44
- color: var(--bs-blue-500);
45
- content: attr(data-initials);
46
- display: flex;
47
- font-size: var(--profile-text);
48
- justify-content: center;
49
- text-transform: uppercase;
50
- line-height: 1;
51
- }
52
-
53
- /* Profile Sizes */
54
- .bs-profile-img:where([data-img-size^='xs']) {
55
- --profile-size: 1.5rem;
56
- --profile-text: 0.625rem;
57
- }
58
- .bs-profile-img:where([data-img-size^='md']) {
59
- --profile-size: 3rem;
60
- --profile-text: var(--bs-text-md);
61
- }
62
- .bs-profile-img:where([data-img-size^='lg']) {
63
- --profile-size: 4rem;
64
- --profile-text: var(--bs-text-lg);
65
- }
66
- .bs-profile-img:where([data-img-size^='xl']) {
67
- --profile-size: 5.75rem;
68
- --profile-text: var(--bs-text-2xl);
69
- }
@@ -1,25 +0,0 @@
1
- /* Profile with User Details */
2
- .bs-profile:where([data-layout]),
3
- .bs-profile:where([data-layout^='vertical']) {
4
- display: grid;
5
- row-gap: 0.5rem;
6
- }
7
-
8
- .bs-profile:where([data-layout^='horizontal']) {
9
- column-gap: 1rem;
10
- grid-template-columns: auto 1fr;
11
- align-items: center;
12
- }
13
-
14
- /* When wrapped in a link */
15
- a.bs-profile:where([data-layout]) {
16
- text-decoration: none;
17
- }
18
-
19
- a.bs-profile:where([data-layout]) {
20
- --profile-name-color: var(--bs-ink-blue);
21
- }
22
-
23
- a.bs-profile:where([data-layout]):hover {
24
- --profile-name-decoration: underline;
25
- }
@@ -1,91 +0,0 @@
1
- :where(.bs-spinner) {
2
- display: block;
3
- }
4
-
5
- /* ------------ Sizes ------------ */
6
- .bs-spinner {
7
- aspect-ratio: 1;
8
- fill: none;
9
- height: var(--spinner-size, 2rem);
10
- width: var(--spinner-size, 2rem);
11
- }
12
-
13
- .bs-spinner:where([data-size="sm"]) {
14
- --spinner-size: 1rem;
15
- }
16
-
17
- .bs-spinner:where([data-size="md"]) {
18
- --spinner-size: 2rem;
19
- }
20
-
21
- .bs-spinner:where([data-size="lg"]) {
22
- --spinner-size: 3rem;
23
- }
24
-
25
- /* ------------ Color Variants ------------ */
26
-
27
- .bs-spinner :where(circle) {
28
- animation: bs-spin 1s linear infinite;
29
- stroke-linecap: round;
30
- stroke-width: 10%;
31
- transition: all 1s ease-in-out;
32
- }
33
-
34
- .bs-spinner:where(:not([data-variant="gradient"])) :where(circle) {
35
- animation: bs-spin 1s linear infinite, bs-stroke-change 2s linear infinite;
36
- }
37
-
38
- .bs-spinner :where(circle) {
39
- --bs-spinner-color-1: var(--bs-blue-400);
40
- --bs-spinner-color-2: var(--bs-blue-200);
41
- }
42
-
43
- .bs-spinner:where([data-variant="white"]) :where(circle) {
44
- --bs-spinner-color-1: white;
45
- --bs-spinner-color-2: white;
46
- }
47
-
48
- :where(#bs-spinner-gradient stop) {
49
- stop-color: var(--bs-plum-400);
50
- }
51
- :where(#bs-spinner-gradient stop:first-child) {
52
- stop-color: var(--bs-blue-400);
53
- }
54
- :where(#bs-spinner-gradient stop:last-child) {
55
- stop-color: var(--bs-red-400);
56
- }
57
-
58
- @keyframes bs-spin {
59
- 0% {
60
- stroke-dasharray: 0 100;
61
- stroke-dashoffset: 0;
62
- }
63
- 25% {
64
- stroke-dasharray: 33 67;
65
- stroke-dashoffset: -40;
66
- }
67
- 70% {
68
- stroke-dasharray: 33 67;
69
- stroke-dashoffset: -60;
70
- }
71
- 85% {
72
- stroke-dasharray: 17 83;
73
- stroke-dashoffset: -77;
74
- }
75
- 100% {
76
- stroke-dasharray: 0 100;
77
- stroke-dashoffset: -100;
78
- }
79
- }
80
-
81
- @keyframes bs-stroke-change {
82
- 0% {
83
- stroke: var(--bs-spinner-color-1);
84
- }
85
- 33% {
86
- stroke: var(--bs-spinner-color-2, var(--bs-spinner-color-1));
87
- }
88
- 100% {
89
- stroke: var(--bs-spinner-color-1);
90
- }
91
- }
@@ -1,147 +0,0 @@
1
- .bs-tab-list {
2
- --active-line-max-width: 0;
3
- --active-line-offset: 0;
4
- --active-line-scale: 0;
5
- --active-line-transition-duration: 300ms;
6
- --tab-color: var(--bs-ink-light);
7
- --tab-cursor: pointer;
8
- --tab-display: inline-flex;
9
- --tab-justify: center;
10
- --tab-list-opacity: 1;
11
- --tab-text-size: var(--bs-text-sm);
12
- --tab-weight: var(--bs-font-normal);
13
- align-items: center;
14
- border-bottom: 1px solid var(--bs-border-base);
15
- display: flex;
16
- font-size: var(--tab-text-size);
17
- gap: 1rem;
18
- height: 2.5rem;
19
- justify-content: var(--tab-justify);
20
- line-height: 1.5;
21
- opacity: var(--tab-list-opacity);
22
- overflow-x: clip;
23
- overflow-y: visible;
24
- position: relative;
25
- width: 100%;
26
- }
27
-
28
- .bs-tab-list:where([data-resizing="true"]) {
29
- --tab-list-opacity: 0;
30
- }
31
-
32
- @media (min-width: 1166px) {
33
- .bs-tab-list {
34
- --tab-justify: flex-start;
35
- --tab-text-size: var(--bs-text-base);
36
- }
37
- }
38
-
39
- /* ------------- Tabs ------------- */
40
- .bs-tab-list-tabs {
41
- align-items: center;
42
- display: flex;
43
- flex-grow: 1;
44
- gap: 1rem;
45
- }
46
-
47
- @media (min-width: 1166px) {
48
- .bs-tab-list-tabs {
49
- flex-grow: 0;
50
- }
51
- }
52
-
53
- .bs-tab-list-tabs :where([role="tab"]) {
54
- align-items: center;
55
- color: var(--tab-color, var(--bs-ink-light));
56
- column-gap: 0.5rem;
57
- cursor: var(--tab-cursor);
58
- display: var(--tab-display);
59
- flex-basis: var(--tab-basis, content);
60
- flex-grow: var(--tab-grow, 1);
61
- flex-shrink: var(--tab-shrink, 0);
62
- font-size: inherit;
63
- font-weight: var(--tab-weight, var(--bs-font-normal));
64
- height: 2.5rem;
65
- justify-content: var(--tab-justify-self, center);
66
- outline-color: var(--bs-blue-base);
67
- outline-offset: -1px;
68
- padding: 0.5rem;
69
- text-decoration: none;
70
- }
71
-
72
- .bs-tab-list-tabs :where([role="tab"][tabindex="-1"]) {
73
- --tab-cursor: default;
74
- }
75
-
76
- .bs-tab-list-tabs :where([role="tab"][data-hidden="true"]) {
77
- --tab-display: none;
78
- }
79
-
80
- .bs-tab-list-tabs :where([role="tab"][aria-selected="true"]) {
81
- --tab-color: var(--bs-ink-base);
82
- --tab-weight: var(--bs-font-bold);
83
- }
84
-
85
- /* ---- always use DT styles when tabs have yet to be width-adapted (they're invisible during this time) ---- */
86
- .bs-tab-list:where([data-resizing="true"]) {
87
- --tab-basis: auto;
88
- --tab-grow: 0;
89
- --tab-justify-self: flex-start;
90
- --tab-shrink: 0;
91
- }
92
-
93
- @media (min-width: 1166px) {
94
- .bs-tab-list {
95
- --tab-basis: auto;
96
- --tab-grow: 0;
97
- --tab-justify-self: flex-start;
98
- --tab-shrink: 0;
99
- }
100
- }
101
-
102
- /* ------------- Active line ------------- */
103
- .bs-tab-list::after {
104
- background-color: var(--bs-blue-base);
105
- bottom: 0;
106
- content: '';
107
- height: 0.25rem;
108
- left: 0;
109
- position: absolute;
110
- transform-origin: top left;
111
- transform: translate(var(--active-line-offset)) scaleX(var(--active-line-scale));
112
- transition: transform var(--active-line-transition-duration) ease-in;
113
- width: 100%;
114
- }
115
-
116
- /* ------------- Tab Panels ------------- */
117
- .bs-tab-panel:where([role="tabpanel"]) {
118
- display: none;
119
- }
120
-
121
- .bs-tab-panel:where([role="tabpanel"][data-active="true"]) {
122
- display: block;
123
- }
124
-
125
- /* ------------- Toggle ------------- */
126
- .bs-tab-list-toggle {
127
- align-items: center;
128
- color: var(--tab-color, var(--bs-ink-light));
129
- column-gap: 0.5rem;
130
- cursor: pointer;
131
- display: inline-flex;
132
- font-size: var(--tab-text-size, 0.875rem);
133
- font-weight: var(--tab-weight, var(--bs-font-normal));
134
- gap: 0.375rem;
135
- height: 2.5rem;
136
- justify-content: var(--tab-justify-self, center);
137
- padding: 0.5rem;
138
- }
139
-
140
- .bs-tab-list-toggle:where([data-hidden="true"]) {
141
- display: none;
142
- }
143
-
144
- .bs-tab-list-toggle:where([data-active="true"]) {
145
- color: var(--bs-ink-base);
146
- font-weight: var(--bs-font-bold);
147
- }
@@ -1,327 +0,0 @@
1
- /* ------ WRAPPER ------ */
2
-
3
- .bs-table-wrap {
4
- display: flex;
5
- flex-direction: column;
6
- overflow: hidden;
7
- }
8
-
9
- :where(.bs-table-wrap) {
10
- font-size: var(--bs-text-sm);
11
- color: var(--bs-table-cell-ink, var(--bs-ink-light));
12
- border-radius: var(--bs-space-2);
13
- border: 1px solid var(--bs-border-base);
14
- }
15
-
16
- :where(.bs-table-wrap-header, .bs-table-wrap-footer) {
17
- padding-block: var(--bs-space-3);
18
- padding-inline: var(--bs-table-cell-padding);
19
- background: var(--bs-bg-medium);
20
- border-color: inherit;
21
- }
22
-
23
- :where(.bs-table-wrap-header) {
24
- border-bottom-width: 1px;
25
- }
26
-
27
- :where(.bs-table-wrap-footer) {
28
- border-top-width: 1px;
29
- }
30
-
31
-
32
- /* ------ TABLE ------ */
33
-
34
- .bs-table-scroll-wrap {
35
- flex: 1;
36
- border-color: inherit;
37
- overflow: auto;
38
- overscroll-behavior: none;
39
- }
40
-
41
- .bs-table {
42
- display: grid;
43
- grid-template-columns: var(--bs-table-col-widths);
44
- }
45
-
46
- :where(.bs-table) {
47
- border-color: inherit;
48
- }
49
-
50
- /* ------ HEADER ROWGROUP ------ */
51
-
52
- .bs-table-header-rowgroup {
53
- grid-column: 1 / -1;
54
- grid-row: span var(--bs-table-header-row-count);
55
- display: grid;
56
- grid-template-columns: subgrid;
57
- grid-template-rows: subgrid;
58
- border-color: inherit;
59
- }
60
-
61
- .bs-table-header-rowgroup-freeze {
62
- position: sticky;
63
- top: 0;
64
- z-index: 2;
65
-
66
- .bs-table:not(.bs-table-border-none) & {
67
- box-shadow: 0 3px 0 rgba(0, 0, 0, .03);
68
- }
69
- }
70
-
71
- /* ------ BODY ROWGROUP ------ */
72
-
73
- .bs-table-body-rowgroup {
74
- grid-column: 1 / -1;
75
- grid-row: span var(--bs-table-body-row-count);
76
- display: grid;
77
- grid-template-columns: subgrid;
78
- grid-template-rows: subgrid;
79
- border-color: inherit;
80
- }
81
-
82
- /* ------ FOOTER ROWGROUP ------ */
83
-
84
- .bs-table-footer-rowgroup {
85
- grid-column: 1 / -1;
86
- grid-row: span var(--bs-table-footer-row-count);
87
- display: grid;
88
- grid-template-columns: subgrid;
89
- grid-template-rows: subgrid;
90
- border-color: inherit;
91
- }
92
-
93
- .bs-table-footer-rowgroup-freeze {
94
- position: sticky;
95
- bottom: 0;
96
- z-index: 2;
97
-
98
- .bs-table:not(.bs-table-border-none) & {
99
- box-shadow: 0 -3px 0 rgba(0, 0, 0, .03);
100
- }
101
- }
102
-
103
- /* ------ ROWS ------ */
104
-
105
- .bs-table-row {
106
- grid-column: 1 / -1;
107
- }
108
-
109
- :where(.bs-table-row) {
110
- background: var(--bs-bg-base);
111
- border-color: inherit;
112
- }
113
-
114
- :where(.bs-table-header-rowgroup .bs-table-row) {
115
- background: var(--bs-bg-light);
116
- }
117
-
118
- :where(.bs-table-row:has(.bs-table-head-cell, .bs-table-cell)) {
119
- display: grid;
120
- grid-template-columns: subgrid;
121
- }
122
-
123
- /* ------ FROZEN COLS ------ */
124
-
125
- .bs-table-cols-frozen-left {
126
- position: sticky;
127
- left: 0;
128
- grid-column: span var(--bs-table-frozen-left-count);
129
- display: grid;
130
- grid-template-columns: subgrid;
131
- background: inherit;
132
- border-color: inherit;
133
- z-index: 1;
134
-
135
- .bs-table:not(.bs-table-border-none) & {
136
- box-shadow: 3px 0 0 rgba(0, 0, 0, .03);
137
- }
138
- }
139
-
140
- .bs-table-cols-frozen-right {
141
- position: sticky;
142
- right: 0;
143
- grid-column: span var(--bs-table-frozen-right-count);
144
- display: grid;
145
- grid-template-columns: subgrid;
146
- background: inherit;
147
- border-color: inherit;
148
- z-index: 1;
149
-
150
- .bs-table:not(.bs-table-border-none) & {
151
- box-shadow: -3px 0 0 rgba(0, 0, 0, .03);
152
- }
153
- }
154
-
155
- /* ------ CELLS ------ */
156
-
157
- :where(.bs-table-head-cell) {
158
- color: var(--bs-table-head-cell-ink, var(--bs-ink-base));
159
- font-weight: var(--bs-font-bold);
160
- border-color: inherit;
161
- }
162
-
163
- /* Couldn't use :where due to Blue Steel reset styles on <button> imposing font-size.
164
- Adding inherit in case consumer does custom header cell styles */
165
- .bs-table-head-cell .bs-sort-toggle {
166
- font-size: inherit;
167
- font-weight: var(--bs-font-bold);
168
- color: inherit;
169
- line-height: inherit;
170
- letter-spacing: inherit;
171
- }
172
-
173
- :where(.bs-table-cell) {
174
- border-color: inherit;
175
- }
176
-
177
- /* ------ PROP: CELL-PADDING ------ */
178
-
179
- :root {
180
- --bs-table-cell-padding-xs: var(--bs-space-2);
181
- --bs-table-cell-padding-sm: var(--bs-space-3);
182
- --bs-table-cell-padding-md: var(--bs-space-4);
183
- --bs-table-cell-padding-lg: var(--bs-space-6);
184
- --bs-table-cell-padding-xl: var(--bs-space-8);
185
- }
186
-
187
- :where(.bs-table-head-cell, .bs-table-cell) {
188
- padding: var(--bs-table-cell-padding);
189
- }
190
-
191
- /* ------ PROP: TRUNCATE ------ */
192
-
193
- :where(.bs-table-truncate):where(.bs-table-head-cell, .bs-table-cell) {
194
- overflow: hidden;
195
- text-overflow: ellipsis;
196
- white-space: nowrap;
197
- }
198
-
199
-
200
- /* ------ PROP: STRIPED ROWS ------ */
201
-
202
- :where(.bs-table-striped .bs-table-body-rowgroup .bs-table-row:nth-child(even)) {
203
- background: var(--bs-bg-light);
204
- }
205
-
206
-
207
- /* ------ PROP: ROW HOVER ------ */
208
-
209
- :where(.bs-table-row-hover .bs-table-body-rowgroup .bs-table-row:hover) {
210
- background: var(--bs-table-row-hover, var(--bs-bg-light));
211
- transition: background-color 200ms;
212
- }
213
-
214
-
215
- /* ------ PROP: BORDERS ------ */
216
-
217
- /* -- borders="rows" -- */
218
- :where(.bs-table-border-rows) :where(.bs-table-row) {
219
- border-bottom-width: 1px;
220
- }
221
-
222
- /* -- borders="cols" -- */
223
- /* setting following cell's left border instead of each cell's right, so Table's left/right border is easier for consumer to override with utility classes */
224
- :where(.bs-table-border-cols) :where(.bs-table-head-cell + .bs-table-head-cell, .bs-table-cell + .bs-table-cell) {
225
- border-left-width: 1px;
226
- }
227
-
228
- .bs-table-border-cols .bs-table-header-rowgroup {
229
- border-bottom-width: 1px;
230
- }
231
-
232
- /* -- borders="grid" -- */
233
- :where(.bs-table-border-grid) :where(.bs-table-row) {
234
- border-bottom-width: 1px;
235
- }
236
-
237
- /* setting following cell's left border instead of each cell's right, so Table's left/right border is easier for consumer to override with utility classes */
238
- :where(.bs-table-border-grid) :where(.bs-table-head-cell + .bs-table-head-cell, .bs-table-cell + .bs-table-cell) {
239
- border-left-width: 1px;
240
- }
241
-
242
- /* -- borders="frozen" -- */
243
- .bs-table-border-frozen .bs-table-header-rowgroup-freeze {
244
- border-bottom-width: 1px;
245
- }
246
-
247
- /* -- frozen col and footer-rowgroup sections will always show border, unless borders="none" -- */
248
- /* (header-rowgroup is not included below since TableRow bottom border covers most cases) */
249
- .bs-table:not(.bs-table-border-none) .bs-table-cols-frozen-left {
250
- border-right-width: 1px;
251
- }
252
-
253
- .bs-table:not(.bs-table-border-none) .bs-table-cols-frozen-right {
254
- border-left-width: 1px;
255
- }
256
-
257
- .bs-table:not(.bs-table-border-none) .bs-table-footer-rowgroup-freeze {
258
- border-top-width: 1px;
259
- }
260
-
261
- /* turn off last row's bottom border, since it would double-up with Table's border */
262
- :where(.bs-table-body-rowgroup, .bs-table-footer-rowgroup) .bs-table-row:last-of-type {
263
- border-bottom-width: 0;
264
- }
265
-
266
-
267
- /* ------ TABLE COLUMN RESIZER ------ */
268
-
269
- .bs-table-col-resizer {
270
- position: fixed; /* fixed instead of absolute, due to using coordinates from .getBoundingClientRect() */
271
- top: 0;
272
- left: -8px;
273
- bottom: 0;
274
- width: 15px; /* includes 5px resizer handle width + 5px of extra hover target area on left and right of handle */
275
- cursor: col-resize;
276
- touch-action: none;
277
- z-index: var(--bs-table-col-resizer-z, 10);
278
- transform: translate(var(--bs-table-col-resizer-x), var(--bs-table-col-resizer-y));
279
-
280
- /* resizer handle and vertical line set-up */
281
- &:before,
282
- &::after {
283
- content: "";
284
- position: absolute;
285
- top: 0;
286
- left: 0;
287
- background: var(--bs-table-col-resizer-color, var(--bs-blue-base));
288
- }
289
-
290
- /* resizer handle */
291
- &::after {
292
- left: 5px;
293
- width: 5px;
294
- height: var(--bs-table-col-resizer-handle-height);
295
- }
296
-
297
- /* resizer vertical line/tail */
298
- &::before {
299
- left: 7px;
300
- width: 1px;
301
- height: var(--bs-table-col-resizer-tail-height);
302
- display: none;
303
- }
304
-
305
- &.bs-table-col-resizer-active::before {
306
- display: block;
307
- }
308
- }
309
-
310
- /* ------ SORT TOGGLE ------ */
311
-
312
- /* Override Blue Steel CSS: It adds "relative" to buttons by default, which was causing an overlap issue when a Table with frozen, sortable cols scrolled horizontally */
313
- .bs-sort-toggle {
314
- position: static;
315
- }
316
-
317
- /* Using :where to lower specificity so consumers can use utility classes to override */
318
- :where(.bs-sort-toggle) {
319
- display: inline-flex;
320
- align-items: center;
321
- gap: var(--bs-space-2);
322
- cursor: pointer;
323
- }
324
-
325
- :where(.bs-sort-toggle .bs-icon) {
326
- flex-shrink: 0;
327
- }