@deephaven/components 0.55.1-beta.9 → 0.56.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.
Files changed (113) hide show
  1. package/css/BaseStyleSheet.css +837 -3627
  2. package/css/BaseStyleSheet.css.map +1 -1
  3. package/dist/AutoCompleteInput.css +4 -4
  4. package/dist/AutoCompleteInput.css.map +1 -1
  5. package/dist/ComboBox.css +7 -7
  6. package/dist/ComboBox.css.map +1 -1
  7. package/dist/CustomTimeSelect.css +9 -9
  8. package/dist/CustomTimeSelect.css.map +1 -1
  9. package/dist/DraggableItemList.css +14 -14
  10. package/dist/DraggableItemList.css.map +1 -1
  11. package/dist/ErrorBoundary.d.ts +26 -0
  12. package/dist/ErrorBoundary.d.ts.map +1 -0
  13. package/dist/ErrorBoundary.js +55 -0
  14. package/dist/ErrorBoundary.js.map +1 -0
  15. package/dist/HierarchicalCheckboxMenu.css +20 -6
  16. package/dist/HierarchicalCheckboxMenu.css.map +1 -1
  17. package/dist/HierarchicalCheckboxMenu.d.ts.map +1 -1
  18. package/dist/HierarchicalCheckboxMenu.js +2 -4
  19. package/dist/HierarchicalCheckboxMenu.js.map +1 -1
  20. package/dist/ItemList.css +1 -1
  21. package/dist/ItemList.css.map +1 -1
  22. package/dist/ItemListItem.css +7 -7
  23. package/dist/ItemListItem.css.map +1 -1
  24. package/dist/LoadingOverlay.css +1 -1
  25. package/dist/LoadingOverlay.css.map +1 -1
  26. package/dist/MaskedInput.css.map +1 -1
  27. package/dist/RandomAreaPlotAnimation.d.ts +1 -1
  28. package/dist/RandomAreaPlotAnimation.d.ts.map +1 -1
  29. package/dist/RandomAreaPlotAnimation.js +49 -13
  30. package/dist/RandomAreaPlotAnimation.js.map +1 -1
  31. package/dist/SearchInput.css +3 -3
  32. package/dist/SearchInput.css.map +1 -1
  33. package/dist/SelectValueList.css +3 -3
  34. package/dist/SelectValueList.css.map +1 -1
  35. package/dist/SocketedButton.css +33 -33
  36. package/dist/SocketedButton.css.map +1 -1
  37. package/dist/ThemeExport.module.css +33 -33
  38. package/dist/ThemeExport.module.css.map +1 -1
  39. package/dist/TimeSlider.css +10 -10
  40. package/dist/TimeSlider.css.map +1 -1
  41. package/dist/TimeSlider.module.css +10 -10
  42. package/dist/TimeSlider.module.css.map +1 -1
  43. package/dist/ToastNotification.css +4 -4
  44. package/dist/ToastNotification.css.map +1 -1
  45. package/dist/UISwitch.css +19 -19
  46. package/dist/UISwitch.css.map +1 -1
  47. package/dist/ValidateLabelInput.css +1 -1
  48. package/dist/ValidateLabelInput.css.map +1 -1
  49. package/dist/context-actions/ContextActions.css +19 -19
  50. package/dist/context-actions/ContextActions.css.map +1 -1
  51. package/dist/index.d.ts +1 -0
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +1 -0
  54. package/dist/index.js.map +1 -1
  55. package/dist/menu-actions/DropdownMenu.css +2 -2
  56. package/dist/menu-actions/DropdownMenu.css.map +1 -1
  57. package/dist/navigation/MenuItem.css +9 -9
  58. package/dist/navigation/MenuItem.css.map +1 -1
  59. package/dist/navigation/Page.css.map +1 -1
  60. package/dist/navigation/Stack.css +2 -2
  61. package/dist/navigation/Stack.css.map +1 -1
  62. package/dist/popper/Popper.css +4 -4
  63. package/dist/popper/Popper.css.map +1 -1
  64. package/dist/theme/SpectrumThemeProvider.d.ts.map +1 -1
  65. package/dist/theme/SpectrumThemeProvider.js +1 -0
  66. package/dist/theme/SpectrumThemeProvider.js.map +1 -1
  67. package/dist/theme/ThemeModel.d.ts +1 -1
  68. package/dist/theme/ThemeModel.d.ts.map +1 -1
  69. package/dist/theme/ThemeModel.js +56 -7
  70. package/dist/theme/ThemeModel.js.map +1 -1
  71. package/dist/theme/ThemePicker.d.ts +4 -0
  72. package/dist/theme/ThemePicker.d.ts.map +1 -0
  73. package/dist/theme/ThemePicker.js +25 -0
  74. package/dist/theme/ThemePicker.js.map +1 -0
  75. package/dist/theme/ThemeProvider.d.ts +2 -1
  76. package/dist/theme/ThemeProvider.d.ts.map +1 -1
  77. package/dist/theme/ThemeProvider.js +10 -8
  78. package/dist/theme/ThemeProvider.js.map +1 -1
  79. package/dist/theme/ThemeUtils.d.ts +5 -3
  80. package/dist/theme/ThemeUtils.d.ts.map +1 -1
  81. package/dist/theme/ThemeUtils.js +18 -22
  82. package/dist/theme/ThemeUtils.js.map +1 -1
  83. package/dist/theme/index.d.ts +1 -0
  84. package/dist/theme/index.d.ts.map +1 -1
  85. package/dist/theme/index.js +1 -0
  86. package/dist/theme/index.js.map +1 -1
  87. package/dist/theme/theme-dark/theme-dark-components.css +1 -1
  88. package/dist/theme/theme-dark/theme-dark-components.css.map +1 -1
  89. package/dist/theme/theme-dark/theme-dark-palette.css +1 -1
  90. package/dist/theme/theme-dark/theme-dark-palette.css.map +1 -1
  91. package/dist/theme/theme-dark/theme-dark-semantic-chart.css +1 -1
  92. package/dist/theme/theme-dark/theme-dark-semantic-chart.css.map +1 -1
  93. package/dist/theme/theme-dark/theme-dark-semantic-editor.css +1 -1
  94. package/dist/theme/theme-dark/theme-dark-semantic-editor.css.map +1 -1
  95. package/dist/theme/theme-dark/theme-dark-semantic-grid.css +1 -1
  96. package/dist/theme/theme-dark/theme-dark-semantic-grid.css.map +1 -1
  97. package/dist/theme/theme-dark/theme-dark-semantic.css +1 -1
  98. package/dist/theme/theme-dark/theme-dark-semantic.css.map +1 -1
  99. package/dist/theme/theme-light/theme-light-palette.css +1 -1
  100. package/dist/theme/theme-light/theme-light-palette.css.map +1 -1
  101. package/dist/theme/theme-spectrum/theme-spectrum-alias.module.css +1 -1
  102. package/dist/theme/theme-spectrum/theme-spectrum-alias.module.css.map +1 -1
  103. package/package.json +7 -7
  104. package/scss/BaseStyleSheet.scss +68 -60
  105. package/scss/bootstrap_imports.scss +49 -0
  106. package/scss/bootstrap_override_functions.scss +31 -0
  107. package/scss/bootstrap_override_mixins_background_variant.scss +16 -0
  108. package/scss/bootstrap_override_mixins_buttons.scss +123 -0
  109. package/scss/bootstrap_override_mixins_forms.scss +231 -0
  110. package/scss/bootstrap_override_mixins_text_emphasis.scss +21 -0
  111. package/scss/bootstrap_overrides.scss +144 -101
  112. package/scss/new_variables.scss +18 -0
  113. package/scss/util.scss +2 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/components",
3
- "version": "0.55.1-beta.9+fd8a6c65",
3
+ "version": "0.56.0",
4
4
  "description": "Deephaven React component library",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -25,10 +25,10 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@adobe/react-spectrum": "^3.29.0",
28
- "@deephaven/icons": "^0.55.1-beta.9+fd8a6c65",
29
- "@deephaven/log": "^0.55.1-beta.9+fd8a6c65",
30
- "@deephaven/react-hooks": "^0.55.1-beta.9+fd8a6c65",
31
- "@deephaven/utils": "^0.55.1-beta.9+fd8a6c65",
28
+ "@deephaven/icons": "^0.56.0",
29
+ "@deephaven/log": "^0.56.0",
30
+ "@deephaven/react-hooks": "^0.56.0",
31
+ "@deephaven/utils": "^0.56.0",
32
32
  "@fortawesome/fontawesome-svg-core": "^6.2.1",
33
33
  "@fortawesome/react-fontawesome": "^0.2.0",
34
34
  "@react-spectrum/theme-default": "^3.5.1",
@@ -52,7 +52,7 @@
52
52
  "react-dom": "^17.x"
53
53
  },
54
54
  "devDependencies": {
55
- "@deephaven/mocks": "^0.55.1-beta.9+fd8a6c65"
55
+ "@deephaven/mocks": "^0.56.0"
56
56
  },
57
57
  "files": [
58
58
  "dist",
@@ -65,5 +65,5 @@
65
65
  "publishConfig": {
66
66
  "access": "public"
67
67
  },
68
- "gitHead": "fd8a6c65d64b93ba69849b6053d5bbbd9d72c4dc"
68
+ "gitHead": "ce7c33f8f44023b8fa7c60164c1fd88fe049e2ea"
69
69
  }
@@ -2,11 +2,16 @@
2
2
  // Can be imported directly by Vite since it resolves bootstrap to node_modules/bootstrap
3
3
  @import './custom.scss';
4
4
  @import './util.scss';
5
- @import 'bootstrap/scss/bootstrap';
5
+ @import './bootstrap_imports.scss';
6
6
 
7
7
  :root {
8
8
  --dh-svg-inline-icon-size: 16px;
9
- --scrollbar-color: 255, 255, 255;
9
+
10
+ color: var(--dh-color-text);
11
+
12
+ .spectrum-theme-provider {
13
+ color: var(--dh-color-text);
14
+ }
10
15
  }
11
16
 
12
17
  //Various non-variable css overides
@@ -16,6 +21,14 @@ html {
16
21
  min-height: 100%;
17
22
  }
18
23
 
24
+ // override
25
+ .text-black-50 {
26
+ color: background-opacity(50) !important;
27
+ }
28
+ .text-white-50 {
29
+ color: foreground-opacity(50) !important;
30
+ }
31
+
19
32
  // deephaven-icons are designed on a 16px grid
20
33
  // and look best at that size. Default icon size back to 16px
21
34
  // vertical alignment changed to best match icon set against 14px text
@@ -26,19 +39,18 @@ html {
26
39
 
27
40
  body {
28
41
  min-height: 100%;
29
- background-color: var(--dh-color-background, $background);
42
+ background-color: $background;
30
43
  color: $foreground;
31
44
  margin: 0;
32
45
  padding: 0;
33
46
  overscroll-behavior: none;
34
47
  -ms-scroll-chaining: none;
35
- scrollbar-color: rgba($white, 0.1) rgba($black, 0.1); //applies to firefox only
48
+ scrollbar-color: foreground-opacity(10) background-opacity(10); //applies to firefox only
36
49
  }
37
50
 
38
51
  #root {
39
- background-color: var(--dh-color-background, $background);
40
-
41
52
  .app {
53
+ background-color: $background;
42
54
  height: 100vh;
43
55
  width: 100vw;
44
56
  }
@@ -91,7 +103,7 @@ a.custom-link,
91
103
  content: '';
92
104
  box-sizing: content-box;
93
105
  position: absolute;
94
- background: rgba($primary, $focus-bg-transparency);
106
+ background: accent-opacity(10);
95
107
  top: 0;
96
108
  left: 0;
97
109
  width: 100%;
@@ -135,18 +147,18 @@ span.btn-disabled-wrapper {
135
147
  border-radius: $border-radius;
136
148
 
137
149
  &:focus {
138
- background: rgba($primary, $focus-bg-transparency);
150
+ background: accent-opacity(10);
139
151
  border: $input-border-width solid $primary;
140
152
  box-shadow: $input-btn-focus-box-shadow;
141
153
  }
142
154
 
143
155
  &:hover {
144
- background: rgba($primary, $hover-bg-transparency);
156
+ background: accent-opacity(15);
145
157
  }
146
158
 
147
159
  &:active {
148
160
  content: '';
149
- background: rgba($primary, $active-bg-transparency);
161
+ background: accent-opacity(30);
150
162
  }
151
163
  }
152
164
  }
@@ -157,15 +169,13 @@ span.btn-disabled-wrapper {
157
169
  border-color: $danger;
158
170
 
159
171
  &:focus {
160
- box-shadow: 0 0 0 $btn-focus-width
161
- rgba(mix(color-yiq($background), $danger, 15%), 0.5);
172
+ box-shadow: 0 0 0 $btn-focus-width var(--dh-color-focus);
162
173
  }
163
174
 
164
175
  &:not(:disabled):not(.disabled):active {
165
- background: darken($danger, 10%);
166
- border-color: darken($danger, 10%);
167
- box-shadow: 0 0 0 $btn-focus-width
168
- rgba(mix(color-yiq($background), $danger, 15%), 0.5);
176
+ background: var(--dh-color-negative-down-bg);
177
+ border-color: var(--dh-color-negative-down-bg);
178
+ box-shadow: 0 0 0 $btn-focus-width var(--dh-color-focus);
169
179
  }
170
180
  }
171
181
 
@@ -180,8 +190,7 @@ span.btn-disabled-wrapper {
180
190
 
181
191
  .btn-spinner {
182
192
  padding: $btn-padding-y 1rem;
183
- .fa-layers,
184
- .loading-spinner {
193
+ .fa-layers {
185
194
  margin-right: 0.5rem;
186
195
  }
187
196
  }
@@ -226,7 +235,7 @@ span.btn-disabled-wrapper {
226
235
  text-decoration: none;
227
236
  box-shadow: none;
228
237
  &::after {
229
- background: rgba($primary, $focus-bg-transparency);
238
+ background: accent-opacity(10);
230
239
  border: $input-border-width solid $primary;
231
240
  box-shadow: $input-btn-focus-box-shadow;
232
241
  }
@@ -234,14 +243,14 @@ span.btn-disabled-wrapper {
234
243
 
235
244
  &:hover {
236
245
  &::after {
237
- background: rgba($primary, $hover-bg-transparency);
246
+ background: accent-opacity(15);
238
247
  }
239
248
  }
240
249
 
241
250
  &:active {
242
251
  &::after {
243
252
  content: '';
244
- background: rgba($primary, $active-bg-transparency);
253
+ background: accent-opacity(30);
245
254
  }
246
255
  }
247
256
  }
@@ -296,51 +305,49 @@ span.btn-disabled-wrapper {
296
305
  padding-left: $spacer-1;
297
306
  padding-right: $spacer-1;
298
307
  border-radius: $border-radius;
299
- background: $gray-600;
300
- border: 1px solid $input-border-color;
301
- color: $gray-300;
308
+ background: var(--dh-color-action-bg);
309
+ border: 1px solid var(--dh-color-action-border);
310
+ color: var(--dh-color-action-fg);
302
311
 
303
312
  &.active {
304
- border-color: $primary;
305
- background: $primary;
306
- color: $gray-100;
313
+ border-color: var(--dh-color-action-active-border);
314
+ background: var(--dh-color-action-active-bg);
315
+ color: var(--dh-color-action-active-fg);
307
316
 
308
- &:focus {
317
+ &:focus-visible {
309
318
  border: 1px solid $input-focus-border-color;
310
319
  }
311
320
 
312
321
  &:not(:disabled):not(.disabled):hover {
313
- background: $primary;
322
+ color: var(--dh-color-action-active-hover-fg);
323
+ background: var(--dh-color-action-active-hover-bg);
324
+ border-color: var(--dh-color-action-active-hover-border);
314
325
  }
315
326
  }
316
327
 
317
328
  &.disabled,
318
329
  &:disabled {
319
- border: 1px solid $black;
320
- color: $gray-300;
330
+ background-color: var(--dh-color-action-disabled-bg);
331
+ border: 1px solid var(--dh-color-action-disabled-border);
332
+ color: var(--dh-color-action-disabled-fg);
321
333
  cursor: not-allowed;
322
334
  }
323
335
 
324
- &:focus {
336
+ &:focus-visible {
325
337
  border: 1px solid $input-focus-border-color;
326
338
  }
327
339
 
328
340
  &:not(:disabled):not(.disabled):hover {
329
- background-color: $gray-500;
330
- color: $gray-200;
341
+ background-color: var(--dh-color-action-hover-bg);
342
+ border: 1px solid var(--dh-color-action-hover-border);
343
+ color: var(--dh-color-action-hover-fg);
331
344
  }
332
345
 
333
346
  &:not(:disabled):not(.disabled):active {
334
- background: $gray-700;
347
+ background: var(--dh-color-action-down-bg);
335
348
  }
336
349
  }
337
350
 
338
- .btn-secondary:hover {
339
- // steal primary hover state to look more hovered, less disabled
340
- background-color: $primary-hover;
341
- border-color: $primary-hover;
342
- }
343
-
344
351
  .btn-secondary.disabled,
345
352
  .btn-secondary:disabled {
346
353
  // look more disabled
@@ -408,18 +415,18 @@ form label small {
408
415
  box-shadow: 0 0 0 0.2rem var(--dh-color-form-control-error-shadow);
409
416
  }
410
417
 
411
- .form-control.btn:focus {
418
+ .form-control.btn:focus-visible {
412
419
  box-shadow: $input-btn-focus-box-shadow;
413
420
  }
414
421
 
415
422
  .form-control:disabled {
416
423
  border-color: $black;
417
- color: darken($gray-400, 5%);
424
+ color: $gray-500;
418
425
  cursor: not-allowed;
419
426
  }
420
427
 
421
428
  .form-control:disabled::placeholder {
422
- color: darken($gray-400, 5%);
429
+ color: $gray-500;
423
430
  }
424
431
 
425
432
  .form-control[type='password'] {
@@ -617,7 +624,7 @@ input[type='number']::-webkit-inner-spin-button {
617
624
  border-color: $gray-300;
618
625
  &:focus,
619
626
  &.focus {
620
- box-shadow: 0 0 0 0.2rem rgba(91, 90, 92, 20%);
627
+ box-shadow: 0 0 0 0.2rem background-opacity(20);
621
628
  }
622
629
  }
623
630
  }
@@ -641,26 +648,26 @@ input[type='number']::-webkit-inner-spin-button {
641
648
  ::selection {
642
649
  //blink/webkit
643
650
  color: $foreground;
644
- background: rgba($text-select-color, 0.99);
651
+ background: var(--dh-color-text-highlight);
645
652
  opacity: 1;
646
653
  }
647
654
 
648
655
  ::-moz-selection {
649
656
  //moz
650
657
  color: $foreground;
651
- background: rgba($text-select-color, 0.99);
658
+ background: var(--dh-color-text-highlight);
652
659
  opacity: 1;
653
660
  }
654
661
 
655
662
  .masked-input::selection {
656
663
  //blink/webkit
657
- background: rgba($primary, 0.7);
664
+ background: var(--dh-color-text-highlight);
658
665
  opacity: 1;
659
666
  }
660
667
 
661
668
  .masked-input::-moz-selection {
662
669
  //moz
663
- background: rgba($primary, 0.7);
670
+ background: var(--dh-color-text-highlight);
664
671
  opacity: 1;
665
672
  }
666
673
 
@@ -672,7 +679,7 @@ input[type='number']::-webkit-inner-spin-button {
672
679
 
673
680
  // style the same as monaco scrollbar
674
681
  ::-webkit-scrollbar-thumb {
675
- background: rgba(var(--scrollbar-color), 0.18);
682
+ background: hsla(var(--dh-color-scrollbar-hsl), 0.18);
676
683
  border-radius: 0;
677
684
  }
678
685
 
@@ -682,30 +689,31 @@ input[type='number']::-webkit-inner-spin-button {
682
689
  }
683
690
 
684
691
  ::-webkit-scrollbar-corner {
685
- background: rgba(0, 0, 0, 10%);
692
+ background: background-opacity(10);
686
693
  }
687
694
 
688
695
  ::-webkit-scrollbar-track:horizontal {
689
- border-top: 1px solid rgba(var(--scrollbar-color), 0.15);
696
+ border-top: 1px solid hsla(var(--dh-color-scrollbar-hsl), 0.15);
690
697
  }
691
698
 
692
699
  ::-webkit-scrollbar-track:vertical {
693
- border-left: 1px solid rgba(var(--scrollbar-color), 0.15);
700
+ border-left: 1px solid hsla(var(--dh-color-scrollbar-hsl), 0.15);
694
701
  }
695
702
 
696
703
  ::-webkit-scrollbar-thumb:hover {
697
- background: rgba(var(--scrollbar-color), 0.25);
704
+ background: hsla(var(--dh-color-scrollbar-hsl), 0.25);
698
705
  }
699
706
 
700
707
  ::-webkit-scrollbar-thumb:active {
701
- background: rgba(var(--scrollbar-color), 0.35);
708
+ background: hsla(var(--dh-color-scrollbar-hsl), 0.35);
702
709
  }
703
710
 
704
711
  // used in inverted color sections, like light modals
705
712
  .theme-bg-light {
706
- --scrollbar-color: 0, 0, 0;
713
+ --dh-color-scrollbar-hsl: #{var(--dh-color-bg-hsl)};
707
714
 
708
- scrollbar-color: rgba($black, 0.5) rgba($black, 0.3); // firefox
715
+ scrollbar-color: hsla(var(--dh-color-scrollbar-hsl), 0.5)
716
+ hsla(var(--dh-color-scrollbar-hsl), 0.3); // firefox
709
717
  }
710
718
 
711
719
  /********** Monaco Overides *********/
@@ -804,7 +812,7 @@ input[type='number']::-webkit-inner-spin-button {
804
812
 
805
813
  //make the dotted duplicate focus line on firefox go away
806
814
  &:-moz-focusring {
807
- color: rgba(0, 0, 0, 0%);
815
+ color: transparent;
808
816
  text-shadow: 0 0 0 $foreground !important;
809
817
  }
810
818
 
@@ -842,7 +850,7 @@ input[type='number']::-webkit-inner-spin-button {
842
850
  solid-gradient($gray-700);
843
851
 
844
852
  &:-moz-focusring {
845
- color: rgba(0, 0, 0, 0%);
853
+ color: transparent;
846
854
  text-shadow: 0 0 0 $foreground !important;
847
855
  }
848
856
  }
@@ -852,7 +860,7 @@ input[type='number']::-webkit-inner-spin-button {
852
860
  solid-gradient($gray-200);
853
861
 
854
862
  &:-moz-focusring {
855
- color: rgba(0, 0, 0, 0%);
863
+ color: transparent;
856
864
  text-shadow: 0 0 0 $background !important;
857
865
  }
858
866
  }
@@ -0,0 +1,49 @@
1
+ /*!
2
+ * Bootstrap v4.6.2 (https://getbootstrap.com/)
3
+ * Copyright 2011-2022 The Bootstrap Authors
4
+ * Copyright 2011-2022 Twitter, Inc.
5
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6
+ */
7
+
8
+ /*
9
+ * Deephaven manually imports only the necessary bootstrap files.
10
+ * See `bootstrap/scss/bootstrap.scss` in `node_modules` for the original list of imports.
11
+ */
12
+
13
+ @import 'bootstrap/scss/functions';
14
+
15
+ // patch the functions
16
+ @import './bootstrap_override_functions.scss';
17
+
18
+ @import 'bootstrap/scss/variables';
19
+ @import 'bootstrap/scss/mixins';
20
+
21
+ // patch the mixins
22
+ @import './bootstrap_override_mixins_background_variant.scss';
23
+ @import './bootstrap_override_mixins_buttons.scss';
24
+ @import './bootstrap_override_mixins_forms.scss';
25
+ @import './bootstrap_override_mixins_text_emphasis.scss';
26
+
27
+ // $theme-colors is used by button mixins. We don't want to use the `dark` or `light`
28
+ // variants since they don't align with the semantics we use for theming.
29
+ $theme-colors: map-remove($theme-colors, 'dark', 'light');
30
+
31
+ @import 'bootstrap/scss/root';
32
+ @import 'bootstrap/scss/reboot';
33
+ @import 'bootstrap/scss/type';
34
+ @import 'bootstrap/scss/code';
35
+ @import 'bootstrap/scss/grid';
36
+ @import 'bootstrap/scss/forms';
37
+ @import 'bootstrap/scss/buttons';
38
+ @import 'bootstrap/scss/transitions';
39
+ @import 'bootstrap/scss/dropdown';
40
+ @import 'bootstrap/scss/button-group';
41
+ @import 'bootstrap/scss/input-group';
42
+ @import 'bootstrap/scss/custom-forms';
43
+ @import 'bootstrap/scss/nav';
44
+ @import 'bootstrap/scss/navbar';
45
+ @import 'bootstrap/scss/progress';
46
+ @import 'bootstrap/scss/close';
47
+ @import 'bootstrap/scss/modal';
48
+ @import 'bootstrap/scss/spinners';
49
+ @import 'bootstrap/scss/utilities';
@@ -0,0 +1,31 @@
1
+ // Bootstrap overrides for `bootstrap/scss/_functions.scss`
2
+
3
+ // Color contrast
4
+ // DH Customization: Add support for dh-color variables
5
+ @function color-yiq(
6
+ $color,
7
+ $dark: var(--dh-color-contrast-dark),
8
+ $light: var(--dh-color-contrast-light)
9
+ ) {
10
+ // if $color is a hex color, use the default color-yiq function
11
+ @if type-of($color) == 'color' {
12
+ $r: red($color);
13
+ $g: green($color);
14
+ $b: blue($color);
15
+
16
+ $yiq: (($r * 299) + ($g * 587) + ($b * 114)) * 0.001;
17
+
18
+ @if $yiq >= $yiq-contrasted-threshold {
19
+ @return $dark;
20
+ } @else {
21
+ @return $light;
22
+ }
23
+ }
24
+
25
+ $contrast-color: var(
26
+ --dh-color-#{$color}-contrast,
27
+ var(--dh-color-contrast-light)
28
+ );
29
+
30
+ @return $contrast-color;
31
+ }
@@ -0,0 +1,16 @@
1
+ // Bootstrap mixin overrides for `bootstrap/scss/mixins/_background-variant.scss`
2
+ @use 'sass:map';
3
+
4
+ @mixin bg-variant($parent, $bootstrap-value, $ignore-warning: false) {
5
+ $semantic-value: map.get($bootstrap-dh-semantic-map, $bootstrap-value) or '';
6
+
7
+ #{$parent} {
8
+ background-color: var(--dh-color-#{$semantic-value}-bg) !important;
9
+ }
10
+ a#{$parent},
11
+ button#{$parent} {
12
+ @include hover-focus {
13
+ background-color: var(--dh-color-#{$semantic-value}-down-bg) !important;
14
+ }
15
+ }
16
+ }
@@ -0,0 +1,123 @@
1
+ // Bootstrap mixin overrides for `bootstrap/scss/mixins/_buttons.scss`
2
+ @use 'sass:map';
3
+
4
+ // This mixin overrides the one in `bootstrap/scss/mixins/_buttons.scss`
5
+ // $bootstrap-value comes from $theme-colors map (see `bootstrap/scss/_buttons.scss`)
6
+ @mixin button-variant($bootstrap-value, $_) {
7
+ $semantic-value: map.get($bootstrap-dh-semantic-map, $bootstrap-value) or '';
8
+
9
+ // DH Customization: Convert semantic value to css variables
10
+ $background: var(--dh-color-#{$semantic-value}-bg);
11
+ $border: var(--dh-color-#{$semantic-value}-bg);
12
+ $boxshadow-color: hsla(var(--dh-color-#{$semantic-value}-hsl), 0.5);
13
+ $hover-background: var(--dh-color-#{$semantic-value}-hover-bg);
14
+ $hover-border: var(--dh-color-#{$semantic-value}-hover-bg);
15
+ $active-background: var(--dh-color-#{$semantic-value}-down-bg);
16
+ $active-border: var(--dh-color-#{$semantic-value}-down-bg);
17
+ $color: var(--dh-color-#{$semantic-value}-contrast);
18
+
19
+ color: $color;
20
+ font-weight: var(--spectrum-global-font-weight-bold);
21
+ @include gradient-bg($background);
22
+
23
+ border-color: $border;
24
+ @include box-shadow($btn-box-shadow);
25
+
26
+ @include hover {
27
+ color: $color;
28
+ @include gradient-bg($hover-background);
29
+
30
+ border-color: $hover-border;
31
+ }
32
+
33
+ &:focus {
34
+ box-shadow: none;
35
+ }
36
+
37
+ &:focus-visible,
38
+ &.focus {
39
+ color: $color;
40
+ @include gradient-bg($hover-background);
41
+
42
+ border-color: $hover-border;
43
+ box-shadow: 0 0 0 $btn-focus-width $boxshadow-color;
44
+ }
45
+
46
+ // Disabled comes first so active can properly restyle
47
+ &.disabled,
48
+ &:disabled {
49
+ color: $color;
50
+ background-color: $background;
51
+ border-color: $border;
52
+ // Remove CSS gradients if they're enabled
53
+ @if $enable-gradients {
54
+ background-image: none;
55
+ }
56
+ }
57
+
58
+ &:not(:disabled):not(.disabled):active,
59
+ &:not(:disabled):not(.disabled).active,
60
+ .show > &.dropdown-toggle {
61
+ color: $color;
62
+ background-color: $active-background;
63
+ @if $enable-gradients {
64
+ background-image: none; // Remove the gradient for the pressed/active state
65
+ }
66
+
67
+ border-color: $active-border;
68
+
69
+ &:focus-visible {
70
+ box-shadow: 0 0 0 $btn-focus-width $boxshadow-color;
71
+ }
72
+ }
73
+ }
74
+
75
+ @mixin button-outline-variant($bootstrap-value) {
76
+ $semantic-value: map.get($bootstrap-dh-semantic-map, $bootstrap-value) or '';
77
+
78
+ $color: var(--dh-color-#{$semantic-value}-bg);
79
+ $boxshadow-color: hsla(var(--dh-color-#{$semantic-value}-hsl), 0.5);
80
+ $hover-color: color-yiq($semantic-value);
81
+ $hover-background: var(--dh-color-#{$semantic-value}-hover-bg);
82
+ $active-background: var(--dh-color-#{$semantic-value}-down-bg);
83
+
84
+ color: $color;
85
+ border-color: $color;
86
+
87
+ @include hover {
88
+ color: $hover-color;
89
+ background-color: $hover-background;
90
+ border-color: $hover-background;
91
+ }
92
+
93
+ &:focus,
94
+ &.focus {
95
+ box-shadow: 0 0 0 $btn-focus-width $boxshadow-color;
96
+ }
97
+
98
+ &.disabled,
99
+ &:disabled {
100
+ color: $color;
101
+ background-color: transparent;
102
+ }
103
+
104
+ &:not(:disabled):not(.disabled):active,
105
+ &:not(:disabled):not(.disabled).active,
106
+ .show > &.dropdown-toggle {
107
+ color: color-yiq($semantic-value);
108
+ background-color: $active-background;
109
+ border-color: $active-background;
110
+
111
+ &:focus {
112
+ @if $enable-shadows and $btn-active-box-shadow != none {
113
+ @include box-shadow(
114
+ $btn-active-box-shadow,
115
+ 0 0 0 $btn-focus-width $boxshadow-color
116
+ );
117
+ } @else {
118
+ // Avoid using mixin so we can pass custom focus shadow properly
119
+ box-shadow: 0 0 0 $btn-focus-width $boxshadow-color;
120
+ }
121
+ }
122
+ }
123
+ }