@wwtdev/bsds-css 2.29.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 +2182 -1460
  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 -216
  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 -183
  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 -212
  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 -179
  93. package/dist/components/vertical-navigation.css +0 -276
  94. package/dist/wwt-bsds-wc-base.css +0 -1129
@@ -1,70 +0,0 @@
1
- :where(.bs-input-search) {
2
- display: inline-block;
3
- width: 100%;
4
- }
5
-
6
- .bs-input-search :where(.bs-icon svg) {
7
- box-sizing: content-box;
8
- }
9
-
10
- .bs-input-search :where([data-component="bs-icon-search"]) {
11
- --icon-size: var(--search-icon-size, 1.75rem);
12
- padding: var(--search-icon-padding, 0 0 0 .75rem);
13
- }
14
-
15
- /* Clear Button */
16
- .bs-input-search button {
17
- align-items: center;
18
- background-color: transparent;
19
- cursor: pointer;
20
- display: flex;
21
- height: 100%;
22
- padding-left: 0.75rem;
23
- padding-right: 0.75rem;
24
- transition: transform 100ms ease-in-out;
25
- }
26
-
27
- .bs-input-search button:where(:active) {
28
- transform: scale(0.97);
29
- transform-origin: center;
30
- box-shadow: inset 0px 0px 4px 1px var(--bs-blue-base);
31
- }
32
-
33
- .bs-input-search button:where(:focus) {
34
- border-radius: .25rem;
35
- box-shadow: var(--focus-border) 0px 0px 0px 1px inset;
36
- z-index: 1;
37
- }
38
-
39
-
40
- /* Filter variant */
41
-
42
- .bs-input-search:where([data-variant="filter"]) {
43
- --focus-border: transparent;
44
- --input-border: transparent;
45
- --input-addon-height: 1.5rem;
46
- --input-caret: var(--bs-blue-base);
47
- --input-padding-block: 0 0.125rem;
48
- --input-padding-inline: 0.5rem;
49
- --input-placeholder: var(--bs-ink-light);
50
- --input-text-size: var(--bs-text-sm);
51
- --search-icon-size: 1rem;
52
- --search-icon-padding: 0;
53
- }
54
-
55
- /* Filter variant: persist placeholder text color (`ink-light`) in dark mode */
56
- :where(.dark) .bs-input-search:where([data-variant="filter"]) :is(input.bs-input)::placeholder {
57
- --input-placeholder: var(--bs-ink-light);
58
- }
59
-
60
- /* Filter variant: cancels out base hover state styles */
61
- .bs-input-addon:where([data-variant="filter"]):hover {
62
- --input-bg: var(--bs-bg-base);
63
- }
64
-
65
- /* -------- Disabled styles -------- */
66
- .bs-input-addon:where([data-variant="filter"][data-disabled="true"]),
67
- .bs-input-addon:where([data-variant="filter"][data-disabled="true"]) :is(.bs-button, .bs-input) {
68
- --input-bg: var(--bs-bg-base);
69
- --input-border: transparent;
70
- }
@@ -1,36 +0,0 @@
1
- :where(label, legend),
2
- label:where(.bs-label) {
3
- display: inline-block;
4
- position: relative;
5
- width: 100%;
6
- }
7
-
8
- .bs-label,
9
- :where(label, legend) {
10
- --label-color: var(--bs-ink-base);
11
- color: var(--label-color);
12
- font-size: var(--bs-text-sm);
13
- font-weight: 600;
14
- line-height: var(--bs-leading-base);
15
- }
16
-
17
- /* Required asterisk */
18
- :where(label, legend) :where([data-required]:not([data-required="false"])),
19
- .bs-label :where([data-required="true"]) {
20
- color: var(--label-asterisk-color, var(--bs-ink-red));
21
- }
22
-
23
- /* Disabled state */
24
- :where(label[data-disabled]:not([data-disabled="false"])),
25
- :where(label[data-disabled]:not([data-disabled="false"])) *,
26
- .bs-label:where([data-disabled="true"]),
27
- .bs-label:where([data-disabled="true"]) * {
28
- --label-asterisk-color: transparent;
29
- --label-color: var(--bs-ink-disabled);
30
- }
31
-
32
- .bs-label:where(:has(+ input), :has(+ .bs-input-addon), :has(+ :not(label) .bs-input-addon))::after {
33
- content: '';
34
- inset: 0 0 -.25rem 0;
35
- position: absolute;
36
- }
@@ -1,150 +0,0 @@
1
- .bs-switch {
2
- --box-shadow: var(--bs-ink-base);
3
- --ball-background: var(--bs-white);
4
- --ball-diameter: 1rem;
5
- --inner-text-line-height: 1;
6
- --inner-text-size: var(--bs-text-sm);
7
- --inner-text-width: 1rem;
8
- --inner-text-padding: 0.5rem;
9
- --offset: 0.25rem;
10
- --offset-double: .5rem;
11
- --switch-background: var(--bs-gray-400);
12
- --switch-height: 1.5rem;
13
- --switch-width: 2.5rem;
14
-
15
- border: none;
16
- border-radius: 100vw;
17
- cursor: pointer;
18
- height: var(--switch-height);
19
- position: relative;
20
- }
21
-
22
- .bs-switch:where([data-size="sm"]) {
23
- --ball-diameter: .625rem;
24
- --inner-text-line-height: 1.6666;
25
- --inner-text-size: var(--bs-text-xs);
26
- --inner-text-width: .75rem;
27
- --inner-text-padding: 0.375rem;
28
- --offset: 0.1875rem;
29
- --offset-double: .375rem;
30
- --switch-height: 1rem;
31
- --switch-width: 1.875rem;
32
- }
33
-
34
- .bs-switch input,
35
- .bs-switch:where([data-size="sm"]) input {
36
- cursor: pointer;
37
- height: 100%;
38
- opacity: 0;
39
- position: absolute;
40
- width: 100%;
41
- }
42
-
43
- .bs-switch span {
44
- align-items: center;
45
- background-color: var(--switch-background);
46
- border-radius: 100vw;
47
- display: inline-block;
48
- font-size: var(--inner-text-size);
49
- height: 100%;
50
- padding: 0 var(--inner-text-padding);
51
- pointer-events: none;
52
- position: relative;
53
- transition: 250ms;
54
- width: var(--switch-width);
55
- }
56
-
57
- .bs-switch :where(input:checked) ~ :where(span),
58
- .bs-switch:where([aria-pressed]:not([aria-pressed="false"])) :where(span) {
59
- --switch-background: var(--bs-blue-base);
60
- }
61
-
62
- /* Toggle "ball" */
63
- .bs-switch :where(span)::before {
64
- background-color: var(--ball-background);
65
- border-radius: 50%;
66
- box-sizing: border-box;
67
- content: '';
68
- height: var(--ball-diameter);
69
- left: var(--offset);
70
- position: absolute;
71
- top: 50%;
72
- transform: translate(0, -50%);
73
- transition: inherit;
74
- width: var(--ball-diameter);
75
- }
76
-
77
- .bs-switch :where(input:checked) ~ :where(span)::before,
78
- .bs-switch:where([aria-pressed]:not([aria-pressed="false"])) :where(span)::before {
79
- transform: translate(calc(var(--switch-width) - var(--offset-double) - var(--ball-diameter)), -50%);
80
- }
81
-
82
- .bs-switch :where(input:checked) ~ :where(span[data-inner-on-label][data-inner-off-label])::before,
83
- .bs-switch:where([aria-pressed]:not([aria-pressed="false"])) :where(span[data-inner-on-label][data-inner-off-label])::before {
84
- transform: translate(calc(var(--switch-width) - var(--offset-double) - var(--ball-diameter)), -50%);
85
- }
86
-
87
-
88
- /* Inner "on/off" text */
89
- .bs-switch :where(span)::after {
90
- align-items: center;
91
- color: var(--ball-background);
92
- content: var(--inner-label-text);
93
- display: flex;
94
- height: 100%;
95
- justify-content: var(--inner-label-position, flex-start);
96
- left: 0;
97
- line-height: var(--inner-text-line-height);
98
- padding: var(--inner-text-padding);
99
- position: absolute;
100
- text-transform: capitalize;
101
- top: 0;
102
- width: 100%;
103
- }
104
-
105
- .bs-switch :where([data-inner-on-label][data-inner-off-label]) {
106
- --switch-width: 3.5rem;
107
- }
108
-
109
- .bs-switch:where([data-size="sm"]) :where([data-inner-on-label][data-inner-off-label]) {
110
- --switch-width: 2.625rem;
111
- }
112
-
113
- .bs-switch :where(input:not(:checked)) ~ :where([data-inner-on-label][data-inner-off-label])::after,
114
- .bs-switch:where([aria-pressed="false"]) :where([data-inner-on-label][data-inner-off-label])::after {
115
- --inner-label-position: flex-end;
116
- --inner-label-text: attr(data-inner-off-label);
117
- }
118
-
119
- .bs-switch :where(input:checked) ~ :where([data-inner-on-label][data-inner-off-label])::after,
120
- .bs-switch:where([aria-pressed]:not([aria-pressed="false"])) :where([data-inner-on-label][data-inner-off-label])::after {
121
- --inner-label-text: attr(data-inner-on-label);
122
- }
123
-
124
- /* Focus state */
125
-
126
- .bs-switch :where(input:focus-visible) + :where(span),
127
- .bs-switch:where(:focus-visible) :where(button span) {
128
- box-shadow: 0 0 0 2px var(--offset-color, var(--bs-bg-base)),
129
- 0 0 0 4px var(--outline-color, var(--bs-blue-base));
130
- outline: 2px solid transparent;
131
- }
132
- :where(.box) .bs-switch :where(input:focus-visible) + :where(span),
133
- :where(.box) .bs-switch:where(:focus-visible) :where(button span) {
134
- --offset-color: var(--bs-bg-medium);
135
- }
136
- :where(.box[data-invert]) .bs-switch :where(input:focus-visible) + :where(span),
137
- :where(.box[data-invert]) .bs-switch:where(:focus-visible) :where(button span) {
138
- --offset-color: var(--bs-bg-invert-to-base);
139
- }
140
-
141
- /* Disabled state */
142
- .bs-switch:where([data-disabled]:not([data-disabled="false"]), :disabled, [disabled]),
143
- .bs-switch:where([data-disabled]:not([data-disabled="false"]), :disabled, [disabled]) :is(input ~ span, button span) {
144
- --ball-background: var(--bs-ink-disabled);
145
- --switch-background: var(--bs-bg-disabled);
146
- }
147
-
148
- .bs-switch input:where(:disabled) {
149
- cursor: default;
150
- }
@@ -1,201 +0,0 @@
1
- :where(label + input, label > input):where(:not([type='checkbox'], [type='radio'])),
2
- :where(label + textarea, label > textarea),
3
- :where(label + select, label > select) {
4
- margin-top: 0.25rem;
5
- }
6
-
7
- /*
8
- Custom properties:
9
- --input-bg (background color)
10
- --input-border (border color)
11
- --input-border-width (border width)
12
- --input-caret (caret color)
13
- --input-padding-block (padding block)
14
- --input-padding-inline (padding inline)
15
- --input-placeholder (placeholder color)
16
- --input-text-size (font size)
17
- */
18
-
19
- input:where(:not([type='checkbox'], [type='radio'], [type='file'], [type='range'])),
20
- textarea,
21
- select,
22
- :is(.bs-input, .bs-select, .bs-textarea) {
23
- appearance: none;
24
- background-color: var(--input-bg, var(--bs-bg-base));
25
- border-color: var(--input-border, var(--bs-border-input));
26
- border-radius: 0.25rem;
27
- border-style: solid;
28
- border-width: var(--input-border-width, 1px);
29
- caret-color: var(--input-caret, var(--bs-blue-base));
30
- color: var(--bs-ink-base);
31
- font-size: var(--input-text-size, var(--bs-text-base));
32
- font-weight: 400;
33
- height: 2.5rem;
34
- line-height: var(--bs-leading-base);
35
- padding-block: var(--input-padding-block, 0.0625rem);
36
- padding-inline: var(--input-padding-inline, 0.75rem);
37
- }
38
-
39
- :where(.dark) input:where(:not([type='checkbox'], [type='radio'], [type='file'], [type='range'])),
40
- :where(.dark) textarea,
41
- :where(.dark) select,
42
- :where(.dark) :is(.bs-input, .bs-select, .bs-textarea) {
43
- --input-bg: transparent;
44
- }
45
-
46
- input:where(:not([type='checkbox'], [type='radio'], [type='file'], [type='range'])),
47
- textarea,
48
- select,
49
- :is(.bs-input, .bs-select, .bs-textarea) {
50
- width: 100%;
51
- }
52
-
53
- input:where([type='text'], [type='email'], [type='url']),
54
- select,
55
- .bs-input:where([type='text'], [type='email'], [type='url']),
56
- :is(.bs-input, .bs-select, .bs-textarea) {
57
- text-overflow: ellipsis;
58
- }
59
-
60
- .bs-textarea,
61
- textarea {
62
- height: auto;
63
- padding-block: 0.5rem;
64
- resize: vertical;
65
- }
66
-
67
- :is(input, textarea, select)::placeholder,
68
- :is(.bs-input, .bs-select, .bs-textarea)::placeholder,
69
- :is(.bs-input, .bs-select, .bs-textarea):where([data-placeholder="true"]) {
70
- color: var(--input-placeholder, var(--bs-violet-100));
71
- }
72
-
73
- :where(.dark) :is(input, textarea, select)::placeholder,
74
- :where(.dark) :is(.bs-input, .bs-select, .bs-textarea)::placeholder,
75
- :where(.dark) :is(.bs-input, .bs-select, .bs-textarea):where([data-placeholder="true"]) {
76
- --input-placeholder: var(--bs-violet-200);
77
- }
78
-
79
- :is(input, textarea, select):where(:focus-visible)::placeholder,
80
- :is(.bs-input, .bs-select, .bs-textarea):where(:focus-visible)::placeholder {
81
- opacity: 0;
82
- }
83
-
84
- /* FOCUS state */
85
- :is(input:where(:not([type='checkbox'], [type='radio'])), textarea, select):where(:focus-visible),
86
- :is(.bs-input, .bs-select, .bs-textarea):where(:focus-visible),
87
- :is(select, .bs-select):where(:focus) {
88
- --input-border: var(--bs-blue-base);
89
- outline-style: none;
90
- outline-width: 0px;
91
- }
92
-
93
- /* OPEN state */
94
- :is(select, .bs-select):where(:open) {
95
- background: var(--bs-bg-base-to-light);
96
- }
97
-
98
- /* DISABLED state */
99
- :is(input:where(:not([type='checkbox'],[type='radio'])), textarea, select):where(:disabled),
100
- :is(.bs-input, .bs-select, .bs-textarea):where(:disabled) {
101
- --input-border: var(--bs-ink-disabled);
102
- --input-bg: var(--bs-bg-disabled);
103
- color: var(--bs-ink-disabled);
104
- }
105
-
106
- /* Text inputs should not have a border when disabled */
107
- :is(input:where(:not([type]),[type="text"],[type="number"],[type="email"],[type="password"],[type="url"])):where(:disabled),
108
- textarea:where(:disabled),
109
- select:where(:disabled),
110
- :is(.bs-input, .bs-select, .bs-textarea):where(:disabled) {
111
- --input-border-width: 0px;
112
- }
113
-
114
- /* Errors and Messages */
115
- :is(input, select, textarea):where([data-error]:not([data-error="false"])),
116
- :is(.bs-input, .bs-select, .bs-textarea):where([data-error="true"]) {
117
- --input-border: var(--bs-ink-red);
118
- }
119
-
120
- /*
121
- Removes the built-in 'margin' on bottom of textarea
122
- see https://bugs.chromium.org/p/chromium/issues/detail?id=89530
123
- */
124
- :has(> textarea:only-child),
125
- :has(> .bs-textarea:only-child) {
126
- display: block;
127
- line-height: 0;
128
- }
129
-
130
- /* chrome user agent styling was applying opacity: 0.7 */
131
- :where(select:disabled) {
132
- opacity: 1;
133
- }
134
-
135
- :is(input, textarea, select):disabled::placeholder,
136
- :is(input, textarea, select)[disabled]::placeholder,
137
- :is(.bs-input, .bs-textarea, .bs-select):disabled::placeholder,
138
- :is(.bs-input, .bs-textarea, .bs-select)[disabled]::placeholder {
139
- opacity: 0;
140
- }
141
-
142
- /* Select */
143
-
144
- select,
145
- .bs-select {
146
- /* URL Encoded SVG dropdown caret so there is something there */
147
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath fill='%230A0B19' d='M8.048 13.375a.745.745 0 0 1-.526-.217L0 5.686l1.053-1.061 6.995 6.95 6.897-6.85 1.053 1.06-7.423 7.373a.745.745 0 0 1-.527.217Z'/%3E%3C/svg%3E");
148
- background-position: right 0.75rem center;
149
- background-repeat: no-repeat;
150
- background-size: 1em 1em;
151
- padding-right: var(--bs-space-9);
152
- }
153
- select[multiple],
154
- .bs-select[multiple] {
155
- background-image: none;
156
- height: auto;
157
- }
158
-
159
- :where(.dark) select,
160
- :where(.dark) .bs-select {
161
- /* URL Encoded SVG dropdown caret so there is something there */
162
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath fill='%23ffffff' d='M8.048 13.375a.745.745 0 0 1-.526-.217L0 5.686l1.053-1.061 6.995 6.95 6.897-6.85 1.053 1.06-7.423 7.373a.745.745 0 0 1-.527.217Z'/%3E%3C/svg%3E");
163
- }
164
-
165
- :where(.dark) select:where(:disabled),
166
- :where(.dark) .bs-select:where(:disabled) {
167
- /* URL Encoded SVG dropdown caret so there is something there */
168
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath fill='%23555775' d='M8.048 13.375a.745.745 0 0 1-.526-.217L0 5.686l1.053-1.061 6.995 6.95 6.897-6.85 1.053 1.06-7.423 7.373a.745.745 0 0 1-.527.217Z'/%3E%3C/svg%3E");
169
- }
170
-
171
- /* Allows for styling a button to look like a select input */
172
- :where(button).bs-select {
173
- align-items: center;
174
- /* Remove this for buttons since they will have the caret added */
175
- background-image: none;
176
- cursor: pointer;
177
- display: flex;
178
- padding-right: var(--input-padding-inline, 0.75rem);
179
- }
180
-
181
- :where(.dark) :where(button).bs-select,
182
- :where(.dark) :where(button).bs-select:where(:disabled) {
183
- background-image: none;
184
- }
185
-
186
- :where(button).bs-select :where(*:first-child) {
187
- flex-grow: 1;
188
- text-align: left;
189
- }
190
-
191
- :where(button).bs-select :where(.bs-icon) {
192
- color: var(--bs-ink-base);
193
- transform: none;
194
- transition-duration: 200ms;
195
- transition-property: transform;
196
- transition-timing-function: ease-in-out;
197
- }
198
-
199
- :where(button).bs-select:where([data-open="true"]) :where(.bs-icon) {
200
- transform: rotate(180deg);
201
- }
@@ -1,234 +0,0 @@
1
- .bs-horizontal-nav-mobile {
2
- --bg-color: var(--bs-bg-light);
3
- --top-offset: 48px;
4
- display: flex;
5
- flex-direction: column;
6
- left: 0;
7
- position: fixed;
8
- right: 0;
9
- top: var(--top-offset);
10
- z-index: 1000;
11
- }
12
-
13
- @media (min-width: 1166px) {
14
- .bs-horizontal-nav-mobile {
15
- display: none;
16
- }
17
- }
18
-
19
- /* ===== Toggle ===== */
20
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-toggle) {
21
- align-items: center;
22
- background-color: var(--bs-bg-light);
23
- color: var(--bs-ink-light);
24
- cursor: pointer;
25
- display: flex;
26
- height: var(--bs-horizontal-nav-height);
27
- justify-content: space-between;
28
- padding-bottom: 0.5rem;
29
- padding-left: 2.25rem;
30
- padding-right: 2.25rem;
31
- padding-top: 0.5rem;
32
- width: 100%;
33
- }
34
-
35
- .bs-horizontal-nav-mobile:where([data-hide-toggle="true"]) :where(.bs-horizontal-nav-mobile-toggle) {
36
- display: none;
37
- }
38
-
39
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-toggle-title) {
40
- align-items: center;
41
- display: flex;
42
- gap: 0.5rem;
43
- }
44
-
45
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-toggle-title-icon) {
46
- color: var(--bs-ink-blue);
47
- height: 1rem;
48
- width: 1rem;
49
- }
50
-
51
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-toggle-caret) {
52
- height: 0.75rem;
53
- transform: none;
54
- transition-duration: 0.2s;
55
- transition-property: transform;
56
- transition-timing-function: ease-in-out;
57
- width: 0.75rem;
58
- }
59
-
60
- .bs-horizontal-nav-mobile:where([data-shown="true"]) :where(.bs-horizontal-nav-mobile-toggle-caret) {
61
- transform: rotate(180deg);
62
- }
63
-
64
- /* ===== Nav Menu Container ===== */
65
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-menu) {
66
- -ms-overflow-style: none; /* Internet Explorer 10+ */
67
- background-color: var(--bg-color);
68
- display: flex;
69
- flex-direction: column;
70
- height: 100dvh;
71
- /* 100vh - top offset - toggle height */
72
- max-height: calc(100dvh - var(--top-offset) - 48px);
73
- opacity: 0;
74
- overflow: scroll;
75
- scrollbar-width: none; /* Firefox */
76
- transition-duration: 200ms;
77
- transition-property: opacity;
78
- transition-timing-function: ease;
79
- }
80
-
81
- .bs-horizontal-nav-mobile:where([data-hide-toggle="true"]) :where(.bs-horizontal-nav-mobile-menu) {
82
- max-height: calc(100dvh - var(--top-offset));
83
- }
84
-
85
- .bs-horizontal-nav-mobile:where([data-shown="true"]) :where(.bs-horizontal-nav-mobile-menu) {
86
- opacity: 1;
87
- }
88
-
89
- /* ===== Nav List ===== */
90
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-menu > ul) {
91
- background-color: var(--bg-color);
92
- display: flex;
93
- flex-direction: column;
94
- list-style: none;
95
- }
96
-
97
- /* ===== Nav Items ===== */
98
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-menu > ul > li) {
99
- border-top: 1px solid var(--bs-border-base);
100
- }
101
-
102
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-menu > ul > li:last-child) {
103
- border-bottom: 1px solid var(--bs-border-base);
104
- }
105
-
106
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-menu > ul > li > a),
107
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-nested-menu > li > a),
108
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-external-links > ul > li > a) {
109
- color: var(--bs-ink-light);
110
- cursor: pointer;
111
- display: flex;
112
- font-weight: 400;
113
- padding-bottom: 0.75rem;
114
- padding-left: 2.25rem;
115
- padding-right: 2.25rem;
116
- padding-top: 0.75rem;
117
- }
118
-
119
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-menu > ul > li > a:hover),
120
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-nested-menu > li > a:hover),
121
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-external-links > ul > li > a:hover) {
122
- color: var(--bs-ink-blue);
123
- }
124
-
125
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-menu > ul > li > a[data-active="true"]),
126
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-nested-menu > li > a[data-active="true"]) {
127
- color: var(--bs-ink-base);
128
- font-weight: 600;
129
- }
130
-
131
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-menu > ul > li > a[data-active="true"]:hover),
132
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-nested-menu > li > a[data-active="true"]:hover) {
133
- color: var(--bs-ink-blue);
134
- }
135
-
136
- /* ===== Nested Nav Items ===== */
137
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-nested-toggle) {
138
- align-items: center;
139
- color: var(--bs-ink-light);
140
- cursor: pointer;
141
- display: flex;
142
- justify-content: space-between;
143
- padding-bottom: 0.75rem;
144
- padding-left: 2.25rem;
145
- padding-right: 2.25rem;
146
- padding-top: 0.75rem;
147
- width: 100%;
148
- }
149
-
150
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-nested-toggle[data-active="true"]) {
151
- font-weight: 600;
152
- }
153
-
154
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-menu > ul > li[data-expanded="true"] > .bs-horizontal-nav-mobile-nested-toggle) {
155
- background-color: var(--bs-bg-medium);
156
- color: var(--bs-ink-blue);
157
- font-weight: 600;
158
- }
159
-
160
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-nested-toggle:hover) {
161
- color: var(--bs-ink-blue);
162
- }
163
-
164
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-nested-toggle-caret) {
165
- height: 0.75rem;
166
- transform: none;
167
- transition-duration: 0.2s;
168
- transition-property: transform;
169
- transition-timing-function: ease-in-out;
170
- width: 0.75rem;
171
- }
172
-
173
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-menu > ul > li[data-expanded="true"] .bs-horizontal-nav-mobile-nested-toggle-caret) {
174
- transform: rotate(180deg);
175
- }
176
-
177
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-nested-menu) {
178
- background-color: var(--bs-bg-medium);
179
- display: none;
180
- }
181
-
182
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-menu > ul > li[data-expanded="true"] > .bs-horizontal-nav-mobile-nested-menu) {
183
- display: block;
184
- }
185
-
186
- /* ===== External Links ===== */
187
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-external-links) {
188
- margin-top: auto;
189
- padding-top: 2.25rem;
190
- }
191
-
192
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-external-links > ul > li > a) {
193
- display: flex;
194
- align-items: center;
195
- gap: 0.5rem;
196
- }
197
-
198
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-external-link-icon) {
199
- height: 1rem;
200
- width: 1rem;
201
- }
202
-
203
- /* ===== End Items ===== */
204
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-end-items) {
205
- display: flex;
206
- flex-direction: column;
207
- margin-bottom: 1.5rem;
208
- margin-top: auto;
209
- }
210
-
211
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-end-items > *:not(button)) {
212
- padding-bottom: 0.75rem;
213
- padding-left: 2.25rem;
214
- padding-right: 2.25rem;
215
- padding-top: 0.75rem;
216
- }
217
-
218
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-end-items > button) {
219
- margin-bottom: 0.75rem;
220
- margin-left: 2.25rem;
221
- margin-right: 2.25rem;
222
- margin-top: 0.75rem;
223
- }
224
-
225
- /* Vue Transition Styles - Only used in Vue component */
226
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-enter-from),
227
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-leave-to) {
228
- opacity: 0;
229
- }
230
-
231
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-enter-to),
232
- .bs-horizontal-nav-mobile :where(.bs-horizontal-nav-mobile-leave-from) {
233
- opacity: 1;
234
- }