@databricks/design-system 2.0.4 → 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 (40) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/RHFControlledTypeaheadComboboxV2-DsH-nIEk.js +172 -0
  3. package/dist/RHFControlledTypeaheadComboboxV2-DsH-nIEk.js.map +1 -0
  4. package/dist/{WizardStepContentWrapper-8bs2FwRi.js → WizardStepContentWrapper-Bq1wm0V7.js} +554 -404
  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 +364 -97
  9. package/dist/index-dark.mitigated.css +367 -100
  10. package/dist/index.css +684 -117
  11. package/dist/index.js +25 -8146
  12. package/dist/index.js.map +1 -1
  13. package/dist/index.mitigated.css +688 -121
  14. package/dist/patterns.js +1 -1
  15. package/dist-types/design-system/Breadcrumb/Breadcrumb.d.ts +10 -3
  16. package/dist-types/design-system/Button/AntDButtonInternal.d.ts +21 -0
  17. package/dist-types/design-system/Button/Button.d.ts +3 -19
  18. package/dist-types/design-system/Button/NativeButton.d.ts +3 -0
  19. package/dist-types/design-system/Button/getBtnClassName.d.ts +17 -0
  20. package/dist-types/design-system/Button/index.d.ts +1 -0
  21. package/dist-types/design-system/DesignSystemProvider/DesignTokenScopeWithEmotionTheme.d.ts +4 -4
  22. package/dist-types/design-system/FormV2/RHFAdapters.d.ts +8 -0
  23. package/dist-types/design-system/FormV2/RHFControlledTypeaheadComboboxV2.d.ts +58 -0
  24. package/dist-types/design-system/Icon/Icon.d.ts +2 -2
  25. package/dist-types/design-system/Icon/__generated/icons/ColorMappingEditIcon.d.ts +4 -0
  26. package/dist-types/design-system/Icon/__generated/icons/ColorMappingIcon.d.ts +4 -0
  27. package/dist-types/design-system/Icon/__generated/icons/MicrophoneIcon.d.ts +4 -0
  28. package/dist-types/design-system/Icon/__generated/icons/MicrophoneOffIcon.d.ts +4 -0
  29. package/dist-types/design-system/Icon/__generated/icons/OperatorIcon.d.ts +4 -0
  30. package/dist-types/design-system/Icon/__generated/icons/VoiceModeIcon.d.ts +4 -0
  31. package/dist-types/design-system/Icon/__generated/icons/index.d.ts +6 -0
  32. package/dist-types/design-system/Overflow/Overflow.d.ts +3 -1
  33. package/dist-types/design-system/Overflow/OverflowPopover.d.ts +2 -1
  34. package/dist-types/design-system/TypeaheadComboboxV2/TypeaheadComboboxMenu.d.ts +2 -0
  35. package/dist-types/design-system/shape-tokens.d.ts +1 -1
  36. package/dist-types/test-utils/rtl/buttonVariants.d.ts +4 -4
  37. package/dist-types/~patterns/Wizard/WizardStepNavigation.d.ts +9 -0
  38. package/dist-types/~patterns/Wizard/index.d.ts +1 -0
  39. package/package.json +6 -4
  40. package/dist/WizardStepContentWrapper-8bs2FwRi.js.map +0 -1
@@ -15820,7 +15820,7 @@ span.du-bois-light-typography-ellipsis-single-line {
15820
15820
  */
15821
15821
  .db-stack {
15822
15822
  /* These variables act as the *parameters* for the stack instance. */
15823
- --db-stack-gap: var(--db-spacing-xs);
15823
+ --db-stack-gap: var(--db-space-4);
15824
15824
  --db-stack-align: stretch;
15825
15825
 
15826
15826
  display: flex;
@@ -15848,7 +15848,7 @@ span.du-bois-light-typography-ellipsis-single-line {
15848
15848
  */
15849
15849
  .db-cluster {
15850
15850
  /* These variables act as the *parameters* for the cluster instance. */
15851
- --db-cluster-gap: var(--db-spacing-2xs);
15851
+ --db-cluster-gap: var(--db-space-2);
15852
15852
  --db-cluster-align: center;
15853
15853
  --db-cluster-justify: flex-start;
15854
15854
 
@@ -15861,81 +15861,101 @@ span.du-bois-light-typography-ellipsis-single-line {
15861
15861
 
15862
15862
  :where(:root), :where(.du-bois-light) {
15863
15863
  /* Neutral */
15864
- --db-neutral-surface: var(--db-color-background-primary);
15865
- --db-subtle-neutral-surface: var(--db-color-background-secondary);
15866
- --db-strong-neutral-surface: initial; /* TODO */
15864
+ --db-surface-base: var(--db-color-background-primary);
15865
+ --db-surface-subtle: var(--db-color-background-secondary);
15866
+ --db-surface-strong: initial; /* TODO */
15867
15867
 
15868
- --db-text-on-neutral-surface: var(--db-color-text-primary);
15869
- --db-subtle-text-on-neutral-surface: var(--db-color-text-secondary);
15870
- --db-strong-text-on-neutral-surface: initial; /* TODO */
15868
+ --db-surface-inverse: initial; /* TODO */
15869
+ --db-surface-active: var(--db-color-table-background-selected-default);
15870
+ --db-surface-hover: var(--db-color-table-background-unselected-hover);
15871
+ --db-surface-disabled: var(--db-color-action-disabled-background);
15871
15872
 
15872
- --db-neutral-border: var(--db-color-border);
15873
- --db-subtle-neutral-border: initial; /* TODO */
15874
- --db-strong-neutral-border: var(--db-color-border-accessible);
15873
+ --db-surface-selected: var(--db-color-table-background-selected-hover);
15874
+ --db-surface-selected-hover: initial; /* TODO */;
15875
+ --db-surface-selected-active: initial; /* TODO */;
15875
15876
 
15876
- --db-neutral-surface-active: var(--db-color-table-background-selected-default);
15877
- --db-neutral-surface-hover: var(--db-color-table-background-unselected-hover);
15878
- --db-neutral-surface-pressed: var(--db-color-table-background-selected-hover);
15879
- --db-neutral-surface-disabled: var(--db-color-action-disabled-background);
15880
- --db-text-on-neutral-surface-disabled: var(--db-color-action-disabled-text);
15877
+ /* Surface alpha-blending modifiers */
15878
+ --db-surface-backdrop: initial; /* TODO */;
15879
+ /* TODO: surface-tint for containers that distinguish some content */
15881
15880
 
15882
- /* Primary */
15883
- --db-primary-surface: var(--db-color-action-primary-background-default);
15884
- --db-subtle-primary-surface: var(--db-color-action-default-background-hover);
15885
- --db-strong-primary-surface: var(--db-color-action-primary-background-hover);
15881
+ --db-text-base: var(--db-color-text-primary);
15882
+ --db-text-subtle: var(--db-color-text-secondary);
15883
+ --db-text-strong: initial; /* TODO */
15884
+ --db-text-disabled: var(--db-color-action-disabled-text);
15885
+ --db-text-suggestion: initial; /* TODO - e.g. input placeholder, loading text */
15886
+ --db-text-inverse: initial; /* TODO, stark contrast e.g. tooltip text */
15886
15887
 
15887
- --db-text-on-primary-surface: var(--db-color-action-primary-text-default);
15888
- --db-primary-text-on-neutral-surface: var(--db-color-action-link-default);
15889
- --db-subtle-text-on-primary-surface: initial; /* TODO */
15890
- --db-strong-text-on-primary-surface: var(--db-color-action-primary-text-default);
15888
+ --db-border-base: var(--db-color-border);
15889
+ --db-border-subtle: initial; /* TODO */
15890
+ --db-border-strong: var(--db-color-border-accessible);
15891
+ --db-border-hover: initial; /* TODO */
15892
+ --db-border-active: initial; /* TODO */
15893
+ --db-border-disabled: initial; /* TODO */
15891
15894
 
15892
- --db-primary-border: var(--db-color-action-primary-background-default);
15893
- --db-subtle-primary-border: initial; /* TODO */
15894
- --db-strong-primary-border: var(--db-color-action-primary-background-press);
15895
+ /* Accent */
15896
+ --db-accent-surface: var(--db-color-action-primary-background-default);
15897
+ --db-accent-surface-subtle: var(--db-color-action-default-background-hover);
15898
+ --db-accent-surface-strong: var(--db-color-action-primary-background-hover);
15895
15899
 
15896
- --db-primary-surface-active: initial; /* TODO */
15897
- --db-primary-surface-hover: var(--db-color-action-primary-background-hover);
15898
- --db-primary-surface-pressed: var(--db-color-action-primary-background-press);
15899
- --db-primary-surface-disabled: var(--db-color-action-disabled-background);
15900
- --db-text-on-primary-surface-disabled: var(--db-color-action-disabled-text);
15900
+ --db-accent-surface-hover: var(--db-color-action-primary-background-hover);
15901
+ --db-accent-surface-active: initial; /* TODO */
15902
+ --db-accent-surface-selected: var(--db-color-action-primary-background-press);
15901
15903
 
15902
- /* Error */
15903
- --db-error-surface: var(--db-color-action-danger-primary-background-default);
15904
- --db-subtle-error-surface: var(--db-color-background-danger);
15905
- --db-strong-error-surface: var(--db-color-action-danger-primary-background-hover);
15904
+ /* In the current design, the text color for an accent surface does not change with hover, active, etc. */
15905
+ --db-accent-text: var(--db-color-action-link-default);
15906
+ --db-text-on-accent-surface: var(--db-color-action-primary-text-default);
15906
15907
 
15907
- --db-text-on-error-surface: var(--db-color-action-danger-primary-text);
15908
- --db-error-text-on-neutral-surface: var(--db-color-text-validation-danger);
15909
- --db-subtle-text-on-error-surface: initial; /* TODO */
15910
- --db-strong-text-on-error-surface: var(--db-color-action-danger-primary-text);
15908
+ --db-accent-border: var(--db-color-action-primary-background-default);
15909
+ --db-accent-border-hover: var(--db-color-action-primary-background-press);
15910
+ --db-accent-border-active: initial; /* TODO */;
15911
15911
 
15912
- --db-error-border: var(--db-color-action-danger-default-border-default);
15913
- --db-subtle-error-border: var(--db-color-border-danger);
15914
- --db-strong-error-border: var(--db-color-action-danger-primary-background-press);
15912
+ /* Negative */
15913
+ --db-negative-surface: var(--db-color-action-danger-primary-background-default);
15914
+ --db-negative-surface-subtle: var(--db-color-background-danger);
15915
+ --db-negative-surface-strong: var(--db-color-action-danger-primary-background-hover);
15915
15916
 
15916
- --db-error-surface-active: initial; /* TODO */
15917
- --db-error-surface-hover: var(--db-color-action-danger-primary-background-hover);
15918
- --db-error-surface-pressed: var(--db-color-action-danger-primary-background-press);
15919
- --db-error-surface-disabled: var(--db-color-action-disabled-background);
15920
- --db-text-on-error-surface-disabled: var(--db-color-action-disabled-text);
15917
+ --db-negative-surface-hover: var(--db-color-action-danger-primary-background-hover);
15918
+ --db-negative-surface-active: initial; /* TODO */
15919
+ --db-negative-surface-selected: var(--db-color-action-danger-primary-background-press);
15921
15920
 
15922
- /* Warning */
15923
- --db-warning-surface: initial; /* TODO */
15924
- --db-subtle-warning-surface: var(--db-color-background-warning);
15921
+ --db-negative-text: var(--db-color-text-validation-danger);
15922
+ --db-text-on-negative-surface: var(--db-color-action-danger-primary-text);
15925
15923
 
15926
- --db-text-on-warning-surface: initial; /* TODO */
15927
- --db-warning-text-on-neutral-surface: var(--db-color-text-validation-warning);
15924
+ --db-negative-border: var(--db-color-action-danger-default-border-default);
15925
+ --db-negative-border-hover: initial; /* TODO */
15926
+ --db-negative-border-active: initial; /* TODO */
15928
15927
 
15929
- --db-warning-border: var(--db-color-border-warning);
15928
+ /* Caution */
15929
+ --db-caution-surface: initial; /* TODO */
15930
+ --db-caution-surface-subtle: var(--db-color-background-warning);
15931
+ --db-caution-surface-strong: initial; /* TODO */
15930
15932
 
15931
- /* Success */
15932
- --db-success-surface: initial; /* TODO */
15933
- --db-subtle-success-surface: var(--db-color-background-success);
15933
+ --db-caution-surface-hover: initial; /* TODO */
15934
+ --db-caution-surface-active: initial; /* TODO */
15935
+ --db-caution-surface-selected: initial; /* TODO */
15934
15936
 
15935
- --db-text-on-success-surface: initial; /* TODO */
15936
- --db-success-text-on-neutral-surface: var(--db-color-text-validation-success);
15937
+ --db-caution-text: var(--db-color-text-validation-warning);
15938
+ --db-text-on-caution-surface: initial; /* TODO */
15937
15939
 
15938
- --db-success-border: initial; /* TODO */
15940
+ --db-caution-border: var(--db-color-border-warning);
15941
+ --db-caution-border-hover: initial; /* TODO */
15942
+ --db-caution-border-active: initial; /* TODO */
15943
+
15944
+ /* Positive */
15945
+ --db-positive-surface: initial; /* TODO */
15946
+ --db-positive-surface-subtle: var(--db-color-background-success);
15947
+ --db-positive-surface-strong: initial; /* TODO */
15948
+
15949
+ --db-positive-surface-hover: initial; /* TODO */
15950
+ --db-positive-surface-active: initial; /* TODO */
15951
+ --db-positive-surface-selected: initial; /* TODO */
15952
+
15953
+ --db-positive-text: var(--db-color-text-validation-success);
15954
+ --db-text-on-positive-surface: initial; /* TODO */
15955
+
15956
+ --db-positive-border: initial; /* TODO */
15957
+ --db-positive-border-hover: initial; /* TODO */
15958
+ --db-positive-border-active: initial; /* TODO */
15939
15959
  }
15940
15960
 
15941
15961
 
@@ -15944,32 +15964,39 @@ span.du-bois-light-typography-ellipsis-single-line {
15944
15964
  --db-layout-unit: 0.25rem; /* 4px */
15945
15965
  --db-density-scalar: 1;
15946
15966
  --db-size-scalar: 1;
15947
- --db-spacing-scalar: 1;
15967
+ --db-space-scalar: 1;
15948
15968
 
15949
15969
  /* Size and spacing are the same steps, but with their own scalars included in the calc. */
15950
15970
 
15951
- --db-size-3xs: calc(var(--db-layout-unit) * 1 * var(--db-density-scalar) * var(--db-size-scalar)); /* 4px */
15952
- --db-size-2xs: calc(var(--db-layout-unit) * 2 * var(--db-density-scalar) * var(--db-size-scalar)); /* 8px */
15953
- --db-size-xs: calc(var(--db-layout-unit) * 4 * var(--db-density-scalar) * var(--db-size-scalar)); /* 16px */
15954
- --db-size-sm: calc(var(--db-layout-unit) * 6 * var(--db-density-scalar) * var(--db-size-scalar)); /* 24px */
15955
- --db-size-md: calc(var(--db-layout-unit) * 8 * var(--db-density-scalar) * var(--db-size-scalar)); /* 32px */
15956
- --db-size-lg: calc(var(--db-layout-unit) * 10 * var(--db-density-scalar) * var(--db-size-scalar)); /* 40px */
15957
-
15958
- --db-spacing-3xs: calc(var(--db-layout-unit) * 1 * var(--db-density-scalar) * var(--db-spacing-scalar)); /* 4px */
15959
- --db-spacing-2xs: calc(var(--db-layout-unit) * 2 * var(--db-density-scalar) * var(--db-spacing-scalar)); /* 8px */
15960
- --db-spacing-xs: calc(var(--db-layout-unit) * 4 * var(--db-density-scalar) * var(--db-spacing-scalar)); /* 16px */
15961
- --db-spacing-sm: calc(var(--db-layout-unit) * 6 * var(--db-density-scalar) * var(--db-spacing-scalar)); /* 24px */
15962
- --db-spacing-md: calc(var(--db-layout-unit) * 8 * var(--db-density-scalar) * var(--db-spacing-scalar)); /* 32px */
15963
- --db-spacing-lg: calc(var(--db-layout-unit) * 10 * var(--db-density-scalar) * var(--db-spacing-scalar)); /* 40px */
15971
+ --db-size-1: calc(var(--db-layout-unit) * 1 * var(--db-density-scalar) * var(--db-size-scalar)); /* 4px */
15972
+ --db-size-2: calc(var(--db-layout-unit) * 2 * var(--db-density-scalar) * var(--db-size-scalar)); /* 8px */
15973
+ --db-size-3: calc(var(--db-layout-unit) * 3 * var(--db-density-scalar) * var(--db-size-scalar)); /* 12px */
15974
+ --db-size-4: calc(var(--db-layout-unit) * 4 * var(--db-density-scalar) * var(--db-size-scalar)); /* 16px */
15975
+ --db-size-5: calc(var(--db-layout-unit) * 5 * var(--db-density-scalar) * var(--db-size-scalar)); /* 20px */
15976
+ --db-size-6: calc(var(--db-layout-unit) * 6 * var(--db-density-scalar) * var(--db-size-scalar)); /* 24px */
15977
+ --db-size-7: calc(var(--db-layout-unit) * 7 * var(--db-density-scalar) * var(--db-size-scalar)); /* 28px */
15978
+ --db-size-8: calc(var(--db-layout-unit) * 8 * var(--db-density-scalar) * var(--db-size-scalar)); /* 32px */
15979
+ --db-size-10: calc(var(--db-layout-unit) * 10 * var(--db-density-scalar) * var(--db-size-scalar)); /* 40px */
15980
+ --db-size-12: calc(var(--db-layout-unit) * 12 * var(--db-density-scalar) * var(--db-size-scalar)); /* 48px */
15981
+
15982
+ --db-space-0-5: calc(var(--db-layout-unit) * 0.5 * var(--db-density-scalar) * var(--db-space-scalar)); /* 2px */
15983
+ --db-space-1: calc(var(--db-layout-unit) * 1 * var(--db-density-scalar) * var(--db-space-scalar)); /* 4px */
15984
+ --db-space-2: calc(var(--db-layout-unit) * 2 * var(--db-density-scalar) * var(--db-space-scalar)); /* 8px */
15985
+ --db-space-3: calc(var(--db-layout-unit) * 3 * var(--db-density-scalar) * var(--db-space-scalar)); /* 12px */
15986
+ --db-space-4: calc(var(--db-layout-unit) * 4 * var(--db-density-scalar) * var(--db-space-scalar)); /* 16px */
15987
+ --db-space-6: calc(var(--db-layout-unit) * 6 * var(--db-density-scalar) * var(--db-space-scalar)); /* 24px */
15988
+ --db-space-8: calc(var(--db-layout-unit) * 8 * var(--db-density-scalar) * var(--db-space-scalar)); /* 32px */
15989
+ --db-space-10: calc(var(--db-layout-unit) * 10 * var(--db-density-scalar) * var(--db-space-scalar)); /* 40px */
15964
15990
  }
15965
15991
 
15966
15992
  :where(:root), :where(.du-bois-light) {
15967
15993
  --db-font-family:
15968
15994
  "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
15995
+ --db-numeric-font-family: var(--db-font-family);
15969
15996
  --db-mono-font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
15970
15997
 
15971
- --db-font-size-2xs: 0.6875rem; /* 11px */
15972
- --db-font-size-xs: 0.75rem; /* 12px */
15998
+ --db-font-size-xs: 0.6875rem; /* 11px */
15999
+ --db-font-size-sm: 0.75rem; /* 12px */
15973
16000
  --db-font-size-base: 0.8125rem; /* 13px */
15974
16001
  --db-font-size-md: 0.875rem; /* 14px */
15975
16002
  --db-font-size-lg: 0.9375rem; /* 15px */
@@ -15978,6 +16005,8 @@ span.du-bois-light-typography-ellipsis-single-line {
15978
16005
  --db-font-size-3xl: 1.5rem; /* 24px */
15979
16006
  --db-font-size-4xl: 2rem; /* 32px */
15980
16007
 
16008
+ /* TODO: media query for mobile font sizes */
16009
+
15981
16010
  /* Du Bois v1 ships 400 and 600 only */
15982
16011
  --db-font-weight-normal: 400;
15983
16012
  --db-font-weight-medium: initial; /* TODO */
@@ -15995,6 +16024,16 @@ span.du-bois-light-typography-ellipsis-single-line {
15995
16024
  :where(:root), :where(.du-bois-light) {
15996
16025
  --db-focus-ring-color: var(--db-color-action-default-border-focus);
15997
16026
  --db-focus-ring-width: 2px;
16027
+ --db-focus-ring-offset: 2px;
16028
+ }
16029
+
16030
+ :where(:root), :where(.du-bois-light) {
16031
+ --db-shape-control: 4px;
16032
+ --db-shape-control-large: 999px;
16033
+ --db-shape-container-small: 8px;
16034
+ --db-shape-container-medium: 12px;
16035
+ --db-shape-container-large: 16px;
16036
+ --db-shape-pill: 999px;
15998
16037
  }
15999
16038
 
16000
16039
  :where(:root), :where(.du-bois-light) {
@@ -16002,31 +16041,31 @@ span.du-bois-light-typography-ellipsis-single-line {
16002
16041
  --db-selection-toggle-border-radius: 4px;
16003
16042
 
16004
16043
  /* Color */
16005
- --db-selection-toggle-surface: var(--db-neutral-surface);
16006
- --db-selection-toggle-mark: var(--db-text-on-primary-surface);
16007
- --db-selection-toggle-text: var(--db-text-on-neutral-surface);
16008
- --db-selection-toggle-border: var(--db-strong-neutral-border);
16009
-
16010
- --db-selection-toggle-surface-hover: var(--db-neutral-surface-hover);
16011
- --db-selection-toggle-surface-press: var(--db-neutral-surface-pressed);
16012
- --db-selection-toggle-surface-checked: var(--db-primary-surface);
16013
- --db-selection-toggle-surface-checked-hover: var(--db-primary-surface-hover);
16014
- --db-selection-toggle-surface-checked-press: var(--db-primary-surface-pressed);
16015
- --db-selection-toggle-surface-disabled: var(--db-neutral-surface-disabled);
16016
- --db-selection-toggle-surface-checked-disabled: var(--db-neutral-surface-disabled);
16017
-
16018
- --db-selection-toggle-border-hover: var(--db-primary-surface-hover);
16019
- --db-selection-toggle-border-press: var(--db-primary-surface-pressed);
16020
- --db-selection-toggle-border-disabled: var(--db-neutral-border);
16021
-
16022
- --db-selection-toggle-mark-disabled: var(--db-text-on-neutral-surface-disabled);
16023
- --db-selection-toggle-text-disabled: var(--db-text-on-neutral-surface-disabled);
16044
+ --db-selection-toggle-surface: var(--db-surface-base);
16045
+ --db-selection-toggle-mark: var(--db-text-on-accent-surface);
16046
+ --db-selection-toggle-text: var(--db-text-base);
16047
+ --db-selection-toggle-border: var(--db-border-strong);
16048
+
16049
+ --db-selection-toggle-surface-hover: var(--db-surface-hover);
16050
+ --db-selection-toggle-surface-press: var(--db-surface-selected);
16051
+ --db-selection-toggle-surface-checked: var(--db-accent-surface);
16052
+ --db-selection-toggle-surface-checked-hover: var(--db-accent-surface-hover);
16053
+ --db-selection-toggle-surface-checked-press: var(--db-accent-surface-selected);
16054
+ --db-selection-toggle-surface-disabled: var(--db-surface-disabled);
16055
+ --db-selection-toggle-surface-checked-disabled: var(--db-surface-disabled);
16056
+
16057
+ --db-selection-toggle-border-hover: var(--db-accent-surface-hover);
16058
+ --db-selection-toggle-border-press: var(--db-accent-surface-selected);
16059
+ --db-selection-toggle-border-disabled: var(--db-border-base);
16060
+
16061
+ --db-selection-toggle-mark-disabled: var(--db-text-disabled);
16062
+ --db-selection-toggle-text-disabled: var(--db-text-disabled);
16024
16063
 
16025
16064
  --db-selection-toggle-shadow-checked: 0 0 0 1px var(--db-color-action-primary-background-default);
16026
16065
 
16027
16066
  /* Density */
16028
- --db-selection-toggle-size: var(--db-size-xs);
16029
- --db-selection-toggle-label-spacing: var(--db-spacing-2xs);
16067
+ --db-selection-toggle-size: var(--db-size-4);
16068
+ --db-selection-toggle-label-spacing: var(--db-space-2);
16030
16069
 
16031
16070
  /* Motion */
16032
16071
  --db-selection-toggle-transition-duration: 120ms;
@@ -16063,8 +16102,8 @@ span.du-bois-light-typography-ellipsis-single-line {
16063
16102
  --db-checkbox-size: var(--db-selection-toggle-size);
16064
16103
  --db-checkbox-label-spacing: var(--db-selection-toggle-label-spacing);
16065
16104
  --db-checkbox-focus-ring-width: var(--db-focus-ring-width);
16066
- --db-checkbox-indeterminate-mark-width: var(--db-size-2xs); /* 8px */
16067
- --db-checkbox-indeterminate-mark-height: calc(var(--db-size-3xs) * 0.75); /* 3px */
16105
+ --db-checkbox-indeterminate-mark-width: var(--db-size-2); /* 8px */
16106
+ --db-checkbox-indeterminate-mark-height: calc(var(--db-size-1) * 0.75); /* 3px */
16068
16107
 
16069
16108
  /* Motion */
16070
16109
  --db-checkbox-transition-duration: var(--db-selection-toggle-transition-duration);
@@ -16291,7 +16330,7 @@ span.du-bois-light-typography-ellipsis-single-line {
16291
16330
  .db-checkbox.db-checkbox + .du-bois-dark-form-message,
16292
16331
  .db-checkbox.db-checkbox + .du-bois-light-hint + .du-bois-light-form-message,
16293
16332
  .db-checkbox.db-checkbox + .du-bois-dark-hint + .du-bois-dark-form-message {
16294
- padding-left: var(--db-spacing-sm);
16333
+ padding-left: var(--db-space-6);
16295
16334
  margin-top: 0;
16296
16335
  }
16297
16336
 
@@ -16302,7 +16341,7 @@ span.du-bois-light-typography-ellipsis-single-line {
16302
16341
  .du-bois-dark-hint + .db-checkbox-group.db-checkbox-group,
16303
16342
  .db-checkbox-group.db-checkbox-group + .du-bois-light-form-message,
16304
16343
  .db-checkbox-group.db-checkbox-group + .du-bois-dark-form-message {
16305
- margin-top: var(--db-spacing-2xs);
16344
+ margin-top: var(--db-space-2);
16306
16345
  }
16307
16346
 
16308
16347
  /* CheckboxGroup layout. Vertical delegates to the `.db-stack` primitive; the
@@ -16359,7 +16398,7 @@ span.du-bois-light-typography-ellipsis-single-line {
16359
16398
  /* Density */
16360
16399
  --db-radio-size: var(--db-selection-toggle-size);
16361
16400
  --db-radio-label-spacing: var(--db-selection-toggle-label-spacing);
16362
- --db-radio-mark-size: var(--db-size-3xs);
16401
+ --db-radio-mark-size: var(--db-size-1);
16363
16402
 
16364
16403
  /* Motion */
16365
16404
  --db-radio-transition-duration: var(--db-selection-toggle-transition-duration);
@@ -16559,7 +16598,7 @@ span.du-bois-light-typography-ellipsis-single-line {
16559
16598
  .db-radio.db-radio + .du-bois-dark-form-message,
16560
16599
  .db-radio.db-radio + .du-bois-light-hint + .du-bois-light-form-message,
16561
16600
  .db-radio.db-radio + .du-bois-dark-hint + .du-bois-dark-form-message {
16562
- padding-inline-start: var(--db-spacing-sm);
16601
+ padding-inline-start: var(--db-space-6);
16563
16602
  margin-top: 0;
16564
16603
  }
16565
16604
 
@@ -16575,8 +16614,8 @@ span.du-bois-light-typography-ellipsis-single-line {
16575
16614
  .db-radio-group.db-stack > .db-radio.db-radio + .du-bois-dark-form-message,
16576
16615
  .db-radio-group.db-stack > .db-radio.db-radio + .du-bois-light-hint + .du-bois-light-form-message,
16577
16616
  .db-radio-group.db-stack > .db-radio.db-radio + .du-bois-dark-hint + .du-bois-dark-form-message {
16578
- margin-top: calc(-1 * var(--db-spacing-2xs));
16579
- margin-bottom: var(--db-spacing-2xs);
16617
+ margin-top: calc(-1 * var(--db-space-2));
16618
+ margin-bottom: var(--db-space-2);
16580
16619
  }
16581
16620
 
16582
16621
  /* AntD `& > label:last-of-type + hint { marginTop: 0 }`: the last radio has no
@@ -16594,7 +16633,7 @@ span.du-bois-light-typography-ellipsis-single-line {
16594
16633
  .du-bois-dark-hint + .db-radio-group.db-radio-group,
16595
16634
  .db-radio-group.db-radio-group + .du-bois-light-form-message,
16596
16635
  .db-radio-group.db-radio-group + .du-bois-dark-form-message {
16597
- margin-top: var(--db-spacing-2xs);
16636
+ margin-top: var(--db-space-2);
16598
16637
  }
16599
16638
 
16600
16639
  /* RadioGroup layout. Vertical (the default) delegates flex-direction to the
@@ -16615,7 +16654,7 @@ span.du-bois-light-typography-ellipsis-single-line {
16615
16654
 
16616
16655
  /* AntD `& > label { paddingBottom: sm }`. */
16617
16656
  .db-radio-group.db-stack > .db-radio {
16618
- padding-bottom: var(--db-spacing-2xs);
16657
+ padding-bottom: var(--db-space-2);
16619
16658
  }
16620
16659
 
16621
16660
  /* AntD `& > label:last-of-type { paddingBottom: 0 }`. */
@@ -16631,7 +16670,7 @@ span.du-bois-light-typography-ellipsis-single-line {
16631
16670
  .db-radio-group.db-stack > .du-bois-light-radio-tile + .du-bois-dark-radio-tile,
16632
16671
  .db-radio-group.db-stack > .du-bois-dark-radio-tile + .du-bois-light-radio-tile,
16633
16672
  .db-radio-group.db-stack > .du-bois-dark-radio-tile + .du-bois-dark-radio-tile {
16634
- margin-top: var(--db-spacing-xs);
16673
+ margin-top: var(--db-space-4);
16635
16674
  }
16636
16675
 
16637
16676
  /* Horizontal: AntD `getHorizontalRadioGroupStyles` is a TWO-ROW grid (NOT a flex
@@ -16644,7 +16683,7 @@ span.du-bois-light-typography-ellipsis-single-line {
16644
16683
  display: grid;
16645
16684
  grid-template-rows: [label] auto [hint] auto;
16646
16685
  grid-auto-columns: max-content;
16647
- column-gap: var(--db-spacing-xs);
16686
+ column-gap: var(--db-space-4);
16648
16687
  }
16649
16688
 
16650
16689
  /* Equal column widths: AntD `gridAutoColumns: minmax(0, 1fr)`. */
@@ -16677,14 +16716,14 @@ span.du-bois-light-typography-ellipsis-single-line {
16677
16716
  * the group itself gets a top margin (room above the two-row grid). */
16678
16717
  .db-radio-group--horizontal:has(> .du-bois-light-hint),
16679
16718
  .db-radio-group--horizontal:has(> .du-bois-dark-hint) {
16680
- margin-top: var(--db-spacing-2xs);
16719
+ margin-top: var(--db-space-2);
16681
16720
  }
16682
16721
 
16683
16722
  /* AntD `&& + form-message { marginTop: sm }` (horizontal): a form-message following
16684
16723
  * the whole group is separated by sm. */
16685
16724
  .db-radio-group--horizontal + .du-bois-light-form-message,
16686
16725
  .db-radio-group--horizontal + .du-bois-dark-form-message {
16687
- margin-top: var(--db-spacing-2xs);
16726
+ margin-top: var(--db-space-2);
16688
16727
  }
16689
16728
 
16690
16729
  :where(:root), :where(.du-bois-light) {
@@ -16717,8 +16756,8 @@ span.du-bois-light-typography-ellipsis-single-line {
16717
16756
  --db-switch-text-disabled: var(--db-selection-toggle-text-disabled);
16718
16757
 
16719
16758
  /* Density */
16720
- --db-switch-track-width: calc(var(--db-size-xs) * 1.75); /* 28px */
16721
- --db-switch-track-height: var(--db-size-xs); /* 16px */
16759
+ --db-switch-track-width: calc(var(--db-size-4) * 1.75); /* 28px */
16760
+ --db-switch-track-height: var(--db-size-4); /* 16px */
16722
16761
  --db-switch-thumb-size: var(--db-switch-track-height);
16723
16762
  --db-switch-label-spacing: var(--db-selection-toggle-label-spacing);
16724
16763
 
@@ -16867,21 +16906,549 @@ span.du-bois-light-typography-ellipsis-single-line {
16867
16906
  }
16868
16907
 
16869
16908
  /* Indent a following hint/message past the track. The class is doubled to out-specify FormMessage's
16870
- * own margin rule. */
16871
- :is(.db-switch.db-switch, .db-switch-wrapper.db-switch-wrapper)
16872
- + :is(.du-bois-light-hint, .du-bois-dark-hint, .du-bois-light-form-message, .du-bois-dark-form-message), :is(.db-switch.db-switch, .db-switch-wrapper.db-switch-wrapper)
16909
+ * own margin rule. Each rule's key (rightmost) selector is a single class, not a multi-item :is(),
16910
+ * so Chromium can hash-reject it instead of attempting the match against every element on every
16911
+ * recalc (the leading/middle :is() groups aren't the key selector, so they're left as-is). */
16912
+ :is(.db-switch.db-switch, .db-switch-wrapper.db-switch-wrapper) + .du-bois-light-hint, :is(.db-switch.db-switch, .db-switch-wrapper.db-switch-wrapper) + .du-bois-dark-hint, :is(.db-switch.db-switch, .db-switch-wrapper.db-switch-wrapper) + .du-bois-light-form-message, :is(.db-switch.db-switch, .db-switch-wrapper.db-switch-wrapper) + .du-bois-dark-form-message, :is(.db-switch.db-switch, .db-switch-wrapper.db-switch-wrapper)
16873
16913
  + :is(.du-bois-light-hint, .du-bois-dark-hint)
16874
- + :is(.du-bois-light-form-message, .du-bois-dark-form-message) {
16875
- padding-inline-start: calc(var(--db-spacing-2xs) + var(--db-switch-track-width));
16914
+ + .du-bois-light-form-message, :is(.db-switch.db-switch, .db-switch-wrapper.db-switch-wrapper)
16915
+ + :is(.du-bois-light-hint, .du-bois-dark-hint)
16916
+ + .du-bois-dark-form-message {
16917
+ padding-inline-start: calc(var(--db-space-2) + var(--db-switch-track-width));
16876
16918
  }
16877
16919
 
16878
- :is(.db-switch.db-switch, .db-switch-wrapper.db-switch-wrapper)
16879
- + :is(.du-bois-light-form-message, .du-bois-dark-form-message), :is(.db-switch.db-switch, .db-switch-wrapper.db-switch-wrapper)
16920
+ :is(.db-switch.db-switch, .db-switch-wrapper.db-switch-wrapper) + .du-bois-light-form-message, :is(.db-switch.db-switch, .db-switch-wrapper.db-switch-wrapper) + .du-bois-dark-form-message, :is(.db-switch.db-switch, .db-switch-wrapper.db-switch-wrapper)
16921
+ + :is(.du-bois-light-hint, .du-bois-dark-hint)
16922
+ + .du-bois-light-form-message, :is(.db-switch.db-switch, .db-switch-wrapper.db-switch-wrapper)
16880
16923
  + :is(.du-bois-light-hint, .du-bois-dark-hint)
16881
- + :is(.du-bois-light-form-message, .du-bois-dark-form-message) {
16924
+ + .du-bois-dark-form-message {
16882
16925
  margin-top: 0;
16883
16926
  }
16884
16927
 
16928
+ /* Component-tier tokens for the native <Button>, grouped by area (density, shape, typography, color).
16929
+ * Colors alias the action-* system tokens; sizes alias the system density scale.
16930
+ *
16931
+ * Follows the mortar/action.css pattern: one semantic set (surface / border / text, each with
16932
+ * -hover / -press / -disabled) whose defaults are the secondary variant. The variant classes that
16933
+ * re-set these tokens per variant live in NativeButton.css; this file declares only tokens. */
16934
+
16935
+ /* Declared under the theme classes too (not just :root) so the var() chain re-resolves inside a
16936
+ * `.du-bois-dark` subtree (or a portal that re-applies the theme class) instead of freezing at the root values. */
16937
+ :where(:root), :where(.du-bois-light) {
16938
+ /* ── Density ──────────────────────────────────────────────────────────── */
16939
+ --db-btn-height: var(--db-size-8);
16940
+ --db-btn-height-small: var(--db-size-6);
16941
+ --db-btn-icon-size: var(--db-size-4);
16942
+ --db-btn-border-width: 1px;
16943
+ --db-btn-padding-vertical: var(--db-space-1);
16944
+ --db-btn-padding-horizontal: var(--db-space-3);
16945
+ --db-btn-padding-horizontal-small: var(--db-space-2);
16946
+ /* Icon/force-icon horizontal padding: half the standard horizontal padding. */
16947
+ --db-btn-padding-horizontal-icon: calc(var(--db-space-3) / 2); /* 6px */
16948
+ --db-btn-gap: var(--db-space-1);
16949
+ --db-btn-end-icon-gap: var(--db-space-2);
16950
+ --db-btn-end-icon-gap-small: var(--db-space-1);
16951
+ /* Width of a content-less button while loading, so the standalone spinner has room. */
16952
+ --db-btn-loading-empty-width: var(--db-size-10);
16953
+
16954
+ /* ── Shape ────────────────────────────────────────────────────────────── */
16955
+ --db-btn-border-radius: var(--db-shape-control);
16956
+
16957
+ /* ── Typography ───────────────────────────────────────────────────────── */
16958
+ --db-btn-font-size: var(--db-font-size-base);
16959
+ --db-btn-icon-only-font-size: var(--db-font-size-lg); /* 15px */
16960
+ --db-btn-font-weight: var(--db-font-weight-normal);
16961
+ /* Line heights are hard-coded until the typography scale ships computed per-level line-height tokens. */
16962
+ --db-btn-line-height: 1.25rem; /* 20px */
16963
+ --db-btn-line-height-small: 1rem; /* 16px */
16964
+
16965
+ /* ── Color: semantic set (defaults = secondary variant) ───────────────── */
16966
+ --db-btn-surface: var(--db-color-action-default-background-default);
16967
+ --db-btn-surface-hover: var(--db-color-action-default-background-hover);
16968
+ --db-btn-surface-press: var(--db-color-action-default-background-press);
16969
+ --db-btn-surface-disabled: transparent;
16970
+ --db-btn-border: var(--db-color-action-default-border-default);
16971
+ --db-btn-border-hover: var(--db-color-action-default-border-hover);
16972
+ --db-btn-border-press: var(--db-color-action-default-border-press);
16973
+ --db-btn-border-disabled: var(--db-color-action-disabled-border);
16974
+ --db-btn-text: var(--db-color-action-default-text-default);
16975
+ --db-btn-text-hover: var(--db-color-action-default-text-hover);
16976
+ --db-btn-text-press: var(--db-color-action-default-text-press);
16977
+ --db-btn-text-disabled: var(--db-color-action-disabled-text);
16978
+
16979
+ /* ── Focus & icon ─────────────────────────────────────────────────────── */
16980
+ --db-btn-focus-ring: var(--db-color-action-default-border-focus);
16981
+ --db-btn-danger-focus-ring: var(--db-color-action-danger-primary-background-default);
16982
+ --db-btn-icon-glyph: var(--db-color-text-secondary);
16983
+ }
16984
+
16985
+ /* Native <Button> visual styles. Consumes the component-tier `--db-btn-*` tokens (see tokens.css);
16986
+ * the variant classes below re-set those tokens per variant and the rules that follow paint them.
16987
+ * Shipped via mortar.css. */
16988
+
16989
+ /* ── 0. Variant token re-sets ──────────────────────────────────────────────
16990
+ * Each variant class re-sets the semantic tokens declared in tokens.css; combined classes win by
16991
+ * specificity, which beats the `:where(:root)` (specificity 0) defaults regardless of file order. */
16992
+ .db-btn-primary {
16993
+ --db-btn-surface: var(--db-color-action-primary-background-default);
16994
+ --db-btn-surface-hover: var(--db-color-action-primary-background-hover);
16995
+ --db-btn-surface-press: var(--db-color-action-primary-background-press);
16996
+ --db-btn-surface-disabled: var(--db-color-action-disabled-border);
16997
+ --db-btn-border: transparent;
16998
+ --db-btn-border-hover: transparent;
16999
+ --db-btn-border-press: transparent;
17000
+ --db-btn-border-disabled: transparent;
17001
+ --db-btn-text: var(--db-color-action-primary-text-default);
17002
+ --db-btn-text-hover: var(--db-color-action-primary-text-hover);
17003
+ --db-btn-text-press: var(--db-color-action-primary-text-press);
17004
+ --db-btn-text-disabled: var(--db-color-action-primary-text-default);
17005
+ }
17006
+ .db-btn-tertiary,
17007
+ .db-btn-link {
17008
+ --db-btn-surface: var(--db-color-action-tertiary-background-default);
17009
+ --db-btn-surface-disabled: var(--db-color-action-tertiary-background-default);
17010
+ --db-btn-border: var(--db-color-action-tertiary-background-default);
17011
+ --db-btn-border-hover: transparent;
17012
+ --db-btn-border-press: transparent;
17013
+ --db-btn-border-disabled: transparent;
17014
+ --db-btn-text: var(--db-color-action-tertiary-text-default);
17015
+ --db-btn-text-hover: var(--db-color-action-tertiary-text-hover);
17016
+ --db-btn-text-press: var(--db-color-action-tertiary-text-press);
17017
+ --db-btn-text-disabled: var(--db-color-action-disabled-text);
17018
+ }
17019
+ .db-btn-tertiary {
17020
+ --db-btn-surface-hover: var(--db-color-action-tertiary-background-hover);
17021
+ --db-btn-surface-press: var(--db-color-action-tertiary-background-press);
17022
+ }
17023
+ /* Link is borderless and text-only, so its hover/press surface stays transparent. */
17024
+ .db-btn-link {
17025
+ --db-btn-surface-hover: transparent;
17026
+ --db-btn-surface-press: transparent;
17027
+ }
17028
+ /* Every danger button (icon included) disables to the filled treatment. */
17029
+ .db-btn-danger {
17030
+ --db-btn-surface-disabled: var(--db-color-action-disabled-border);
17031
+ --db-btn-border-disabled: transparent;
17032
+ --db-btn-text-disabled: var(--db-color-action-primary-text-default);
17033
+ }
17034
+ /* Danger, filled (primary): re-set only the surface; text/transparent border come from primary. */
17035
+ .db-btn-primary.db-btn-danger:not(.db-btn-icon-only) {
17036
+ --db-btn-surface: var(--db-color-action-danger-primary-background-default);
17037
+ --db-btn-surface-hover: var(--db-color-action-danger-primary-background-hover);
17038
+ --db-btn-surface-press: var(--db-color-action-danger-primary-background-press);
17039
+ }
17040
+ /* Danger, secondary/outlined. */
17041
+ .db-btn-danger:not(.db-btn-primary):not(.db-btn-tertiary):not(.db-btn-link):not(.db-btn-icon-only) {
17042
+ --db-btn-surface: var(--db-color-action-danger-default-background-default);
17043
+ --db-btn-surface-hover: var(--db-color-action-danger-default-background-hover);
17044
+ --db-btn-surface-press: var(--db-color-action-danger-default-background-press);
17045
+ --db-btn-border: var(--db-color-action-danger-default-border-default);
17046
+ --db-btn-border-hover: var(--db-color-action-danger-default-border-hover);
17047
+ --db-btn-border-press: var(--db-color-action-danger-default-border-press);
17048
+ --db-btn-text: var(--db-color-action-danger-default-text-default);
17049
+ --db-btn-text-hover: var(--db-color-action-danger-default-text-hover);
17050
+ --db-btn-text-press: var(--db-color-action-danger-default-text-press);
17051
+ }
17052
+ /* Danger, tertiary/link: danger text everywhere, danger surface on hover/press; resting/disabled
17053
+ * surface stay the tertiary ghost (override the filled danger-disabled set above). */
17054
+ .db-btn-tertiary.db-btn-danger,
17055
+ .db-btn-link.db-btn-danger {
17056
+ --db-btn-surface-hover: var(--db-color-action-danger-default-background-hover);
17057
+ --db-btn-surface-press: var(--db-color-action-danger-default-background-press);
17058
+ --db-btn-surface-disabled: var(--db-color-action-tertiary-background-default);
17059
+ --db-btn-text: var(--db-color-action-danger-default-text-default);
17060
+ --db-btn-text-hover: var(--db-color-action-danger-default-text-hover);
17061
+ --db-btn-text-press: var(--db-color-action-danger-default-text-press);
17062
+ --db-btn-text-disabled: var(--db-color-action-disabled-text);
17063
+ }
17064
+ /* Icon-only renders as the ghost (tertiary) treatment regardless of variant; re-set the semantic set
17065
+ * so the icon-only rules paint from these component tokens. */
17066
+ .db-btn-icon-only {
17067
+ --db-btn-surface: var(--db-color-action-tertiary-background-default);
17068
+ --db-btn-surface-hover: var(--db-color-action-tertiary-background-hover);
17069
+ --db-btn-surface-press: var(--db-color-action-tertiary-background-press);
17070
+ --db-btn-text: var(--db-color-action-tertiary-text-default);
17071
+ --db-btn-text-hover: var(--db-color-action-tertiary-text-hover);
17072
+ --db-btn-text-press: var(--db-color-action-tertiary-text-press);
17073
+ }
17074
+ /* Danger icon-only keeps the ghost resting surface (inherited above) but uses danger text and a
17075
+ * danger hover/press surface. */
17076
+ .db-btn-icon-only.db-btn-danger {
17077
+ --db-btn-surface-hover: var(--db-color-action-danger-default-background-hover);
17078
+ --db-btn-surface-press: var(--db-color-action-danger-default-background-press);
17079
+ --db-btn-text: var(--db-color-action-danger-default-text-default);
17080
+ --db-btn-text-hover: var(--db-color-action-danger-default-text-hover);
17081
+ --db-btn-text-press: var(--db-color-action-danger-default-text-press);
17082
+ }
17083
+
17084
+ /* ── 1. Base — paints the default (secondary) variant ────────────────────── */
17085
+ .db-btn {
17086
+ appearance: none;
17087
+ box-sizing: border-box;
17088
+ position: relative; /* anchors the loading spinner */
17089
+ display: inline-flex !important;
17090
+ align-items: center !important;
17091
+ justify-content: center !important;
17092
+ vertical-align: middle;
17093
+ white-space: nowrap;
17094
+ user-select: none;
17095
+ cursor: pointer;
17096
+ height: var(--db-btn-height) !important;
17097
+ font-family: inherit;
17098
+ font-size: var(--db-btn-font-size);
17099
+ font-weight: var(--db-btn-font-weight);
17100
+ line-height: var(--db-btn-line-height) !important;
17101
+ text-decoration: none !important;
17102
+ border: var(--db-btn-border-width) solid var(--db-btn-border);
17103
+ border-color: var(--db-btn-border) !important;
17104
+ border-radius: var(--db-btn-border-radius) !important;
17105
+ box-shadow: none !important;
17106
+ background-color: var(--db-btn-surface) !important;
17107
+ color: var(--db-btn-text) !important;
17108
+ }
17109
+
17110
+ /* ── 2. Padding ──────────────────────────────────────────────────────────── */
17111
+ .db-btn.db-btn:where(:not(.db-btn-icon-only, .db-btn-force-icon, .db-btn-link)) {
17112
+ padding: var(--db-btn-padding-vertical) var(--db-btn-padding-horizontal) !important;
17113
+ }
17114
+ .db-btn.db-btn-small:where(:not(.db-btn-icon-only, .db-btn-force-icon, .db-btn-link)) {
17115
+ padding: 0 var(--db-btn-padding-horizontal-small) !important;
17116
+ }
17117
+ .db-btn.db-btn-link {
17118
+ padding: 0 !important;
17119
+ }
17120
+ .db-btn.db-btn-force-icon {
17121
+ padding: 0 var(--db-btn-padding-horizontal-icon) !important;
17122
+ }
17123
+
17124
+ /* ── 3. Interactive states ───────────────────────────────────────────────── */
17125
+ .db-btn:hover:not(:disabled, .db-btn-loading) {
17126
+ background-color: var(--db-btn-surface-hover) !important;
17127
+ border-color: var(--db-btn-border-hover) !important;
17128
+ color: var(--db-btn-text-hover) !important;
17129
+ }
17130
+ .db-btn:active:not(:disabled, .db-btn-loading) {
17131
+ background-color: var(--db-btn-surface-press) !important;
17132
+ border-color: var(--db-btn-border-press) !important;
17133
+ color: var(--db-btn-text-press) !important;
17134
+ }
17135
+
17136
+ /* ── 4. Focus ────────────────────────────────────────────────────────────── */
17137
+ .db-btn:focus-visible {
17138
+ outline: 2px solid var(--db-btn-focus-ring);
17139
+ outline-offset: -2px;
17140
+ }
17141
+ .db-btn-primary:focus-visible {
17142
+ outline-offset: 1px;
17143
+ }
17144
+ .db-btn-use-focus-pseudo-class:focus {
17145
+ outline: 2px solid var(--db-btn-focus-ring);
17146
+ outline-offset: 1px;
17147
+ }
17148
+
17149
+ /* ── 5. Small / full-width / empty ────────────────────────────────────────── */
17150
+ .db-btn-small {
17151
+ height: var(--db-btn-height-small) !important;
17152
+ }
17153
+ .db-btn-full-width {
17154
+ width: 100%;
17155
+ }
17156
+ .db-btn-empty {
17157
+ background-color: transparent !important;
17158
+ border-color: transparent !important;
17159
+ }
17160
+ .db-btn-default.db-btn-empty {
17161
+ color: var(--db-btn-icon-glyph) !important;
17162
+ }
17163
+ .db-btn-empty.db-btn-loading {
17164
+ width: var(--db-btn-loading-empty-width);
17165
+ }
17166
+
17167
+ /* ── 6. Tertiary & link ──────────────────────────────────────────────────── */
17168
+ .db-btn-link {
17169
+ height: auto !important;
17170
+ border: none !important;
17171
+ }
17172
+ /* Re-declare the text color for a non-icon-only tertiary/link at two-class weight so a plain
17173
+ * call-site `color` override loses; an icon-only glyph stays at base weight so its override wins. */
17174
+ .db-btn-tertiary:not(.db-btn-icon-only),
17175
+ .db-btn-link:not(.db-btn-icon-only) {
17176
+ color: var(--db-btn-text) !important;
17177
+ }
17178
+ /* Keep the resting border at two-class weight (parity with the shielded border-color). */
17179
+ .db-btn.db-btn-tertiary,
17180
+ .db-btn.db-btn-link {
17181
+ border-color: var(--db-btn-border) !important;
17182
+ }
17183
+
17184
+ /* ── 7. Danger ───────────────────────────────────────────────────────────── */
17185
+ .db-btn-danger:focus-visible {
17186
+ outline-color: var(--db-btn-danger-focus-ring);
17187
+ }
17188
+
17189
+ /* ── 8. Icon-only ────────────────────────────────────────────────────────── */
17190
+ .db-btn-icon-only {
17191
+ padding: 0;
17192
+ border: none !important;
17193
+ background-color: var(--db-btn-surface) !important;
17194
+ font-size: var(--db-btn-icon-only-font-size);
17195
+ }
17196
+ /* `:where()` keeps this at (0,1,0) so a call-site `css` width override wins, as it does for `height`. */
17197
+ .db-btn-icon-only:where(:not(.db-btn-small)) {
17198
+ width: var(--db-btn-height) !important;
17199
+ }
17200
+ .db-btn-icon-only:not(.db-btn-link, .db-btn-tertiary, [href], :hover, :active, :disabled) {
17201
+ color: var(--db-btn-icon-glyph) !important;
17202
+ }
17203
+ /* `:where()` on the exclusion holds this at (0,2,0): enough to tint an un-overridden icon-only link
17204
+ * over the base color, while still letting a consumer's own icon-color override win on source order. */
17205
+ .db-btn-icon-only[href]:where(:not(.db-btn-tertiary, .db-btn-link, .db-btn-danger, :disabled)) {
17206
+ color: var(--db-btn-text) !important;
17207
+ }
17208
+ .db-btn-icon-only:where(.db-btn-small) {
17209
+ width: var(--db-btn-height-small);
17210
+ }
17211
+ .db-btn-icon-only.db-btn-small {
17212
+ line-height: var(--db-btn-line-height-small) !important;
17213
+ }
17214
+ .db-btn-icon-only:hover:not(:disabled, .db-btn-loading) {
17215
+ background-color: var(--db-btn-surface-hover) !important;
17216
+ color: var(--db-btn-text-hover) !important;
17217
+ }
17218
+ .db-btn-icon-only:active:not(:disabled, .db-btn-loading) {
17219
+ background-color: var(--db-btn-surface-press) !important;
17220
+ color: var(--db-btn-text-press) !important;
17221
+ }
17222
+ .db-btn-icon-only:enabled:not(.db-btn-primary, .db-btn-tertiary, .db-btn-link, .db-btn-danger, :hover, :active)
17223
+ > .anticon {
17224
+ color: var(--db-btn-icon-glyph);
17225
+ }
17226
+ .db-btn-icon-only.db-btn-danger:not(:hover, :active) > .anticon {
17227
+ color: var(--db-btn-text);
17228
+ }
17229
+ .db-btn-icon-only.db-btn-danger:hover:not(:disabled, .db-btn-loading) {
17230
+ background-color: var(--db-btn-surface-hover) !important;
17231
+ color: var(--db-btn-text-hover) !important;
17232
+ }
17233
+ .db-btn-icon-only.db-btn-danger:active:not(:disabled, .db-btn-loading) {
17234
+ background-color: var(--db-btn-surface-press) !important;
17235
+ color: var(--db-btn-text-press) !important;
17236
+ }
17237
+
17238
+ /* ── 9. Disabled — base rules paint the per-variant `*-disabled` tokens (see tokens.css) ──────── */
17239
+ .db-btn:disabled {
17240
+ cursor: not-allowed;
17241
+ background-color: var(--db-btn-surface-disabled) !important;
17242
+ color: var(--db-btn-text-disabled) !important;
17243
+ }
17244
+ /* Empty and loading disabled buttons keep a transparent border (set elsewhere), so exclude them.
17245
+ * `:where()` on the exclusion holds this at (0,2,0): enough to beat the base border, while still
17246
+ * letting a consumer's own `[disabled]` border override win on source order. */
17247
+ .db-btn:disabled:where(:not(.db-btn-empty, .db-btn-loading)) {
17248
+ border-color: var(--db-btn-border-disabled) !important;
17249
+ }
17250
+ .db-btn-icon-only:disabled {
17251
+ border: none;
17252
+ }
17253
+ .db-btn-icon-only:disabled:hover {
17254
+ background-color: transparent !important;
17255
+ }
17256
+ .db-btn:disabled > .anticon {
17257
+ color: inherit !important;
17258
+ }
17259
+
17260
+ /* ── 10. Icon & content layout ───────────────────────────────────────────── */
17261
+ /* The leading icon renders unwrapped as the button's direct `.anticon` child (see NativeButton.tsx),
17262
+ * so `> .anticon` targets only a real icon glyph — a non-glyph `icon` (e.g. a Spinner) keeps its own
17263
+ * sizing — and out-specifies AntD's runtime-injected global `.anticon` rule. */
17264
+ .db-btn > .anticon,
17265
+ .db-btn-end-icon,
17266
+ .db-btn-end-icon > .anticon {
17267
+ display: inline-flex;
17268
+ align-items: center;
17269
+ font-size: var(--db-btn-icon-size) !important;
17270
+ line-height: 0;
17271
+ }
17272
+ .db-btn-small > .anticon .anticon {
17273
+ line-height: 0;
17274
+ }
17275
+ .db-btn > .db-btn-content > .anticon {
17276
+ display: inline-flex;
17277
+ align-items: center;
17278
+ line-height: 0;
17279
+ }
17280
+ .db-btn-content {
17281
+ display: inline-flex;
17282
+ align-items: center;
17283
+ }
17284
+ .db-btn > .anticon + .db-btn-content {
17285
+ margin-inline-start: var(--db-btn-gap) !important;
17286
+ }
17287
+ .db-btn-end-icon {
17288
+ margin-inline-start: var(--db-btn-end-icon-gap) !important;
17289
+ }
17290
+ .db-btn-small .db-btn-end-icon {
17291
+ margin-inline-start: var(--db-btn-end-icon-gap-small) !important;
17292
+ }
17293
+ .db-btn-default:not(.db-btn-danger, [href], :hover, :active, :disabled) > .anticon {
17294
+ color: var(--db-btn-icon-glyph);
17295
+ }
17296
+ .db-btn-default[href]:not(.db-btn-danger, :hover, :active, :disabled) .db-btn-end-icon {
17297
+ color: var(--db-btn-icon-glyph);
17298
+ }
17299
+ .db-btn-default:not([href], .db-btn-danger, :hover, :active, :disabled)
17300
+ > .db-btn-content
17301
+ > .db-btn-end-icon
17302
+ > .anticon {
17303
+ color: var(--db-btn-icon-glyph);
17304
+ }
17305
+
17306
+ /* ── 11. Loading ─────────────────────────────────────────────────────────── */
17307
+ .db-btn-loading {
17308
+ cursor: default;
17309
+ }
17310
+ .db-btn-loading:disabled {
17311
+ border-color: transparent !important;
17312
+ }
17313
+ .db-btn-spinner {
17314
+ color: inherit !important;
17315
+ pointer-events: none;
17316
+ }
17317
+ .db-btn-loading-with-icon .db-btn-content {
17318
+ padding-inline-start: calc(var(--db-btn-icon-size) + var(--db-btn-gap));
17319
+ }
17320
+ .db-btn-loading .db-btn-spinner {
17321
+ position: absolute;
17322
+ left: 50%;
17323
+ top: 50%;
17324
+ transform: translate(-50%, -50%);
17325
+ }
17326
+ .db-btn-loading.db-btn-icon-only .db-btn-spinner {
17327
+ position: static;
17328
+ transform: none;
17329
+ }
17330
+
17331
+ /* ── 12. dangerouslySetForceIconStyles ───────────────────────────────────── */
17332
+ .db-btn-force-icon {
17333
+ width: var(--db-btn-height) !important;
17334
+ color: var(--db-btn-icon-glyph) !important;
17335
+ }
17336
+ .db-btn-force-icon.db-btn-small {
17337
+ width: var(--db-btn-height-small) !important;
17338
+ }
17339
+
17340
+ :where(:root), :where(.du-bois-light) {
17341
+ /* Shape */
17342
+ /* Must not scale with density; no non-scaling system token holds it. TODO(FEINF-6505): adopt a v2 system token when one is added. */
17343
+ --db-navigation-menu-indicator-thickness: 4px;
17344
+ /* No system token holds this control-specific inset. TODO(FEINF-6505): adopt a v2 system token when one is added. */
17345
+ --db-navigation-menu-focus-ring-offset: -1px;
17346
+
17347
+ /* Color */
17348
+ --db-navigation-menu-indicator: var(--db-accent-surface);
17349
+ --db-navigation-menu-focus-ring: var(--db-focus-ring-color);
17350
+ --db-navigation-menu-text: var(--db-text-subtle);
17351
+ --db-navigation-menu-text-active: var(--db-text-base);
17352
+ /* No v2 semantic for default-action link text yet; bridges on the v1 --db-color-* token. */
17353
+ --db-navigation-menu-text-hover: var(--db-color-action-default-text-hover);
17354
+ --db-navigation-menu-text-press: var(--db-color-action-default-text-press);
17355
+
17356
+ /* Density */
17357
+ --db-navigation-menu-item-height: var(--db-size-8);
17358
+ --db-navigation-menu-item-min-width: var(--db-size-6);
17359
+ --db-navigation-menu-link-padding-top: var(--db-space-1);
17360
+ --db-navigation-menu-link-padding-bottom: var(--db-space-2);
17361
+ --db-navigation-menu-focus-ring-width: var(--db-focus-ring-width);
17362
+ }
17363
+
17364
+ :where(:root), :where(.du-bois-light) {
17365
+ /* Shape */
17366
+ /* TODO(FEINF-6505): adopt --db-shape-container-* once a 4px container radius exists; kept on --db-radius-sm to preserve 4px. */
17367
+ --db-snackbar-border-radius: var(--db-radius-sm);
17368
+
17369
+ /* Density */
17370
+ --db-snackbar-spacing-vertical: var(--db-space-3);
17371
+ --db-snackbar-spacing-horizontal: var(--db-space-4);
17372
+ --db-snackbar-close-button-spacing: var(--db-space-2);
17373
+
17374
+ /* Color */
17375
+ /* No v1/v2 system token holds this theme-invariant white. TODO(FEINF-6505): adopt a v2 system token when one is added. */
17376
+ --db-snackbar-text: #ffffff;
17377
+ /* No v1/v2 system token holds these theme-invariant close-icon colors. TODO(FEINF-6505): adopt a v2 system token when one is added. */
17378
+ --db-snackbar-close-icon: #e8ecf0;
17379
+ --db-snackbar-close-icon-hover: #8acaff;
17380
+ --db-snackbar-close-icon-press: #bae1fc;
17381
+ }
17382
+
17383
+ :where(:root), :where(.du-bois-light) {
17384
+ /* Color */
17385
+ /* No v1/v2 system token holds this light/dark surface pair. TODO(FEINF-6505): adopt a v2 system token when one is added. */
17386
+ --db-snackbar-surface: #11171c;
17387
+
17388
+ /* Elevation */
17389
+ --db-snackbar-shadow: var(--db-elevation-med);
17390
+ }
17391
+
17392
+ /* Tooltip renders an inverted surface (dark chip in light mode, light chip in dark mode), so it does
17393
+ * not draw from the popover family's neutral surface. Surface/text reference the v1 tooltip
17394
+ * primitives from tokens-groups until a v2 semantic exists. */
17395
+
17396
+ :where(:root), :where(.du-bois-light) {
17397
+ /* Shape */
17398
+ --db-tooltip-border-radius: var(--db-radius-sm);
17399
+
17400
+ /* Density */
17401
+ --db-tooltip-spacing-vertical: var(--db-space-1);
17402
+ --db-tooltip-spacing-horizontal: var(--db-space-2);
17403
+
17404
+ /* Typography */
17405
+ --db-tooltip-font-size: var(--db-font-size-base);
17406
+ --db-tooltip-font-weight: var(--db-font-weight-normal);
17407
+ }
17408
+
17409
+ :where(:root), :where(.du-bois-light) {
17410
+ /* Color */
17411
+ --db-tooltip-surface: var(--db-color-tooltip-background-tooltip);
17412
+ --db-tooltip-text: var(--db-color-tooltip-text-tooltip);
17413
+ /* v1 blue primitives, held as literals until a v2 link-on-tooltip semantic exists. */
17414
+ --db-tooltip-link-text: #4299e0; /* blue500 */
17415
+ --db-tooltip-link-text-hover: #8acaff; /* blue400 */
17416
+ --db-tooltip-link-text-press: #bae1fc; /* blue300 */
17417
+
17418
+ /* Elevation */
17419
+ --db-tooltip-shadow: var(--db-elevation-med);
17420
+ }
17421
+
17422
+ /* Declared under the theme classes too (not just :root) so the var() chain re-resolves inside a
17423
+ * `.du-bois-dark` subtree instead of freezing at the light values. */
17424
+ :where(:root), :where(.du-bois-light) {
17425
+ /* Shape */
17426
+ --db-progress-border-radius: var(--db-shape-pill);
17427
+
17428
+ /* Color */
17429
+ --db-progress-track: var(--db-color-progress-track);
17430
+ --db-progress-fill: var(--db-color-progress-fill);
17431
+
17432
+ /* Density */
17433
+ --db-progress-size: var(--db-size-2);
17434
+
17435
+ /* Motion */
17436
+ /* No v2 motion token holds this duration. TODO(FEINF-6505): adopt a v2 motion token when one is added. */
17437
+ --db-progress-transition-duration: 300ms;
17438
+ }
17439
+
17440
+ :where(:root), :where(.du-bois-light) {
17441
+ /* Color */
17442
+ /* No v2 token holds tertiary action-text states yet. TODO(FEINF-6505): adopt a v2 token when one lands. */
17443
+ --db-overflow-trigger-text: var(--db-color-action-tertiary-text-default);
17444
+ --db-overflow-trigger-text-hover: var(--db-color-action-tertiary-text-hover);
17445
+ --db-overflow-trigger-text-press: var(--db-color-action-tertiary-text-press);
17446
+
17447
+ /* Density */
17448
+ --db-overflow-spacing: var(--db-space-2);
17449
+ --db-overflow-menu-spacing: var(--db-space-1);
17450
+ }
17451
+
16885
17452
 
16886
17453
  :where(.du-bois-light-btn-icon-only) > :where(.anticon),
16887
17454
  :where(.du-bois-light-btn-icon-only) > :where(.du-bois-light-btn-loading-icon) {