@databricks/design-system 2.0.3 → 2.0.5

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 (45) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/RHFControlledTypeaheadComboboxV2-DsH-nIEk.js +172 -0
  3. package/dist/RHFControlledTypeaheadComboboxV2-DsH-nIEk.js.map +1 -0
  4. package/dist/{WizardStepContentWrapper-DsAS2ZAT.js → WizardStepContentWrapper-Bq1wm0V7.js} +669 -435
  5. package/dist/WizardStepContentWrapper-Bq1wm0V7.js.map +1 -0
  6. package/dist/index-BRAVZg-S.js +8308 -0
  7. package/dist/index-BRAVZg-S.js.map +1 -0
  8. package/dist/index-dark.css +395 -128
  9. package/dist/index-dark.mitigated.css +398 -131
  10. package/dist/index.css +844 -277
  11. package/dist/index.js +25 -8119
  12. package/dist/index.js.map +1 -1
  13. package/dist/index.mitigated.css +848 -281
  14. package/dist/patterns.js +1 -1
  15. package/dist/test-utils/rtl.js +1 -1
  16. package/dist/test-utils/rtl.js.map +1 -1
  17. package/dist-types/design-system/Alert/Alert.d.ts +1 -1
  18. package/dist-types/design-system/Breadcrumb/Breadcrumb.d.ts +10 -3
  19. package/dist-types/design-system/Button/AntDButtonInternal.d.ts +21 -0
  20. package/dist-types/design-system/Button/Button.d.ts +3 -19
  21. package/dist-types/design-system/Button/NativeButton.d.ts +3 -0
  22. package/dist-types/design-system/Button/getBtnClassName.d.ts +17 -0
  23. package/dist-types/design-system/Button/index.d.ts +1 -0
  24. package/dist-types/design-system/DesignSystemProvider/DesignSystemProvider.d.ts +28 -6
  25. package/dist-types/design-system/DesignSystemProvider/DesignTokenScopeWithEmotionTheme.d.ts +23 -0
  26. package/dist-types/design-system/DesignSystemProvider/index.d.ts +1 -0
  27. package/dist-types/design-system/FormV2/RHFAdapters.d.ts +8 -0
  28. package/dist-types/design-system/FormV2/RHFControlledTypeaheadComboboxV2.d.ts +58 -0
  29. package/dist-types/design-system/Icon/Icon.d.ts +2 -2
  30. package/dist-types/design-system/Icon/__generated/icons/ColorMappingEditIcon.d.ts +4 -0
  31. package/dist-types/design-system/Icon/__generated/icons/ColorMappingIcon.d.ts +4 -0
  32. package/dist-types/design-system/Icon/__generated/icons/MicrophoneIcon.d.ts +4 -0
  33. package/dist-types/design-system/Icon/__generated/icons/MicrophoneOffIcon.d.ts +4 -0
  34. package/dist-types/design-system/Icon/__generated/icons/OperatorIcon.d.ts +4 -0
  35. package/dist-types/design-system/Icon/__generated/icons/VoiceModeIcon.d.ts +4 -0
  36. package/dist-types/design-system/Icon/__generated/icons/index.d.ts +6 -0
  37. package/dist-types/design-system/Overflow/Overflow.d.ts +3 -1
  38. package/dist-types/design-system/Overflow/OverflowPopover.d.ts +2 -1
  39. package/dist-types/design-system/TypeaheadComboboxV2/TypeaheadComboboxMenu.d.ts +2 -0
  40. package/dist-types/design-system/shape-tokens.d.ts +1 -1
  41. package/dist-types/test-utils/rtl/buttonVariants.d.ts +11 -0
  42. package/dist-types/~patterns/Wizard/WizardStepNavigation.d.ts +9 -0
  43. package/dist-types/~patterns/Wizard/index.d.ts +1 -0
  44. package/package.json +12 -4
  45. package/dist/WizardStepContentWrapper-DsAS2ZAT.js.map +0 -1
@@ -16254,17 +16254,17 @@ span.du-bois-dark-typography-ellipsis-single-line {
16254
16254
  Use this for any layout where items are laid out vertically.
16255
16255
 
16256
16256
  \3c !-- Basic: default gap between each child -->
16257
- <div class="ds-stack">
16257
+ <div class="db-stack">
16258
16258
  <h2>Title</h2>
16259
16259
  <p>Body</p>
16260
16260
  <button>Action</button>
16261
16261
  </div>
16262
16262
 
16263
16263
  \3c !-- Wider gap for this instance -->
16264
- <div class="ds-stack" style="--ds-stack-gap: var(--db-spacing-lg)">…</div>
16264
+ <div class="db-stack" style="--db-stack-gap: var(--db-spacing-lg)">…</div>
16265
16265
 
16266
16266
  \3c !-- Don't stretch children to full width (e.g. left-aligned buttons) -->
16267
- <div class="ds-stack" style="--ds-stack-align: flex-start">…</div>
16267
+ <div class="db-stack" style="--db-stack-align: flex-start">…</div>
16268
16268
  */
16269
16269
 
16270
16270
  /**
@@ -16272,130 +16272,157 @@ span.du-bois-dark-typography-ellipsis-single-line {
16272
16272
  Use this for any layout where items are laid out horizontally and should wrap on smaller viewport sizes.
16273
16273
 
16274
16274
  \3c !-- Basic: items wrap as needed -->
16275
- <div class="ds-cluster">
16275
+ <div class="db-cluster">
16276
16276
  <span>one</span>
16277
16277
  <span>two</span>
16278
16278
  <span>three</span>
16279
16279
  </div>
16280
16280
 
16281
16281
  \3c !-- Push children apart (e.g. title left, actions right) -->
16282
- <div class="ds-cluster" style="--ds-cluster-justify: space-between">…</div>
16282
+ <div class="db-cluster" style="--db-cluster-justify: space-between">…</div>
16283
16283
 
16284
16284
  \3c !-- Looser gap for this instance -->
16285
- <div class="ds-cluster" style="--ds-cluster-gap: var(--db-spacing-sm)">…</div>
16285
+ <div class="db-cluster" style="--db-cluster-gap: var(--db-spacing-sm)">…</div>
16286
16286
  */
16287
16287
 
16288
16288
 
16289
16289
 
16290
16290
  :where(.du-bois-dark) {
16291
16291
  /* Neutral */
16292
- --db-neutral-surface: var(--db-color-background-primary);
16293
- --db-subtle-neutral-surface: var(--db-color-background-secondary);
16294
- --db-strong-neutral-surface: initial; /* TODO */
16292
+ --db-surface-base: var(--db-color-background-primary);
16293
+ --db-surface-subtle: var(--db-color-background-secondary);
16294
+ --db-surface-strong: initial; /* TODO */
16295
16295
 
16296
- --db-text-on-neutral-surface: var(--db-color-text-primary);
16297
- --db-subtle-text-on-neutral-surface: var(--db-color-text-secondary);
16298
- --db-strong-text-on-neutral-surface: initial; /* TODO */
16296
+ --db-surface-inverse: initial; /* TODO */
16297
+ --db-surface-active: var(--db-color-table-background-selected-default);
16298
+ --db-surface-hover: var(--db-color-table-background-unselected-hover);
16299
+ --db-surface-disabled: var(--db-color-action-disabled-background);
16299
16300
 
16300
- --db-neutral-border: var(--db-color-border);
16301
- --db-subtle-neutral-border: initial; /* TODO */
16302
- --db-strong-neutral-border: var(--db-color-border-accessible);
16301
+ --db-surface-selected: var(--db-color-table-background-selected-hover);
16302
+ --db-surface-selected-hover: initial; /* TODO */;
16303
+ --db-surface-selected-active: initial; /* TODO */;
16303
16304
 
16304
- --db-neutral-surface-active: var(--db-color-table-background-selected-default);
16305
- --db-neutral-surface-hover: var(--db-color-table-background-unselected-hover);
16306
- --db-neutral-surface-pressed: var(--db-color-table-background-selected-hover);
16307
- --db-neutral-surface-disabled: var(--db-color-action-disabled-background);
16308
- --db-text-on-neutral-surface-disabled: var(--db-color-action-disabled-text);
16305
+ /* Surface alpha-blending modifiers */
16306
+ --db-surface-backdrop: initial; /* TODO */;
16307
+ /* TODO: surface-tint for containers that distinguish some content */
16309
16308
 
16310
- /* Primary */
16311
- --db-primary-surface: var(--db-color-action-primary-background-default);
16312
- --db-subtle-primary-surface: var(--db-color-action-default-background-hover);
16313
- --db-strong-primary-surface: var(--db-color-action-primary-background-hover);
16309
+ --db-text-base: var(--db-color-text-primary);
16310
+ --db-text-subtle: var(--db-color-text-secondary);
16311
+ --db-text-strong: initial; /* TODO */
16312
+ --db-text-disabled: var(--db-color-action-disabled-text);
16313
+ --db-text-suggestion: initial; /* TODO - e.g. input placeholder, loading text */
16314
+ --db-text-inverse: initial; /* TODO, stark contrast e.g. tooltip text */
16314
16315
 
16315
- --db-text-on-primary-surface: var(--db-color-action-primary-text-default);
16316
- --db-primary-text-on-neutral-surface: var(--db-color-action-link-default);
16317
- --db-subtle-text-on-primary-surface: initial; /* TODO */
16318
- --db-strong-text-on-primary-surface: var(--db-color-action-primary-text-default);
16316
+ --db-border-base: var(--db-color-border);
16317
+ --db-border-subtle: initial; /* TODO */
16318
+ --db-border-strong: var(--db-color-border-accessible);
16319
+ --db-border-hover: initial; /* TODO */
16320
+ --db-border-active: initial; /* TODO */
16321
+ --db-border-disabled: initial; /* TODO */
16319
16322
 
16320
- --db-primary-border: var(--db-color-action-primary-background-default);
16321
- --db-subtle-primary-border: initial; /* TODO */
16322
- --db-strong-primary-border: var(--db-color-action-primary-background-press);
16323
+ /* Accent */
16324
+ --db-accent-surface: var(--db-color-action-primary-background-default);
16325
+ --db-accent-surface-subtle: var(--db-color-action-default-background-hover);
16326
+ --db-accent-surface-strong: var(--db-color-action-primary-background-hover);
16323
16327
 
16324
- --db-primary-surface-active: initial; /* TODO */
16325
- --db-primary-surface-hover: var(--db-color-action-primary-background-hover);
16326
- --db-primary-surface-pressed: var(--db-color-action-primary-background-press);
16327
- --db-primary-surface-disabled: var(--db-color-action-disabled-background);
16328
- --db-text-on-primary-surface-disabled: var(--db-color-action-disabled-text);
16328
+ --db-accent-surface-hover: var(--db-color-action-primary-background-hover);
16329
+ --db-accent-surface-active: initial; /* TODO */
16330
+ --db-accent-surface-selected: var(--db-color-action-primary-background-press);
16329
16331
 
16330
- /* Error */
16331
- --db-error-surface: var(--db-color-action-danger-primary-background-default);
16332
- --db-subtle-error-surface: var(--db-color-background-danger);
16333
- --db-strong-error-surface: var(--db-color-action-danger-primary-background-hover);
16332
+ /* In the current design, the text color for an accent surface does not change with hover, active, etc. */
16333
+ --db-accent-text: var(--db-color-action-link-default);
16334
+ --db-text-on-accent-surface: var(--db-color-action-primary-text-default);
16334
16335
 
16335
- --db-text-on-error-surface: var(--db-color-action-danger-primary-text);
16336
- --db-error-text-on-neutral-surface: var(--db-color-text-validation-danger);
16337
- --db-subtle-text-on-error-surface: initial; /* TODO */
16338
- --db-strong-text-on-error-surface: var(--db-color-action-danger-primary-text);
16336
+ --db-accent-border: var(--db-color-action-primary-background-default);
16337
+ --db-accent-border-hover: var(--db-color-action-primary-background-press);
16338
+ --db-accent-border-active: initial; /* TODO */;
16339
16339
 
16340
- --db-error-border: var(--db-color-action-danger-default-border-default);
16341
- --db-subtle-error-border: var(--db-color-border-danger);
16342
- --db-strong-error-border: var(--db-color-action-danger-primary-background-press);
16340
+ /* Negative */
16341
+ --db-negative-surface: var(--db-color-action-danger-primary-background-default);
16342
+ --db-negative-surface-subtle: var(--db-color-background-danger);
16343
+ --db-negative-surface-strong: var(--db-color-action-danger-primary-background-hover);
16343
16344
 
16344
- --db-error-surface-active: initial; /* TODO */
16345
- --db-error-surface-hover: var(--db-color-action-danger-primary-background-hover);
16346
- --db-error-surface-pressed: var(--db-color-action-danger-primary-background-press);
16347
- --db-error-surface-disabled: var(--db-color-action-disabled-background);
16348
- --db-text-on-error-surface-disabled: var(--db-color-action-disabled-text);
16345
+ --db-negative-surface-hover: var(--db-color-action-danger-primary-background-hover);
16346
+ --db-negative-surface-active: initial; /* TODO */
16347
+ --db-negative-surface-selected: var(--db-color-action-danger-primary-background-press);
16349
16348
 
16350
- /* Warning */
16351
- --db-warning-surface: initial; /* TODO */
16352
- --db-subtle-warning-surface: var(--db-color-background-warning);
16349
+ --db-negative-text: var(--db-color-text-validation-danger);
16350
+ --db-text-on-negative-surface: var(--db-color-action-danger-primary-text);
16353
16351
 
16354
- --db-text-on-warning-surface: initial; /* TODO */
16355
- --db-warning-text-on-neutral-surface: var(--db-color-text-validation-warning);
16352
+ --db-negative-border: var(--db-color-action-danger-default-border-default);
16353
+ --db-negative-border-hover: initial; /* TODO */
16354
+ --db-negative-border-active: initial; /* TODO */
16356
16355
 
16357
- --db-warning-border: var(--db-color-border-warning);
16356
+ /* Caution */
16357
+ --db-caution-surface: initial; /* TODO */
16358
+ --db-caution-surface-subtle: var(--db-color-background-warning);
16359
+ --db-caution-surface-strong: initial; /* TODO */
16358
16360
 
16359
- /* Success */
16360
- --db-success-surface: initial; /* TODO */
16361
- --db-subtle-success-surface: var(--db-color-background-success);
16361
+ --db-caution-surface-hover: initial; /* TODO */
16362
+ --db-caution-surface-active: initial; /* TODO */
16363
+ --db-caution-surface-selected: initial; /* TODO */
16362
16364
 
16363
- --db-text-on-success-surface: initial; /* TODO */
16364
- --db-success-text-on-neutral-surface: var(--db-color-text-validation-success);
16365
+ --db-caution-text: var(--db-color-text-validation-warning);
16366
+ --db-text-on-caution-surface: initial; /* TODO */
16365
16367
 
16366
- --db-success-border: initial; /* TODO */
16368
+ --db-caution-border: var(--db-color-border-warning);
16369
+ --db-caution-border-hover: initial; /* TODO */
16370
+ --db-caution-border-active: initial; /* TODO */
16371
+
16372
+ /* Positive */
16373
+ --db-positive-surface: initial; /* TODO */
16374
+ --db-positive-surface-subtle: var(--db-color-background-success);
16375
+ --db-positive-surface-strong: initial; /* TODO */
16376
+
16377
+ --db-positive-surface-hover: initial; /* TODO */
16378
+ --db-positive-surface-active: initial; /* TODO */
16379
+ --db-positive-surface-selected: initial; /* TODO */
16380
+
16381
+ --db-positive-text: var(--db-color-text-validation-success);
16382
+ --db-text-on-positive-surface: initial; /* TODO */
16383
+
16384
+ --db-positive-border: initial; /* TODO */
16385
+ --db-positive-border-hover: initial; /* TODO */
16386
+ --db-positive-border-active: initial; /* TODO */
16367
16387
  }
16368
16388
 
16369
16389
  :where(.du-bois-dark) {
16370
16390
  --db-layout-unit: 0.25rem; /* 4px */
16371
16391
  --db-density-scalar: 1;
16372
16392
  --db-size-scalar: 1;
16373
- --db-spacing-scalar: 1;
16393
+ --db-space-scalar: 1;
16374
16394
 
16375
16395
  /* Size and spacing are the same steps, but with their own scalars included in the calc. */
16376
16396
 
16377
- --db-size-3xs: calc(var(--db-layout-unit) * 1 * var(--db-density-scalar) * var(--db-size-scalar)); /* 4px */
16378
- --db-size-2xs: calc(var(--db-layout-unit) * 2 * var(--db-density-scalar) * var(--db-size-scalar)); /* 8px */
16379
- --db-size-xs: calc(var(--db-layout-unit) * 4 * var(--db-density-scalar) * var(--db-size-scalar)); /* 16px */
16380
- --db-size-sm: calc(var(--db-layout-unit) * 6 * var(--db-density-scalar) * var(--db-size-scalar)); /* 24px */
16381
- --db-size-md: calc(var(--db-layout-unit) * 8 * var(--db-density-scalar) * var(--db-size-scalar)); /* 32px */
16382
- --db-size-lg: calc(var(--db-layout-unit) * 10 * var(--db-density-scalar) * var(--db-size-scalar)); /* 40px */
16397
+ --db-size-1: calc(var(--db-layout-unit) * 1 * var(--db-density-scalar) * var(--db-size-scalar)); /* 4px */
16398
+ --db-size-2: calc(var(--db-layout-unit) * 2 * var(--db-density-scalar) * var(--db-size-scalar)); /* 8px */
16399
+ --db-size-3: calc(var(--db-layout-unit) * 3 * var(--db-density-scalar) * var(--db-size-scalar)); /* 12px */
16400
+ --db-size-4: calc(var(--db-layout-unit) * 4 * var(--db-density-scalar) * var(--db-size-scalar)); /* 16px */
16401
+ --db-size-5: calc(var(--db-layout-unit) * 5 * var(--db-density-scalar) * var(--db-size-scalar)); /* 20px */
16402
+ --db-size-6: calc(var(--db-layout-unit) * 6 * var(--db-density-scalar) * var(--db-size-scalar)); /* 24px */
16403
+ --db-size-7: calc(var(--db-layout-unit) * 7 * var(--db-density-scalar) * var(--db-size-scalar)); /* 28px */
16404
+ --db-size-8: calc(var(--db-layout-unit) * 8 * var(--db-density-scalar) * var(--db-size-scalar)); /* 32px */
16405
+ --db-size-10: calc(var(--db-layout-unit) * 10 * var(--db-density-scalar) * var(--db-size-scalar)); /* 40px */
16406
+ --db-size-12: calc(var(--db-layout-unit) * 12 * var(--db-density-scalar) * var(--db-size-scalar)); /* 48px */
16383
16407
 
16384
- --db-spacing-3xs: calc(var(--db-layout-unit) * 1 * var(--db-density-scalar) * var(--db-spacing-scalar)); /* 4px */
16385
- --db-spacing-2xs: calc(var(--db-layout-unit) * 2 * var(--db-density-scalar) * var(--db-spacing-scalar)); /* 8px */
16386
- --db-spacing-xs: calc(var(--db-layout-unit) * 4 * var(--db-density-scalar) * var(--db-spacing-scalar)); /* 16px */
16387
- --db-spacing-sm: calc(var(--db-layout-unit) * 6 * var(--db-density-scalar) * var(--db-spacing-scalar)); /* 24px */
16388
- --db-spacing-md: calc(var(--db-layout-unit) * 8 * var(--db-density-scalar) * var(--db-spacing-scalar)); /* 32px */
16389
- --db-spacing-lg: calc(var(--db-layout-unit) * 10 * var(--db-density-scalar) * var(--db-spacing-scalar)); /* 40px */
16408
+ --db-space-0-5: calc(var(--db-layout-unit) * 0.5 * var(--db-density-scalar) * var(--db-space-scalar)); /* 2px */
16409
+ --db-space-1: calc(var(--db-layout-unit) * 1 * var(--db-density-scalar) * var(--db-space-scalar)); /* 4px */
16410
+ --db-space-2: calc(var(--db-layout-unit) * 2 * var(--db-density-scalar) * var(--db-space-scalar)); /* 8px */
16411
+ --db-space-3: calc(var(--db-layout-unit) * 3 * var(--db-density-scalar) * var(--db-space-scalar)); /* 12px */
16412
+ --db-space-4: calc(var(--db-layout-unit) * 4 * var(--db-density-scalar) * var(--db-space-scalar)); /* 16px */
16413
+ --db-space-6: calc(var(--db-layout-unit) * 6 * var(--db-density-scalar) * var(--db-space-scalar)); /* 24px */
16414
+ --db-space-8: calc(var(--db-layout-unit) * 8 * var(--db-density-scalar) * var(--db-space-scalar)); /* 32px */
16415
+ --db-space-10: calc(var(--db-layout-unit) * 10 * var(--db-density-scalar) * var(--db-space-scalar)); /* 40px */
16390
16416
  }
16391
16417
 
16392
16418
  :where(.du-bois-dark) {
16393
16419
  --db-font-family:
16394
16420
  "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
16421
+ --db-numeric-font-family: var(--db-font-family);
16395
16422
  --db-mono-font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
16396
16423
 
16397
- --db-font-size-2xs: 0.6875rem; /* 11px */
16398
- --db-font-size-xs: 0.75rem; /* 12px */
16424
+ --db-font-size-xs: 0.6875rem; /* 11px */
16425
+ --db-font-size-sm: 0.75rem; /* 12px */
16399
16426
  --db-font-size-base: 0.8125rem; /* 13px */
16400
16427
  --db-font-size-md: 0.875rem; /* 14px */
16401
16428
  --db-font-size-lg: 0.9375rem; /* 15px */
@@ -16404,6 +16431,8 @@ span.du-bois-dark-typography-ellipsis-single-line {
16404
16431
  --db-font-size-3xl: 1.5rem; /* 24px */
16405
16432
  --db-font-size-4xl: 2rem; /* 32px */
16406
16433
 
16434
+ /* TODO: media query for mobile font sizes */
16435
+
16407
16436
  /* Du Bois v1 ships 400 and 600 only */
16408
16437
  --db-font-weight-normal: 400;
16409
16438
  --db-font-weight-medium: initial; /* TODO */
@@ -16421,6 +16450,16 @@ span.du-bois-dark-typography-ellipsis-single-line {
16421
16450
  :where(.du-bois-dark) {
16422
16451
  --db-focus-ring-color: var(--db-color-action-default-border-focus);
16423
16452
  --db-focus-ring-width: 2px;
16453
+ --db-focus-ring-offset: 2px;
16454
+ }
16455
+
16456
+ :where(.du-bois-dark) {
16457
+ --db-shape-control: 4px;
16458
+ --db-shape-control-large: 999px;
16459
+ --db-shape-container-small: 8px;
16460
+ --db-shape-container-medium: 12px;
16461
+ --db-shape-container-large: 16px;
16462
+ --db-shape-pill: 999px;
16424
16463
  }
16425
16464
 
16426
16465
  :where(.du-bois-dark) {
@@ -16428,31 +16467,31 @@ span.du-bois-dark-typography-ellipsis-single-line {
16428
16467
  --db-selection-toggle-border-radius: 4px;
16429
16468
 
16430
16469
  /* Color */
16431
- --db-selection-toggle-surface: var(--db-neutral-surface);
16432
- --db-selection-toggle-mark: var(--db-text-on-primary-surface);
16433
- --db-selection-toggle-text: var(--db-text-on-neutral-surface);
16434
- --db-selection-toggle-border: var(--db-strong-neutral-border);
16470
+ --db-selection-toggle-surface: var(--db-surface-base);
16471
+ --db-selection-toggle-mark: var(--db-text-on-accent-surface);
16472
+ --db-selection-toggle-text: var(--db-text-base);
16473
+ --db-selection-toggle-border: var(--db-border-strong);
16435
16474
 
16436
- --db-selection-toggle-surface-hover: var(--db-neutral-surface-hover);
16437
- --db-selection-toggle-surface-press: var(--db-neutral-surface-pressed);
16438
- --db-selection-toggle-surface-checked: var(--db-primary-surface);
16439
- --db-selection-toggle-surface-checked-hover: var(--db-primary-surface-hover);
16440
- --db-selection-toggle-surface-checked-press: var(--db-primary-surface-pressed);
16441
- --db-selection-toggle-surface-disabled: var(--db-neutral-surface-disabled);
16442
- --db-selection-toggle-surface-checked-disabled: var(--db-neutral-surface-disabled);
16475
+ --db-selection-toggle-surface-hover: var(--db-surface-hover);
16476
+ --db-selection-toggle-surface-press: var(--db-surface-selected);
16477
+ --db-selection-toggle-surface-checked: var(--db-accent-surface);
16478
+ --db-selection-toggle-surface-checked-hover: var(--db-accent-surface-hover);
16479
+ --db-selection-toggle-surface-checked-press: var(--db-accent-surface-selected);
16480
+ --db-selection-toggle-surface-disabled: var(--db-surface-disabled);
16481
+ --db-selection-toggle-surface-checked-disabled: var(--db-surface-disabled);
16443
16482
 
16444
- --db-selection-toggle-border-hover: var(--db-primary-surface-hover);
16445
- --db-selection-toggle-border-press: var(--db-primary-surface-pressed);
16446
- --db-selection-toggle-border-disabled: var(--db-neutral-border);
16483
+ --db-selection-toggle-border-hover: var(--db-accent-surface-hover);
16484
+ --db-selection-toggle-border-press: var(--db-accent-surface-selected);
16485
+ --db-selection-toggle-border-disabled: var(--db-border-base);
16447
16486
 
16448
- --db-selection-toggle-mark-disabled: var(--db-text-on-neutral-surface-disabled);
16449
- --db-selection-toggle-text-disabled: var(--db-text-on-neutral-surface-disabled);
16487
+ --db-selection-toggle-mark-disabled: var(--db-text-disabled);
16488
+ --db-selection-toggle-text-disabled: var(--db-text-disabled);
16450
16489
 
16451
16490
  --db-selection-toggle-shadow-checked: 0 0 0 1px var(--db-color-action-primary-background-default);
16452
16491
 
16453
16492
  /* Density */
16454
- --db-selection-toggle-size: var(--db-size-xs);
16455
- --db-selection-toggle-label-spacing: var(--db-spacing-2xs);
16493
+ --db-selection-toggle-size: var(--db-size-4);
16494
+ --db-selection-toggle-label-spacing: var(--db-space-2);
16456
16495
 
16457
16496
  /* Motion */
16458
16497
  --db-selection-toggle-transition-duration: 120ms;
@@ -16489,8 +16528,8 @@ span.du-bois-dark-typography-ellipsis-single-line {
16489
16528
  --db-checkbox-size: var(--db-selection-toggle-size);
16490
16529
  --db-checkbox-label-spacing: var(--db-selection-toggle-label-spacing);
16491
16530
  --db-checkbox-focus-ring-width: var(--db-focus-ring-width);
16492
- --db-checkbox-indeterminate-mark-width: var(--db-size-2xs); /* 8px */
16493
- --db-checkbox-indeterminate-mark-height: calc(var(--db-size-3xs) * 0.75); /* 3px */
16531
+ --db-checkbox-indeterminate-mark-width: var(--db-size-2); /* 8px */
16532
+ --db-checkbox-indeterminate-mark-height: calc(var(--db-size-1) * 0.75); /* 3px */
16494
16533
 
16495
16534
  /* Motion */
16496
16535
  --db-checkbox-transition-duration: var(--db-selection-toggle-transition-duration);
@@ -16504,16 +16543,16 @@ span.du-bois-dark-typography-ellipsis-single-line {
16504
16543
  *
16505
16544
  * Structure (assumed by the React component):
16506
16545
  *
16507
- * <label class="ds-checkbox">
16508
- * <input type="checkbox" class="ds-checkbox-input" />
16509
- * <span class="ds-checkbox-indicator"> ← border + fill react to state
16510
- * <svg class="ds-checkbox-checkmark" .../> ← visible when :checked
16511
- * <span class="ds-checkbox-dash" /> ← visible when :indeterminate
16546
+ * <label class="db-checkbox">
16547
+ * <input type="checkbox" class="db-checkbox-input" />
16548
+ * <span class="db-checkbox-indicator"> ← border + fill react to state
16549
+ * <svg class="db-checkbox-checkmark" .../> ← visible when :checked
16550
+ * <span class="db-checkbox-dash" /> ← visible when :indeterminate
16512
16551
  * </span>
16513
- * <span class="ds-checkbox-label">{children}</span>
16552
+ * <span class="db-checkbox-label">{children}</span>
16514
16553
  * </label>
16515
16554
  *
16516
- * State and hiding rules target `.ds-checkbox-input` — the checkbox's OWN input —
16555
+ * State and hiding rules target `.db-checkbox-input` — the checkbox's OWN input —
16517
16556
  * never a bare `input`: consumers may render an inline <input> (e.g. a number
16518
16557
  * field) inside the label children, and a descendant `input` selector would hide
16519
16558
  * / absolutely-position that field and mis-drive the `:has(…)` state rules. */
@@ -16561,7 +16600,7 @@ span.du-bois-dark-typography-ellipsis-single-line {
16561
16600
  *
16562
16601
  * Each helper-text class is listed once per theme (`du-bois-light-*` /
16563
16602
  * `du-bois-dark-*`). The selectors deliberately repeat the root/group class
16564
- * (`.ds-checkbox.ds-checkbox`) to push specificity to (0,3,0). That
16603
+ * (`.db-checkbox.db-checkbox`) to push specificity to (0,3,0). That
16565
16604
  * overrides `FormMessage`'s own `&&`-doubled `margin-top: 8px` declared with
16566
16605
  * Emotion at runtime — without doubling we'd lose on the specificity tie and
16567
16606
  * the validation message would keep an 8px gap below the checkbox. */
@@ -16574,16 +16613,16 @@ span.du-bois-dark-typography-ellipsis-single-line {
16574
16613
  * follows a Hint, 8px gap above a FormMessage when it follows the group.
16575
16614
  * Doubled class on the group side beats FormMessage's `&&` for the same reason. */
16576
16615
 
16577
- /* CheckboxGroup layout. Vertical delegates to the `.ds-stack` primitive; the
16616
+ /* CheckboxGroup layout. Vertical delegates to the `.db-stack` primitive; the
16578
16617
  * horizontal default stays bespoke because it must NOT wrap (a long row of
16579
16618
  * checkboxes overflows horizontally rather than reflowing onto multiple lines),
16580
- * which is the one thing `.ds-cluster` won't do. Both wire their gap to the
16619
+ * which is the one thing `.db-cluster` won't do. Both wire their gap to the
16581
16620
  * checkbox spacing token so a retheme moves with the rest of the component. */
16582
16621
 
16583
- /* Horizontal (default): single non-wrapping row. `:not(.ds-stack)` keeps this
16622
+ /* Horizontal (default): single non-wrapping row. `:not(.db-stack)` keeps this
16584
16623
  * off the vertical element so it never fights the stack primitive's gap. */
16585
16624
 
16586
- /* Vertical: .ds-stack supplies flex-direction + gap; we only retarget the knob. */
16625
+ /* Vertical: .db-stack supplies flex-direction + gap; we only retarget the knob. */
16587
16626
 
16588
16627
  :where(.du-bois-dark) {
16589
16628
  /* Shape */
@@ -16617,7 +16656,7 @@ span.du-bois-dark-typography-ellipsis-single-line {
16617
16656
  /* Density */
16618
16657
  --db-radio-size: var(--db-selection-toggle-size);
16619
16658
  --db-radio-label-spacing: var(--db-selection-toggle-label-spacing);
16620
- --db-radio-mark-size: var(--db-size-3xs);
16659
+ --db-radio-mark-size: var(--db-size-1);
16621
16660
 
16622
16661
  /* Motion */
16623
16662
  --db-radio-transition-duration: var(--db-selection-toggle-transition-duration);
@@ -16631,12 +16670,12 @@ span.du-bois-dark-typography-ellipsis-single-line {
16631
16670
  *
16632
16671
  * Structure (assumed by the React component):
16633
16672
  *
16634
- * <label class="ds-radio">
16673
+ * <label class="db-radio">
16635
16674
  * <input type="radio" />
16636
- * <span class="ds-radio-indicator"> ← circle border + fill react to state
16637
- * <span class="ds-radio-dot" /> ← visible when :checked
16675
+ * <span class="db-radio-indicator"> ← circle border + fill react to state
16676
+ * <span class="db-radio-dot" /> ← visible when :checked
16638
16677
  * </span>
16639
- * <span class="ds-radio-label">{children}</span>
16678
+ * <span class="db-radio-label">{children}</span>
16640
16679
  * </label>
16641
16680
  *
16642
16681
  * The root only ever has one <input> descendant, so a bare `input` selector is
@@ -16645,7 +16684,7 @@ span.du-bois-dark-typography-ellipsis-single-line {
16645
16684
  * checkmark/dash, and there is no indeterminate state.
16646
16685
  *
16647
16686
  * TODO(DUBOIS-452): the indicator/dot state styles below are identical to
16648
- * NativeCheckbox.css — consolidate them into a shared `.ds-selection-toggle` class. */
16687
+ * NativeCheckbox.css — consolidate them into a shared `.db-selection-toggle` class. */
16649
16688
 
16650
16689
  /* Hover/press live on the root (label), not on the input: the input is
16651
16690
  * visually hidden (opacity:0), so an `input:hover` rule wouldn't be visible
@@ -16703,16 +16742,16 @@ span.du-bois-dark-typography-ellipsis-single-line {
16703
16742
  * after a radio gets `marginTop: -sm` (cancels the preceding radio's
16704
16743
  * `paddingBottom: sm` so the hint tucks directly under its label) and
16705
16744
  * `marginBottom: sm` (gap before the next radio). The negative top margin relies on
16706
- * the .ds-stack gap being 0 (set below). Scoped to .ds-stack so it never perturbs
16745
+ * the .db-stack gap being 0 (set below). Scoped to .db-stack so it never perturbs
16707
16746
  * the horizontal grid, where hints are positioned by grid-row instead. */
16708
16747
 
16709
16748
  /* AntD `& > label:last-of-type + hint { marginTop: 0 }`: the last radio has no
16710
16749
  * `paddingBottom` to cancel, so its trailing hint keeps its natural top position. */
16711
16750
 
16712
16751
  /* RadioGroup layout. Vertical (the default) delegates flex-direction to the
16713
- * .ds-stack primitive; horizontal is a two-row grid (mirroring AntD). */
16752
+ * .db-stack primitive; horizontal is a two-row grid (mirroring AntD). */
16714
16753
 
16715
- /* Vertical: .ds-stack supplies flex-direction: column. AntD's vertical helper
16754
+ /* Vertical: .db-stack supplies flex-direction: column. AntD's vertical helper
16716
16755
  * (getVerticalRadioGroupStyles) produces its item rhythm purely from
16717
16756
  * `& > label { paddingBottom: sm }` plus the negative-margin hint trick above — it
16718
16757
  * uses NO flex gap. The negative `marginTop` on hints only works if the stack adds
@@ -16724,9 +16763,9 @@ span.du-bois-dark-typography-ellipsis-single-line {
16724
16763
  /* AntD `& > label:last-of-type { paddingBottom: 0 }`. */
16725
16764
 
16726
16765
  /* AntD getVerticalRadioGroupStyles `.${prefix}-radio-tile + .${prefix}-radio-tile {
16727
- * marginTop: md }`: RadioTiles are not matched by the `.ds-radio` padding-bottom
16766
+ * marginTop: md }`: RadioTiles are not matched by the `.db-radio` padding-bottom
16728
16767
  * rhythm above (the tile's own class is du-bois-{light,dark}-radio-tile), so space
16729
- * consecutive tiles explicitly. The .ds-stack gap is 0, so this margin is the spacing. */
16768
+ * consecutive tiles explicitly. The .db-stack gap is 0, so this margin is the spacing. */
16730
16769
 
16731
16770
  /* Horizontal: AntD `getHorizontalRadioGroupStyles` is a TWO-ROW grid (NOT a flex
16732
16771
  * row) so each radio sits in the [label] row and its following hint drops into the
@@ -16739,13 +16778,13 @@ span.du-bois-dark-typography-ellipsis-single-line {
16739
16778
 
16740
16779
  /* AntD `& > label, & > .${prefix}-radio-tile { gridRow: label / label; marginRight: 0 }`:
16741
16780
  * every radio (and every RadioTile button, whose own class is
16742
- * du-bois-{light,dark}-radio-tile and is NOT matched by `> .ds-radio`) lives in the
16781
+ * du-bois-{light,dark}-radio-tile and is NOT matched by `> .db-radio`) lives in the
16743
16782
  * label row. grid-auto-flow defaults to row, so successive items advance the implicit
16744
16783
  * column. */
16745
16784
 
16746
16785
  /* AntD `& > label + hint { display: inline-block; gridRow: hint / hint }`: a hint
16747
16786
  * following a radio drops into the hint row of the column its radio occupies. The
16748
- * vertical negative-margin rules are scoped to .ds-stack, so nothing to reset here. */
16787
+ * vertical negative-margin rules are scoped to .db-stack, so nothing to reset here. */
16749
16788
 
16750
16789
  /* AntD `:has(> hint) { marginTop: sm }`: when the horizontal group contains a hint,
16751
16790
  * the group itself gets a top margin (room above the two-row grid). */
@@ -16783,8 +16822,8 @@ span.du-bois-dark-typography-ellipsis-single-line {
16783
16822
  --db-switch-text-disabled: var(--db-selection-toggle-text-disabled);
16784
16823
 
16785
16824
  /* Density */
16786
- --db-switch-track-width: calc(var(--db-size-xs) * 1.75); /* 28px */
16787
- --db-switch-track-height: var(--db-size-xs); /* 16px */
16825
+ --db-switch-track-width: calc(var(--db-size-4) * 1.75); /* 28px */
16826
+ --db-switch-track-height: var(--db-size-4); /* 16px */
16788
16827
  --db-switch-thumb-size: var(--db-switch-track-height);
16789
16828
  --db-switch-label-spacing: var(--db-selection-toggle-label-spacing);
16790
16829
 
@@ -16808,7 +16847,235 @@ span.du-bois-dark-typography-ellipsis-single-line {
16808
16847
 
16809
16848
  /* `:first-child` scopes this to the label-first layout; the plain layout renders the label last. */
16810
16849
 
16811
- /* Target the <Label>'s class, not a bare `label` — that would also match the .ds-switch root <label>. */
16850
+ /* Target the <Label>'s class, not a bare `label` — that would also match the .db-switch root <label>. */
16812
16851
 
16813
16852
  /* Indent a following hint/message past the track. The class is doubled to out-specify FormMessage's
16814
- * own margin rule. */
16853
+ * own margin rule. Each rule's key (rightmost) selector is a single class, not a multi-item :is(),
16854
+ * so Chromium can hash-reject it instead of attempting the match against every element on every
16855
+ * recalc (the leading/middle :is() groups aren't the key selector, so they're left as-is). */
16856
+
16857
+ /* Component-tier tokens for the native <Button>, grouped by area (density, shape, typography, color).
16858
+ * Colors alias the action-* system tokens; sizes alias the system density scale.
16859
+ *
16860
+ * Follows the mortar/action.css pattern: one semantic set (surface / border / text, each with
16861
+ * -hover / -press / -disabled) whose defaults are the secondary variant. The variant classes that
16862
+ * re-set these tokens per variant live in NativeButton.css; this file declares only tokens. */
16863
+
16864
+ /* Declared under the theme classes too (not just :root) so the var() chain re-resolves inside a
16865
+ * `.du-bois-dark` subtree (or a portal that re-applies the theme class) instead of freezing at the root values. */
16866
+ :where(.du-bois-dark) {
16867
+ /* ── Density ──────────────────────────────────────────────────────────── */
16868
+ --db-btn-height: var(--db-size-8);
16869
+ --db-btn-height-small: var(--db-size-6);
16870
+ --db-btn-icon-size: var(--db-size-4);
16871
+ --db-btn-border-width: 1px;
16872
+ --db-btn-padding-vertical: var(--db-space-1);
16873
+ --db-btn-padding-horizontal: var(--db-space-3);
16874
+ --db-btn-padding-horizontal-small: var(--db-space-2);
16875
+ /* Icon/force-icon horizontal padding: half the standard horizontal padding. */
16876
+ --db-btn-padding-horizontal-icon: calc(var(--db-space-3) / 2); /* 6px */
16877
+ --db-btn-gap: var(--db-space-1);
16878
+ --db-btn-end-icon-gap: var(--db-space-2);
16879
+ --db-btn-end-icon-gap-small: var(--db-space-1);
16880
+ /* Width of a content-less button while loading, so the standalone spinner has room. */
16881
+ --db-btn-loading-empty-width: var(--db-size-10);
16882
+
16883
+ /* ── Shape ────────────────────────────────────────────────────────────── */
16884
+ --db-btn-border-radius: var(--db-shape-control);
16885
+
16886
+ /* ── Typography ───────────────────────────────────────────────────────── */
16887
+ --db-btn-font-size: var(--db-font-size-base);
16888
+ --db-btn-icon-only-font-size: var(--db-font-size-lg); /* 15px */
16889
+ --db-btn-font-weight: var(--db-font-weight-normal);
16890
+ /* Line heights are hard-coded until the typography scale ships computed per-level line-height tokens. */
16891
+ --db-btn-line-height: 1.25rem; /* 20px */
16892
+ --db-btn-line-height-small: 1rem; /* 16px */
16893
+
16894
+ /* ── Color: semantic set (defaults = secondary variant) ───────────────── */
16895
+ --db-btn-surface: var(--db-color-action-default-background-default);
16896
+ --db-btn-surface-hover: var(--db-color-action-default-background-hover);
16897
+ --db-btn-surface-press: var(--db-color-action-default-background-press);
16898
+ --db-btn-surface-disabled: transparent;
16899
+ --db-btn-border: var(--db-color-action-default-border-default);
16900
+ --db-btn-border-hover: var(--db-color-action-default-border-hover);
16901
+ --db-btn-border-press: var(--db-color-action-default-border-press);
16902
+ --db-btn-border-disabled: var(--db-color-action-disabled-border);
16903
+ --db-btn-text: var(--db-color-action-default-text-default);
16904
+ --db-btn-text-hover: var(--db-color-action-default-text-hover);
16905
+ --db-btn-text-press: var(--db-color-action-default-text-press);
16906
+ --db-btn-text-disabled: var(--db-color-action-disabled-text);
16907
+
16908
+ /* ── Focus & icon ─────────────────────────────────────────────────────── */
16909
+ --db-btn-focus-ring: var(--db-color-action-default-border-focus);
16910
+ --db-btn-danger-focus-ring: var(--db-color-action-danger-primary-background-default);
16911
+ --db-btn-icon-glyph: var(--db-color-text-secondary);
16912
+ }
16913
+
16914
+ /* Native <Button> visual styles. Consumes the component-tier `--db-btn-*` tokens (see tokens.css);
16915
+ * the variant classes below re-set those tokens per variant and the rules that follow paint them.
16916
+ * Shipped via mortar.css. */
16917
+
16918
+ /* ── 0. Variant token re-sets ──────────────────────────────────────────────
16919
+ * Each variant class re-sets the semantic tokens declared in tokens.css; combined classes win by
16920
+ * specificity, which beats the `:where(:root)` (specificity 0) defaults regardless of file order. */
16921
+ /* Link is borderless and text-only, so its hover/press surface stays transparent. */
16922
+ /* Every danger button (icon included) disables to the filled treatment. */
16923
+ /* Danger, filled (primary): re-set only the surface; text/transparent border come from primary. */
16924
+ /* Danger, secondary/outlined. */
16925
+ /* Danger, tertiary/link: danger text everywhere, danger surface on hover/press; resting/disabled
16926
+ * surface stay the tertiary ghost (override the filled danger-disabled set above). */
16927
+ /* Icon-only renders as the ghost (tertiary) treatment regardless of variant; re-set the semantic set
16928
+ * so the icon-only rules paint from these component tokens. */
16929
+ /* Danger icon-only keeps the ghost resting surface (inherited above) but uses danger text and a
16930
+ * danger hover/press surface. */
16931
+
16932
+ /* ── 1. Base — paints the default (secondary) variant ────────────────────── */
16933
+
16934
+ /* ── 2. Padding ──────────────────────────────────────────────────────────── */
16935
+
16936
+ /* ── 3. Interactive states ───────────────────────────────────────────────── */
16937
+
16938
+ /* ── 4. Focus ────────────────────────────────────────────────────────────── */
16939
+
16940
+ /* ── 5. Small / full-width / empty ────────────────────────────────────────── */
16941
+
16942
+ /* ── 6. Tertiary & link ──────────────────────────────────────────────────── */
16943
+ /* Re-declare the text color for a non-icon-only tertiary/link at two-class weight so a plain
16944
+ * call-site `color` override loses; an icon-only glyph stays at base weight so its override wins. */
16945
+ /* Keep the resting border at two-class weight (parity with the shielded border-color). */
16946
+
16947
+ /* ── 7. Danger ───────────────────────────────────────────────────────────── */
16948
+
16949
+ /* ── 8. Icon-only ────────────────────────────────────────────────────────── */
16950
+ /* `:where()` keeps this at (0,1,0) so a call-site `css` width override wins, as it does for `height`. */
16951
+ /* `:where()` on the exclusion holds this at (0,2,0): enough to tint an un-overridden icon-only link
16952
+ * over the base color, while still letting a consumer's own icon-color override win on source order. */
16953
+
16954
+ /* ── 9. Disabled — base rules paint the per-variant `*-disabled` tokens (see tokens.css) ──────── */
16955
+ /* Empty and loading disabled buttons keep a transparent border (set elsewhere), so exclude them.
16956
+ * `:where()` on the exclusion holds this at (0,2,0): enough to beat the base border, while still
16957
+ * letting a consumer's own `[disabled]` border override win on source order. */
16958
+
16959
+ /* ── 10. Icon & content layout ───────────────────────────────────────────── */
16960
+ /* The leading icon renders unwrapped as the button's direct `.anticon` child (see NativeButton.tsx),
16961
+ * so `> .anticon` targets only a real icon glyph — a non-glyph `icon` (e.g. a Spinner) keeps its own
16962
+ * sizing — and out-specifies AntD's runtime-injected global `.anticon` rule. */
16963
+
16964
+ /* ── 11. Loading ─────────────────────────────────────────────────────────── */
16965
+
16966
+ /* ── 12. dangerouslySetForceIconStyles ───────────────────────────────────── */
16967
+
16968
+ :where(.du-bois-dark) {
16969
+ /* Shape */
16970
+ /* Must not scale with density; no non-scaling system token holds it. TODO(FEINF-6505): adopt a v2 system token when one is added. */
16971
+ --db-navigation-menu-indicator-thickness: 4px;
16972
+ /* No system token holds this control-specific inset. TODO(FEINF-6505): adopt a v2 system token when one is added. */
16973
+ --db-navigation-menu-focus-ring-offset: -1px;
16974
+
16975
+ /* Color */
16976
+ --db-navigation-menu-indicator: var(--db-accent-surface);
16977
+ --db-navigation-menu-focus-ring: var(--db-focus-ring-color);
16978
+ --db-navigation-menu-text: var(--db-text-subtle);
16979
+ --db-navigation-menu-text-active: var(--db-text-base);
16980
+ /* No v2 semantic for default-action link text yet; bridges on the v1 --db-color-* token. */
16981
+ --db-navigation-menu-text-hover: var(--db-color-action-default-text-hover);
16982
+ --db-navigation-menu-text-press: var(--db-color-action-default-text-press);
16983
+
16984
+ /* Density */
16985
+ --db-navigation-menu-item-height: var(--db-size-8);
16986
+ --db-navigation-menu-item-min-width: var(--db-size-6);
16987
+ --db-navigation-menu-link-padding-top: var(--db-space-1);
16988
+ --db-navigation-menu-link-padding-bottom: var(--db-space-2);
16989
+ --db-navigation-menu-focus-ring-width: var(--db-focus-ring-width);
16990
+ }
16991
+
16992
+ :where(.du-bois-dark) {
16993
+ /* Shape */
16994
+ /* TODO(FEINF-6505): adopt --db-shape-container-* once a 4px container radius exists; kept on --db-radius-sm to preserve 4px. */
16995
+ --db-snackbar-border-radius: var(--db-radius-sm);
16996
+
16997
+ /* Density */
16998
+ --db-snackbar-spacing-vertical: var(--db-space-3);
16999
+ --db-snackbar-spacing-horizontal: var(--db-space-4);
17000
+ --db-snackbar-close-button-spacing: var(--db-space-2);
17001
+
17002
+ /* Color */
17003
+ /* No v1/v2 system token holds this theme-invariant white. TODO(FEINF-6505): adopt a v2 system token when one is added. */
17004
+ --db-snackbar-text: #ffffff;
17005
+ /* No v1/v2 system token holds these theme-invariant close-icon colors. TODO(FEINF-6505): adopt a v2 system token when one is added. */
17006
+ --db-snackbar-close-icon: #e8ecf0;
17007
+ --db-snackbar-close-icon-hover: #8acaff;
17008
+ --db-snackbar-close-icon-press: #bae1fc;
17009
+ }
17010
+
17011
+ :where(.du-bois-dark) {
17012
+ /* Color */
17013
+ /* No v1/v2 system token holds this light/dark surface pair. TODO(FEINF-6505): adopt a v2 system token when one is added. */
17014
+ --db-snackbar-surface: #445461;
17015
+
17016
+ /* Elevation */
17017
+ /* No v1/v2 system token holds this dark shadow; --db-elevation-med is theme-invariant (light). TODO(FEINF-6505): adopt a v2 system token when one is added. */
17018
+ --db-snackbar-shadow: 0px 2px 16px 0px rgba(0, 0, 0, 0.61);
17019
+ }
17020
+
17021
+ /* Tooltip renders an inverted surface (dark chip in light mode, light chip in dark mode), so it does
17022
+ * not draw from the popover family's neutral surface. Surface/text reference the v1 tooltip
17023
+ * primitives from tokens-groups until a v2 semantic exists. */
17024
+
17025
+ :where(.du-bois-dark) {
17026
+ /* Shape */
17027
+ --db-tooltip-border-radius: var(--db-radius-sm);
17028
+
17029
+ /* Density */
17030
+ --db-tooltip-spacing-vertical: var(--db-space-1);
17031
+ --db-tooltip-spacing-horizontal: var(--db-space-2);
17032
+
17033
+ /* Typography */
17034
+ --db-tooltip-font-size: var(--db-font-size-base);
17035
+ --db-tooltip-font-weight: var(--db-font-weight-normal);
17036
+ }
17037
+
17038
+ :where(.du-bois-dark) {
17039
+ /* Color */
17040
+ --db-tooltip-surface: var(--db-color-tooltip-background-tooltip);
17041
+ --db-tooltip-text: var(--db-color-tooltip-text-tooltip);
17042
+ /* Darker v1 blue primitives than light mode — the chip is light here, so links need contrast. */
17043
+ --db-tooltip-link-text: #2272b4; /* blue600 */
17044
+ --db-tooltip-link-text-hover: #0e538b; /* blue700 */
17045
+ --db-tooltip-link-text-press: #04355d; /* blue800 */
17046
+
17047
+ /* Elevation */
17048
+ /* v2 elevation tokens are theme-invariant, so --db-elevation-med would keep the light shadow here.
17049
+ * Hold the v1 dark shadow as a literal to avoid a regression until elevation gains a dark value. */
17050
+ --db-tooltip-shadow: 0px 2px 16px 0px rgba(0, 0, 0, 0.61);
17051
+ }
17052
+
17053
+ /* Declared under the theme classes too (not just :root) so the var() chain re-resolves inside a
17054
+ * `.du-bois-dark` subtree instead of freezing at the light values. */
17055
+ :where(.du-bois-dark) {
17056
+ /* Shape */
17057
+ --db-progress-border-radius: var(--db-shape-pill);
17058
+
17059
+ /* Color */
17060
+ --db-progress-track: var(--db-color-progress-track);
17061
+ --db-progress-fill: var(--db-color-progress-fill);
17062
+
17063
+ /* Density */
17064
+ --db-progress-size: var(--db-size-2);
17065
+
17066
+ /* Motion */
17067
+ /* No v2 motion token holds this duration. TODO(FEINF-6505): adopt a v2 motion token when one is added. */
17068
+ --db-progress-transition-duration: 300ms;
17069
+ }
17070
+
17071
+ :where(.du-bois-dark) {
17072
+ /* Color */
17073
+ /* No v2 token holds tertiary action-text states yet. TODO(FEINF-6505): adopt a v2 token when one lands. */
17074
+ --db-overflow-trigger-text: var(--db-color-action-tertiary-text-default);
17075
+ --db-overflow-trigger-text-hover: var(--db-color-action-tertiary-text-hover);
17076
+ --db-overflow-trigger-text-press: var(--db-color-action-tertiary-text-press);
17077
+
17078
+ /* Density */
17079
+ --db-overflow-spacing: var(--db-space-2);
17080
+ --db-overflow-menu-spacing: var(--db-space-1);
17081
+ }