@wwtdev/bsds-css 3.0.0-rc.45 → 3.0.0-rc.47

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/wwt-bsds.css CHANGED
@@ -298,6 +298,9 @@
298
298
  --bs-horizontal-nav-height: 48px;
299
299
  --bs-vertical-nav-narrow-width: 4.5rem;
300
300
  --bs-vertical-nav-width: 9.875rem;
301
+ --bs-vertical-nav-collapsed-width: 4rem;
302
+ /* Dynamic width set by the navigation component for page layout */
303
+ --bs-page-nav-width: 0px;
301
304
 
302
305
  /* Table */
303
306
  --bs-table-cell-padding-xs: var(--bs-space-2);
@@ -2209,129 +2212,131 @@ Custom properties:
2209
2212
  }
2210
2213
  /* Base Toast Styles */
2211
2214
  .bs-toast-deprecated {
2212
- --toast-transform: translate(0, calc(100% + 1.5rem));
2215
+ --toast-transform: translate(0, calc(100% + 1.5rem));
2213
2216
 
2214
- background-color: var(--bs-bg-base-to-light);
2215
- border-top: 4px solid var(--bs-primary-base);
2216
- bottom: 1.5rem;
2217
- box-shadow: var(--bs-shadow-contentMedium);
2218
- left: 0;
2219
- margin-left: 1.5rem;
2220
- margin-right: 1.5rem;
2221
- opacity: 0;
2222
- position: fixed;
2223
- right: 0;
2224
- transform: var(--toast-transform);
2225
- transition-duration: var(--bs-transition-medium);
2226
- transition-property: transform, opacity;
2227
- transition-timing-function: var(--bs-transition-ease);
2228
- /* Clamp width for mobile -> full screen */
2229
- width: clamp(17rem, calc(100vw - 3rem), 25rem);
2230
- z-index: 999;
2217
+ background-color: var(--bs-bg-base-elevated);
2218
+ border-top: 4px solid var(--bs-primary-base);
2219
+ bottom: 1.5rem;
2220
+ box-shadow: var(--bs-shadow-contentMedium);
2221
+ left: 0;
2222
+ margin-left: 1.5rem;
2223
+ margin-right: 1.5rem;
2224
+ opacity: 0;
2225
+ position: fixed;
2226
+ right: 0;
2227
+ transform: var(--toast-transform);
2228
+ transition-duration: 200ms;
2229
+ transition-property: transform, opacity;
2230
+ transition-timing-function: ease;
2231
+ /* Clamp width for mobile -> full screen */
2232
+ width: clamp(17rem, calc(100vw - 3rem), 25rem);
2233
+ z-index: 999;
2231
2234
  }
2232
2235
  .bs-toast-deprecated:where([data-stacked]:not([data-stacked="false"])) {
2233
- bottom: auto;
2234
- left: auto;
2235
- position: static;
2236
- right: auto;
2237
- z-index: auto;
2236
+ bottom: auto;
2237
+ left: auto;
2238
+ position: static;
2239
+ right: auto;
2240
+ z-index: auto;
2238
2241
  }
2239
2242
  /* Mobile - Toast comes up from bottom */
2240
2243
  .bs-toast-deprecated:where([data-shown]:not([data-shown="false"])) {
2241
- opacity: 1;
2242
- transform: translate(0, 0);
2244
+ opacity: 1;
2245
+ transform: translate(0, 0);
2243
2246
  }
2244
2247
  .bs-toast-header-deprecated {
2245
- align-items: center;
2246
- color: var(--bs-ink-base);
2247
- display: flex;
2248
- gap: 0.5rem;
2249
- padding: 1rem;
2248
+ align-items: center;
2249
+ color: var(--bs-ink-base);
2250
+ display: flex;
2251
+ gap: 0.5rem;
2252
+ padding: 1rem;
2250
2253
  }
2251
- .bs-toast-header-deprecated :where(.bs-toast-header-icon-deprecated) {
2252
- color: var(--bs-primary-base);
2254
+ .bs-toast-header-deprecated :where(.bs-toast-header-deprecated-icon) {
2255
+ color: var(--bs-primary-base);
2253
2256
  }
2254
- .bs-toast-header-deprecated :where(h5) {
2255
- font-weight: 400;
2257
+ .bs-toast-header-deprecated :where(.bs-toast-header-deprecated-text) {
2258
+ font-size: var(--bs-text-md);
2259
+ font-weight: var(--bs-font-normal);
2260
+ line-height: var(--bs-leading-lg);
2256
2261
  }
2257
2262
  .bs-toast-body-deprecated {
2258
- border-bottom: 1px solid var(--bs-border-base);
2259
- color: var(--bs-ink-light);
2260
- padding-bottom: 1rem;
2261
- padding-left: 1rem;
2262
- padding-right: 1rem;
2263
+ border-bottom: 1px solid var(--bs-border-base);
2264
+ color: var(--bs-ink-light);
2265
+ padding-bottom: 1rem;
2266
+ padding-left: 1rem;
2267
+ padding-right: 1rem;
2263
2268
  }
2264
2269
  .bs-toast-actions-deprecated {
2265
- /* Mobile - Buttons will be stacked */
2266
- display: flex;
2267
- flex-direction: row;
2268
- gap: 1rem;
2269
- justify-content: flex-end;
2270
- padding-bottom: 0.5rem;
2271
- padding-left: 1rem;
2272
- padding-right: 1rem;
2273
- padding-top: 0.5rem;
2270
+ /* Mobile - Buttons will be stacked */
2271
+ display: flex;
2272
+ flex-direction: row;
2273
+ gap: 1rem;
2274
+ justify-content: flex-end;
2275
+ padding-bottom: 0.5rem;
2276
+ padding-left: 1rem;
2277
+ padding-right: 1rem;
2278
+ padding-top: 0.5rem;
2274
2279
  }
2275
2280
  .bs-toast-actions-deprecated:where([data-stacked]:not([data-stacked="false"])) {
2276
- flex-direction: column-reverse;
2281
+ flex-direction: column-reverse;
2277
2282
  }
2278
2283
  /* Warning Toast Styles */
2279
2284
  .bs-toast-deprecated:where([data-variant^='warning']) {
2280
- border-top: 4px solid var(--bs-warning-base);
2285
+ border-top: 4px solid var(--bs-warning-base);
2281
2286
  }
2282
- .bs-toast-deprecated:where([data-variant^='warning']) :where(.bs-toast-header-deprecated .bs-toast-header-icon-deprecated) {
2283
- color: var(--bs-ink-warning);
2287
+ .bs-toast-deprecated:where([data-variant^='warning']) :where(.bs-toast-header-deprecated .bs-toast-header-deprecated-icon) {
2288
+ color: var(--bs-ink-warning);
2284
2289
  }
2285
2290
  /* Positive Toast Styles */
2286
2291
  .bs-toast-deprecated:where([data-variant^='positive']) {
2287
- border-top: 4px solid var(--bs-positive-base);
2292
+ border-top: 4px solid var(--bs-positive-base);
2288
2293
  }
2289
- .bs-toast-deprecated:where([data-variant^='positive']) :where(.bs-toast-header-deprecated .bs-toast-header-icon-deprecated) {
2290
- color: var(--bs-ink-positive);
2294
+ .bs-toast-deprecated:where([data-variant^='positive']) :where(.bs-toast-header-deprecated .bs-toast-header-deprecated-icon) {
2295
+ color: var(--bs-ink-positive);
2291
2296
  }
2292
2297
  :where(.dark) .bs-toast-deprecated:where([data-variant^='positive']) {
2293
- border-top: 4px solid var(--bs-positive-light);
2298
+ border-top: 4px solid var(--bs-positive-light);
2294
2299
  }
2295
- :where(.dark) .bs-toast-deprecated:where([data-variant^='positive']) :where(.bs-toast-header-deprecated .bs-toast-header-icon-deprecated) {
2296
- color: var(--bs-positive-light);
2300
+ :where(.dark) .bs-toast-deprecated:where([data-variant^='positive']) :where(.bs-toast-header-deprecated .bs-toast-header-deprecated-icon) {
2301
+ color: var(--bs-positive-light);
2297
2302
  }
2298
2303
  /* Negative Toast Styles */
2299
2304
  .bs-toast-deprecated:where([data-variant^='negative']) {
2300
- border-top: 4px solid var(--bs-negative-dark);
2305
+ border-top: 4px solid var(--bs-negative-dark);
2301
2306
  }
2302
- .bs-toast-deprecated:where([data-variant^='negative']) :where(.bs-toast-header-deprecated .bs-toast-header-icon-deprecated) {
2303
- color: var(--bs-negative-dark);
2307
+ .bs-toast-deprecated:where([data-variant^='negative']) :where(.bs-toast-header-deprecated .bs-toast-header-deprecated-icon) {
2308
+ color: var(--bs-negative-dark);
2304
2309
  }
2305
2310
  @media (min-width: 440px) {
2306
- .bs-toast-deprecated {
2307
- --toast-transform: translate(calc(100% + 1.5rem), 0);
2308
-
2309
- left: auto;
2310
- margin-left: 0;
2311
- margin-right: 0;
2312
- opacity: 0;
2313
- right: 1.5rem;
2314
- }
2311
+ .bs-toast-deprecated {
2312
+ --toast-transform: translate(calc(100% + 1.5rem), 0);
2315
2313
 
2316
- .bs-toast-deprecated:where([data-shown]:not([data-shown="false"])) {
2317
- opacity: 1;
2318
- transform: translate(0, 0);
2319
- }
2314
+ left: auto;
2315
+ margin-left: 0;
2316
+ margin-right: 0;
2317
+ opacity: 0;
2318
+ right: 1.5rem;
2319
+ }
2320
2320
 
2321
- .bs-toast-actions-deprecated:where([data-stacked]:not([data-stacked="false"])) {
2322
- flex-direction: row;
2323
- }
2321
+ .bs-toast-deprecated:where([data-shown]:not([data-shown="false"])) {
2322
+ opacity: 1;
2323
+ transform: translate(0, 0);
2324
+ }
2325
+
2326
+ .bs-toast-actions-deprecated:where([data-stacked]:not([data-stacked="false"])) {
2327
+ flex-direction: row;
2328
+ }
2324
2329
  }
2325
2330
  /* Vue Transition Styles - Only used in Vue component */
2326
- .bs-toast-deprecated:where(.bs-toast-enter-from),
2327
- .bs-toast-deprecated:where(.bs-toast-leave-to) {
2328
- opacity: 0;
2329
- transform: var(--toast-transform);
2331
+ .bs-toast-deprecated:where(.bs-toast-deprecated-enter-from),
2332
+ .bs-toast-deprecated:where(.bs-toast-deprecated-leave-to) {
2333
+ opacity: 0;
2334
+ transform: var(--toast-transform);
2330
2335
  }
2331
- .bs-toast-deprecated:where(.bs-toast-enter-to),
2332
- .bs-toast-deprecated:where(.bs-toast-leave-from) {
2333
- opacity: 1;
2334
- transform: translate(0, 0);
2336
+ .bs-toast-deprecated:where(.bs-toast-deprecated-enter-to),
2337
+ .bs-toast-deprecated:where(.bs-toast-deprecated-leave-from) {
2338
+ opacity: 1;
2339
+ transform: translate(0, 0);
2335
2340
  }
2336
2341
  /* Container for holding all toasts that will be visible */
2337
2342
  .bs-toaster-deprecated {
@@ -6554,13 +6559,6 @@ a.bs-text-button {
6554
6559
  --step-color: var(--bs-ink-negative);
6555
6560
  --progress-step-bg: var(--bs-negative-base);
6556
6561
  }
6557
- :root {
6558
- --bs-vertical-nav-width: 9.875rem;
6559
- --bs-vertical-nav-narrow-width: 4.5rem;
6560
- --bs-vertical-nav-collapsed-width: 4rem;
6561
- /* Dynamic width set by the navigation component for page layout */
6562
- --bs-page-nav-width: 0px;
6563
- }
6564
6562
  .bs-vertical-nav-wrapper {
6565
6563
  --active-color: rgba(255, 255, 255, 0.25);
6566
6564
  --bg-color: var(--bs-navy-base);
@@ -6992,8 +6990,13 @@ a.bs-text-button {
6992
6990
  transition: margin-inline-start 350ms cubic-bezier(0.4, 0, 0.2, 1);
6993
6991
  }
6994
6992
  /*
6995
- POP SYSTEM COMPONENTS
6996
- Components that are built on top of BsPopover. The popover.css must come first.
6993
+ POP SYSTEM COMPONENTS (the order matters)
6994
+ - Components that are built on top of BsPopover
6995
+ - The popover.css must come first
6996
+ - In the future, could refactor this file to use @layer instead
6997
+ */
6998
+ /*
6999
+ HEADS-UP: BsPopover and its styles are the base for all popover-based components and their styles
6997
7000
  */
6998
7001
  #bs-popover-teleport-target {
6999
7002
  z-index: var(--bs-popover-z-index);
@@ -7015,31 +7018,22 @@ a.bs-text-button {
7015
7018
  position: absolute;
7016
7019
  top: 0;
7017
7020
  left: 0;
7021
+ display: flex;
7022
+ flex-direction: column;
7018
7023
  width: var(--bs-popover-width, -moz-fit-content);
7019
7024
  width: var(--bs-popover-width, fit-content);
7020
7025
  height: var(--bs-popover-height, -moz-fit-content);
7021
7026
  height: var(--bs-popover-height, fit-content);
7022
7027
  max-width: calc(100dvw - 3rem);
7023
7028
  max-height: calc(100dvh - 3rem);
7024
- padding: var(--bs-space-6);
7025
7029
  background-color: var(--bs-bg-base-to-light);
7026
7030
  border-radius: var(--bs-space-1);
7027
7031
  box-shadow: var(--bs-shadow-contentLowCenter);
7028
7032
  pointer-events: auto; /* due to `pointer-events: none` on bs-popover-wrap */
7033
+ overflow: hidden;
7029
7034
  }
7030
- .bs-popover-close-button {
7031
- background-color: inherit;
7032
- background: transparent;
7033
- border-color: transparent;
7034
- color: inherit;
7035
- cursor: pointer;
7036
- font-family: inherit;
7037
- font-size: var(--bs-text-base);
7038
- padding: var(--bs-space-2); /* to make a bit nicer hit target */
7039
- position: absolute;
7040
- right: var(--bs-space-2);
7041
- text-decoration: none;
7042
- top: var(--bs-space-2);
7035
+ .bs-popover:where(:not(:has(.bs-pop-header, .bs-pop-body, .bs-pop-footer))) {
7036
+ padding: var(--bs-space-6);
7043
7037
  }
7044
7038
  /* -- SIZING -- */
7045
7039
  .bs-popover:where([data-size="sm"]) {
@@ -7130,95 +7124,105 @@ a.bs-text-button {
7130
7124
  transform: scale(.95);
7131
7125
  }
7132
7126
  /*
7133
- HEADS-UP:
7134
- Most BsFlyout base styles come from its BsPopover root element,
7135
- so some of these styles are there to override those defaults.
7127
+ Used in BsPopover, but exists as its own thing in case
7128
+ consumers need/want to use it for custom layout cases.
7136
7129
  */
7137
- .bs-flyout {
7138
- --bs-flyout-padding: var(--bs-space-6);
7139
- --bs-flyout-padding-top: 2.75rem;
7140
- display: flex;
7141
- flex-direction: column;
7142
- padding: 0;
7143
- margin: 0;
7144
- border-radius: 0;
7130
+ .bs-pop-x-button {
7131
+ background-color: inherit;
7132
+ background: transparent;
7133
+ border-color: transparent;
7134
+ color: inherit;
7135
+ cursor: pointer;
7136
+ font-family: inherit;
7137
+ font-size: var(--bs-text-base);
7138
+ padding: var(--bs-space-3); /* to make a bit nicer hit target */
7139
+ position: absolute;
7140
+ right: var(--bs-pop-x-btn-right, var(--bs-space-1));
7141
+ text-decoration: none;
7142
+ top: var(--bs-pop-x-btn-top, var(--bs-space-1));
7145
7143
  }
7146
- /* -- CLOSE BUTTON -- */
7147
- /* calc() adjusts for default .5rem padding .bs-popover-close-button has, which exists for a nicer hit target */
7148
- .bs-flyout :where(.bs-popover-close-button) {
7149
- top: calc(var(--bs-flyout-padding) - .5rem);
7150
- right: calc(var(--bs-flyout-padding) - .5rem);
7144
+ .bs-popover:where(:has(.bs-pop-header)) {
7145
+ --bs-pop-x-btn-right: var(--bs-space-4);
7146
+ --bs-pop-x-btn-top: var(--bs-space-4);
7151
7147
  }
7152
- /* -- HEADER -- */
7153
- .bs-flyout-header {
7148
+ .bs-pop-header {
7149
+ color: var(--bs-ink-base);
7150
+ font-size: var(--bs-text-md);
7154
7151
  flex-shrink: 0;
7155
- padding: var(--bs-flyout-padding-top) var(--bs-flyout-padding) var(--bs-flyout-padding);
7156
- }
7157
- /* with border */
7158
- .bs-flyout-header:where([data-border="true"]) {
7159
- border-bottom: 1px solid var(--bs-border-base);
7160
- }
7161
- .bs-flyout-title {
7162
- display: flex;
7163
- align-items: center;
7164
- gap: var(--bs-space-2);
7165
- margin: 0 var(--bs-space-6) 0 0;
7166
- font-size: var(--bs-text-lg);
7167
- font-weight: normal;
7152
+ padding: var(--bs-pop-header-padding, var(--bs-space-6));
7168
7153
  line-height: var(--bs-leading-regular);
7169
7154
  }
7170
- .bs-flyout-subtitle {
7155
+ .bs-pop-header:where(:not(:has(.bs-pop-title, .bs-pop-subtitle))) {
7171
7156
  display: flex;
7172
7157
  align-items: center;
7173
7158
  gap: var(--bs-space-2);
7174
- margin: var(--bs-space-2) 0 0 0;
7175
- font-size: var(--bs-text-sm);
7176
- font-weight: normal;
7177
- line-height: var(--bs-leading-lg);
7178
7159
  }
7179
- .bs-flyout-header:where([data-border="true"]) {
7160
+ .bs-pop-header:where([data-border="true"]) {
7180
7161
  border-bottom: 1px solid var(--bs-border-base);
7181
7162
  }
7182
- /* -- BODY -- */
7183
- .bs-flyout-body {
7163
+ .bs-pop-body {
7184
7164
  flex: 1;
7185
- padding: 0 var(--bs-flyout-padding);
7186
7165
  overflow-y: auto;
7187
7166
  overscroll-behavior: contain;
7167
+ padding: var(--bs-pop-body-padding, var(--bs-space-6));
7188
7168
  }
7189
- /* no header exists */
7190
- .bs-flyout:where(:not(:has(.bs-flyout-header))) :where(.bs-flyout-body) {
7191
- padding-top: var(--bs-flyout-padding-top);
7169
+ .bs-pop-body:where([data-background="true"]) {
7170
+ background-color: var(--bs-bg-light);
7192
7171
  }
7193
- /* no footer exists */
7194
- .bs-flyout:where(:not(:has(.bs-flyout-footer))) :where(.bs-flyout-body) {
7195
- padding-bottom: var(--bs-flyout-padding);
7172
+ .bs-pop-header:where(:not([data-border="true"])) + :where(.bs-pop-body:not([data-background="true"])) {
7173
+ padding-top: 0;
7196
7174
  }
7197
- /* header border exists */
7198
- .bs-flyout:where(:has(.bs-flyout-header[data-border="true"])) :where(.bs-flyout-body) {
7199
- padding-top: var(--bs-flyout-padding);
7175
+ .bs-pop-footer {
7176
+ align-items: center;
7177
+ display: flex;
7178
+ flex-shrink: 0;
7179
+ gap: var(--bs-space-6);
7180
+ justify-content: flex-end;
7181
+ padding: var(--bs-pop-footer-padding, var(--bs-space-4) var(--bs-space-6));
7200
7182
  }
7201
- /* footer border exists */
7202
- .bs-flyout:where(:has(.bs-flyout-footer[data-border="true"])) :where(.bs-flyout-body) {
7203
- padding-bottom: var(--bs-flyout-padding);
7183
+ .bs-pop-footer:where([data-border="true"]) {
7184
+ border-top: 1px solid var(--bs-border-base);
7204
7185
  }
7205
- /* -- FOOTER -- */
7206
- .bs-flyout-footer {
7186
+ .bs-pop-title {
7187
+ align-items: center;
7207
7188
  display: flex;
7208
- justify-content: flex-end;
7189
+ font-size: var(--bs-text-md);
7190
+ font-weight: normal;
7191
+ gap: var(--bs-space-2);
7192
+ line-height: var(--bs-leading-regular);
7193
+ margin: 0 var(--bs-space-12) 0 0;
7194
+ }
7195
+ .bs-pop-subtitle {
7209
7196
  align-items: center;
7210
- gap: var(--bs-space-6);
7211
- flex-shrink: 0;
7212
- padding: var(--bs-space-6);
7197
+ color: var(--bs-ink-light);
7198
+ display: flex;
7199
+ font-size: var(--bs-text-sm);
7200
+ font-weight: normal;
7201
+ gap: var(--bs-space-2);
7202
+ line-height: var(--bs-leading-lg);
7203
+ margin: var(--bs-space-2) 0 0 0;
7213
7204
  }
7214
- /* with border */
7215
- .bs-flyout-footer:where([data-border="true"]) {
7216
- border-top: 1px solid var(--bs-border-base);
7205
+ /*
7206
+ HEADS-UP:
7207
+ Most BsFlyout base styles come from its BsPopover root element,
7208
+ so some of these styles are there to override those defaults.
7209
+ */
7210
+ .bs-flyout {
7211
+ --bs-pop-header-padding: var(--bs-space-6);
7212
+ --bs-pop-body-padding: var(--bs-space-6);
7213
+ --bs-pop-footer-padding: var(--bs-space-6);
7214
+ margin: 0;
7215
+ border-radius: 0;
7216
+ }
7217
+ /* targeting header too, so consumer could just do: <BsPopHeader>My Title</BsPopHeader> */
7218
+ .bs-flyout :where(.bs-pop-header, .bs-pop-title) {
7219
+ font-size: var(--bs-text-lg);
7217
7220
  }
7218
7221
  /* -- SIZING -- */
7219
7222
  .bs-flyout {
7220
7223
  --bs-popover-height: 100dvh;
7221
7224
  max-height: unset;
7225
+ max-width: 100dvw;
7222
7226
  }
7223
7227
  .bs-flyout:where([data-size="sm"]) {
7224
7228
  --bs-popover-width: 22.5rem; /* 360px */
@@ -7272,142 +7276,50 @@ a.bs-text-button {
7272
7276
  ...so some of these styles override those defaults.
7273
7277
  */
7274
7278
  .bs-modal {
7275
- --bs-modal-sm-width: 21.25rem; /* 340px */
7276
- --bs-modal-md-width: 35rem; /* 560px */
7277
- --bs-modal-lg-width: 45.3125rem; /* 725px */
7278
- --bs-modal-padding: 1.5rem; /* 24px */
7279
- --bs-modal-lg-padding: 2rem; /* 32px */
7280
- display: flex;
7281
- flex-direction: column;
7282
- margin: 0;
7283
- padding: 0;
7279
+ --bs-pop-header-padding: var(--bs-modal-padding);
7280
+ --bs-pop-body-padding: var(--bs-modal-padding);
7281
+ --bs-pop-footer-padding: var(--bs-space-4) var(--bs-modal-padding);
7282
+ --bs-modal-padding: var(--bs-space-6);
7283
+ --bs-modal-lg-padding: var(--bs-space-8);
7284
7284
  background-color: var(--bs-bg-base-to-medium);
7285
7285
  box-shadow: var(--bs-shadow-contentHigh);
7286
- overflow: hidden;
7287
- }
7288
- /* -- CLOSE BUTTON -- */
7289
- /* calc() adjusts for default .5rem padding .bs-popover-close-button has, which exists for a nicer hit target */
7290
- .bs-modal :where(.bs-popover-close-button) {
7291
- top: calc(var(--bs-modal-padding) - .5rem);
7292
- right: calc(var(--bs-modal-padding) - .5rem);
7293
- }
7294
- .bs-modal:where([data-size="lg"]) :where(.bs-popover-close-button) {
7295
- top: calc(var(--bs-modal-lg-padding) - .5rem);
7296
- right: calc(var(--bs-modal-lg-padding) - .5rem);
7297
- }
7298
- /* -- HEADER -- */
7299
- .bs-modal-header {
7300
- flex-shrink: 0;
7301
- padding: var(--bs-modal-padding);
7302
- }
7303
- /* with border */
7304
- .bs-modal-header:where([data-border="true"]) {
7305
- border-bottom: 1px solid var(--bs-border-base);
7306
- }
7307
- /* large size, no border */
7308
- .bs-modal:where([data-size="lg"]) :where(.bs-modal-header) {
7309
- padding: var(--bs-modal-lg-padding);
7310
- }
7311
- /* large size, with border */
7312
- .bs-modal:where([data-size="lg"]) :where(.bs-modal-header[data-border="true"]) {
7313
- padding: var(--bs-modal-lg-padding);
7314
- padding-bottom: var(--bs-modal-padding);
7286
+ margin: 0;
7315
7287
  }
7316
- .bs-modal-title {
7317
- display: flex;
7318
- align-items: center;
7319
- gap: var(--bs-space-2);
7320
- margin: 0 var(--bs-space-6) 0 0;
7288
+ /* targeting header too, so consumer could just do: <BsPopHeader>My Title</BsPopHeader> */
7289
+ .bs-modal :where(.bs-pop-header, .bs-pop-title) {
7321
7290
  font-size: var(--bs-text-lg);
7322
- font-weight: normal;
7323
- line-height: var(--bs-leading-regular);
7324
- }
7325
- .bs-modal-subtitle {
7326
- display: flex;
7327
- align-items: center;
7328
- gap: var(--bs-space-2);
7329
- margin: var(--bs-space-2) 0 0 0;
7330
- font-size: var(--bs-text-sm);
7331
- font-weight: normal;
7332
- line-height: var(--bs-leading-lg);
7333
- }
7334
- /* -- BODY -- */
7335
- .bs-modal-body {
7336
- flex: 1;
7337
- overflow-y: auto;
7338
- padding: 0 var(--bs-modal-padding);
7339
- overscroll-behavior: contain;
7340
- }
7341
- /* large size */
7342
- .bs-modal:where([data-size="lg"]) :where(.bs-modal-body) {
7343
- padding: 0 var(--bs-modal-lg-padding);
7344
- }
7345
- /* no header exists */
7346
- .bs-modal:where(:not(:has(.bs-modal-header))) :where(.bs-modal-body) {
7347
- padding-top: var(--bs-modal-padding);
7348
- }
7349
- /* large size, no header exists */
7350
- .bs-modal:where([data-size="lg"]):where(:not(:has(.bs-modal-header))) :where(.bs-modal-body) {
7351
- padding-top: var(--bs-modal-lg-padding);
7352
- }
7353
- /* no footer exists */
7354
- .bs-modal:where(:not(:has(.bs-modal-footer))) :where(.bs-modal-body) {
7355
- padding-bottom: var(--bs-modal-padding);
7356
7291
  }
7357
- /* large size, no footer exists */
7358
- .bs-modal:where([data-size="lg"]):where(:not(:has(.bs-modal-footer))) :where(.bs-modal-body) {
7359
- padding-bottom: var(--bs-modal-lg-padding);
7292
+ .bs-modal:where([data-size="lg"]) {
7293
+ --bs-pop-x-btn-right: var(--bs-space-6);
7294
+ --bs-pop-header-padding: var(--bs-modal-lg-padding) var(--bs-modal-lg-padding) var(--bs-modal-padding);
7295
+ --bs-pop-body-padding: var(--bs-modal-padding) var(--bs-modal-lg-padding);
7296
+ --bs-pop-footer-padding: var(--bs-space-4) var(--bs-modal-lg-padding);
7360
7297
  }
7361
- /* header border exists */
7362
- .bs-modal:where(:has(.bs-modal-header[data-border="true"])) :where(.bs-modal-body) {
7363
- padding-top: var(--bs-modal-padding);
7364
- }
7365
- /* footer border exists */
7366
- .bs-modal:where(:has(.bs-modal-footer[data-border="true"])) :where(.bs-modal-body) {
7367
- padding-bottom: var(--bs-modal-padding);
7368
- }
7369
- /* -- FOOTER -- */
7370
- .bs-modal-footer {
7371
- display: flex;
7372
- justify-content: flex-end;
7373
- align-items: center;
7374
- gap: var(--bs-space-6);
7375
- flex-shrink: 0;
7376
- padding: var(--bs-space-6) var(--bs-modal-padding);
7377
- }
7378
- /* with border */
7379
- .bs-modal-footer:where([data-border="true"]) {
7380
- border-top: 1px solid var(--bs-border-base);
7381
- padding: var(--bs-space-4) var(--bs-modal-padding);
7382
- }
7383
- /* large size, no border */
7384
- .bs-modal:where([data-size="lg"]) :where(.bs-modal-footer) {
7385
- padding: var(--bs-modal-lg-padding);
7386
- }
7387
- /* large size, with border */
7388
- .bs-modal:where([data-size="lg"]) :where(.bs-modal-footer[data-border="true"]) {
7389
- padding: var(--bs-space-4) var(--bs-modal-lg-padding);
7298
+ .bs-modal:where([data-size="lg"]:has(.bs-pop-header)) {
7299
+ --bs-pop-x-btn-right: var(--bs-space-6);
7300
+ --bs-pop-x-btn-top: var(--bs-space-6);
7390
7301
  }
7391
7302
  /* -- SIZING -- */
7392
7303
  .bs-modal {
7393
- max-width: calc(100dvw - 3rem);
7304
+ --bs-popover-width: calc(100dvw - 3rem);
7394
7305
  max-height: calc(100dvh - 3rem);
7395
7306
  }
7396
7307
  @media (min-width: 752px) {
7397
7308
  .bs-modal {
7309
+ --bs-popover-width: fit-content;
7398
7310
  max-height: min(calc(100dvh - 3rem), 40.625rem);
7399
7311
  }
7400
7312
 
7401
7313
  .bs-modal:where([data-size="sm"]) {
7402
- --bs-popover-width: var(--bs-modal-sm-width);
7314
+ --bs-popover-width: 21.25rem; /* 340px */
7403
7315
  }
7404
7316
 
7405
7317
  .bs-modal:where([data-size="md"]) {
7406
- --bs-popover-width: var(--bs-modal-md-width);
7318
+ --bs-popover-width: 35rem; /* 560px */
7407
7319
  }
7408
7320
 
7409
7321
  .bs-modal:where([data-size="lg"]) {
7410
- --bs-popover-width: var(--bs-modal-lg-width);
7322
+ --bs-popover-width: 45.3125rem; /* 725px */
7411
7323
  }
7412
7324
  }
7413
7325
  /* -- TRANSITIONS -- */
@@ -7461,84 +7373,76 @@ a.bs-text-button {
7461
7373
  }
7462
7374
  /* Toast */
7463
7375
  .bs-toast {
7376
+ --bs-pop-header-padding: var(--bs-space-4);
7377
+ --bs-pop-body-padding: var(--bs-space-4);
7378
+ --bs-pop-footer-padding: var(--bs-space-2) var(--bs-space-4);
7464
7379
  --bs-popover-width: min(23rem, calc(100dvw - 3rem));
7465
7380
  --toast-transform: translate(0, calc(100% + 1.5rem));
7466
7381
  --toast-variant-color: var(--bs-primary-base);
7382
+ --toast-icon: var(--toast-icon-base);
7383
+ --toast-icon-color: var(--bs-ink-primary);
7384
+ --toast-icon-base: url('https://cdn.apps.wwt.com/static/wwt-blue-steel-icons/icon-circle-info.svg');
7385
+ --toast-icon-warning: url('https://cdn.apps.wwt.com/static/wwt-blue-steel-icons/icon-warning.svg');
7386
+ --toast-icon-positive: url('https://cdn.apps.wwt.com/static/wwt-blue-steel-icons/icon-thumbs-up-stroke.svg');
7467
7387
  background-color: var(--bs-bg-base-to-light);
7468
7388
  border-radius: 0;
7469
7389
  border-top: 4px solid var(--toast-variant-color);
7470
7390
  box-shadow: var(--bs-shadow-contentMedium);
7471
7391
  margin: 0;
7472
7392
  order: var(--toast-order, 0);
7473
- padding: 0;
7393
+ }
7394
+ /* Toast Footer Mobile - Buttons will be stacked */
7395
+ .bs-toast :where(.bs-pop-footer) {
7396
+ align-items: stretch;
7397
+ flex-direction: column-reverse;
7398
+ gap: var(--bs-space-2);
7474
7399
  }
7475
7400
  @media (min-width: 440px) {
7476
7401
  .bs-toast {
7477
7402
  --toast-transform: translate(calc(100% + 1.5rem), 0);
7478
7403
  }
7404
+
7405
+ .bs-toast :where(.bs-pop-footer) {
7406
+ align-items: center;
7407
+ flex-direction: row;
7408
+ gap: var(--bs-space-6);
7409
+ }
7479
7410
  }
7411
+ /* Toast Variants */
7480
7412
  .bs-toast:where([data-variant="warning"]) {
7413
+ --toast-icon: var(--toast-icon-warning);
7414
+ --toast-icon-color: var(--bs-ink-warning);
7481
7415
  --toast-variant-color: var(--bs-warning-base);
7482
-
7483
- .bs-toast-header-icon {
7484
- color: var(--bs-ink-warning);
7485
- }
7486
7416
  }
7487
7417
  .bs-toast:where([data-variant="positive"]) {
7418
+ --toast-icon: var(--toast-icon-positive);
7419
+ --toast-icon-color: var(--bs-ink-positive);
7488
7420
  --toast-variant-color: var(--bs-positive-base);
7489
-
7490
- .bs-toast-header-icon {
7491
- color: var(--bs-ink-positive);
7492
- }
7493
- }
7494
- .bs-toast:where([data-variant="negative"]) {
7495
- --toast-variant-color: var(--bs-negative-base);
7496
-
7497
- .bs-toast-header-icon {
7498
- color: var(--bs-ink-negative);
7499
- }
7500
7421
  }
7501
- /* Toast Header */
7502
- .bs-toast :where(.bs-toast-header) {
7503
- align-items: center;
7504
- color: var(--bs-ink-base);
7505
- display: flex;
7506
- gap: 0.5rem;
7507
- padding: 1rem;
7422
+ .dark :where(.bs-toast[data-variant="positive"]) {
7423
+ --toast-icon-color: var(--bs-positive-light);
7424
+ --toast-variant-color: var(--bs-positive-light);
7508
7425
  }
7509
- .bs-toast :where(.bs-toast-header .bs-toast-header-icon) {
7510
- color: var(--bs-ink-primary);
7426
+ .bs-toast:where([data-variant="negative"]) {
7427
+ --toast-icon: var(--toast-icon-warning);
7428
+ --toast-icon-color: var(--bs-negative-dark);
7429
+ --toast-variant-color: var(--bs-negative-dark);
7511
7430
  }
7512
- .bs-toast :where(.bs-toast-header .bs-toast-header-text) {
7513
- font-size: var(--bs-text-md);
7514
- font-weight: var(--bs-font-normal);
7515
- line-height: var(--bs-leading-lg);
7431
+ /* Toast Header - auto-add the icon */
7432
+ .bs-toast :where(.bs-pop-header:not(:has(.bs-pop-title, .bs-pop-subtitle)))::before,
7433
+ .bs-toast :where(.bs-pop-header .bs-pop-title)::before {
7434
+ display: block;
7435
+ content: '';
7436
+ background-color: var(--toast-icon-color);
7437
+ -webkit-mask: var(--toast-icon) center/contain no-repeat;
7438
+ mask: var(--toast-icon) center/contain no-repeat;
7439
+ flex-shrink: 0;
7440
+ height: var(--bs-space-4);
7441
+ width: var(--bs-space-4);
7516
7442
  }
7517
7443
  /* Toast Body */
7518
- .bs-toast :where(.bs-toast-body) {
7519
- border-bottom: 1px solid var(--bs-border-base);
7444
+ .bs-toast :where(.bs-pop-body) {
7520
7445
  color: var(--bs-ink-light);
7521
- padding-bottom: 1rem;
7522
- padding-left: 1rem;
7523
- padding-right: 1rem;
7524
- }
7525
- .bs-toast :where(:not(:has(.bs-toast-header)) .bs-toast-body) {
7526
- padding-top: 1rem;
7527
- }
7528
- /* Toast Footer */
7529
- .bs-toast :where(.bs-toast-footer) {
7530
- /* Mobile - Buttons will be stacked */
7531
- display: flex;
7532
- flex-direction: row;
7533
- gap: 1rem;
7534
- justify-content: flex-end;
7535
- padding-bottom: 0.5rem;
7536
- padding-left: 1rem;
7537
- padding-right: 1rem;
7538
- padding-top: 0.5rem;
7539
- }
7540
- .bs-toast :where(.bs-toast-footer):where([data-stacked]:not([data-stacked="false"])) {
7541
- flex-direction: column-reverse;
7542
7446
  }
7543
7447
  /* Vue Transition Styles */
7544
7448
  .bs-toast-enter-active,