@jobber/components 9.4.0 → 9.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/dist/Autocomplete/index.cjs +0 -1
  2. package/dist/Autocomplete/index.mjs +0 -1
  3. package/dist/Card/index.cjs +7 -7
  4. package/dist/Card/index.mjs +7 -7
  5. package/dist/Chip/index.cjs +0 -1
  6. package/dist/Chip/index.mjs +0 -1
  7. package/dist/Chips/InternalChipDismissible/hooks/index.cjs +0 -1
  8. package/dist/Chips/InternalChipDismissible/hooks/index.mjs +0 -1
  9. package/dist/Chips/InternalChipDismissible/index.cjs +0 -1
  10. package/dist/Chips/InternalChipDismissible/index.mjs +0 -1
  11. package/dist/Chips/index.cjs +0 -1
  12. package/dist/Chips/index.mjs +0 -1
  13. package/dist/ComboboxChipRemove-cjs.js +181 -184
  14. package/dist/ComboboxChipRemove-es.js +4 -7
  15. package/dist/ConfirmationModal/index.cjs +0 -1
  16. package/dist/ConfirmationModal/index.mjs +0 -1
  17. package/dist/DataDump/index.cjs +7 -7
  18. package/dist/DataDump/index.mjs +7 -7
  19. package/dist/DataList/components/DataListActions/index.cjs +0 -1
  20. package/dist/DataList/components/DataListActions/index.mjs +0 -1
  21. package/dist/DataList/components/DataListBulkActions/index.cjs +0 -1
  22. package/dist/DataList/components/DataListBulkActions/index.mjs +0 -1
  23. package/dist/DataList/components/DataListFilters/components/DataListSort/index.cjs +0 -1
  24. package/dist/DataList/components/DataListFilters/components/DataListSort/index.mjs +0 -1
  25. package/dist/DataList/components/DataListFilters/index.cjs +0 -1
  26. package/dist/DataList/components/DataListFilters/index.mjs +0 -1
  27. package/dist/DataList/components/DataListHeader/index.cjs +0 -1
  28. package/dist/DataList/components/DataListHeader/index.mjs +0 -1
  29. package/dist/DataList/components/DataListItem/index.cjs +0 -1
  30. package/dist/DataList/components/DataListItem/index.mjs +0 -1
  31. package/dist/DataList/components/DataListItemActions/index.cjs +0 -1
  32. package/dist/DataList/components/DataListItemActions/index.mjs +0 -1
  33. package/dist/DataList/components/DataListItemActionsOverflow/index.cjs +0 -1
  34. package/dist/DataList/components/DataListItemActionsOverflow/index.mjs +0 -1
  35. package/dist/DataList/components/DataListItems/index.cjs +0 -1
  36. package/dist/DataList/components/DataListItems/index.mjs +0 -1
  37. package/dist/DataList/components/DataListLayout/index.cjs +0 -1
  38. package/dist/DataList/components/DataListLayout/index.mjs +0 -1
  39. package/dist/DataList/components/DataListLayoutActions/index.cjs +0 -1
  40. package/dist/DataList/components/DataListLayoutActions/index.mjs +0 -1
  41. package/dist/DataList/index.cjs +0 -1
  42. package/dist/DataList/index.mjs +0 -1
  43. package/dist/DatePicker/index.cjs +0 -2
  44. package/dist/DatePicker/index.mjs +0 -2
  45. package/dist/DatePicker-cjs.js +19 -18
  46. package/dist/DatePicker-es.js +2 -1
  47. package/dist/Dialog/index.cjs +11 -6
  48. package/dist/Dialog/index.mjs +11 -6
  49. package/dist/DrawerDescription-cjs.js +7 -8
  50. package/dist/DrawerDescription-es.js +1 -2
  51. package/dist/DrawerTitle-cjs.js +4 -4
  52. package/dist/DrawerTitle-es.js +1 -1
  53. package/dist/FieldDescription-cjs.js +49 -49
  54. package/dist/FieldDescription-es.js +2 -2
  55. package/dist/FilterPicker/components/FilterPickerActivator/index.cjs +0 -1
  56. package/dist/FilterPicker/components/FilterPickerActivator/index.mjs +0 -1
  57. package/dist/FilterPicker/components/FilterPickerContent/index.cjs +0 -1
  58. package/dist/FilterPicker/components/FilterPickerContent/index.mjs +0 -1
  59. package/dist/FilterPicker/components/FilterPickerTrigger/index.cjs +0 -1
  60. package/dist/FilterPicker/components/FilterPickerTrigger/index.mjs +0 -1
  61. package/dist/FilterPicker/index.cjs +0 -1
  62. package/dist/FilterPicker/index.mjs +0 -1
  63. package/dist/FormatFile/index.cjs +0 -1
  64. package/dist/FormatFile/index.mjs +0 -1
  65. package/dist/Gallery/index.cjs +0 -1
  66. package/dist/Gallery/index.mjs +0 -1
  67. package/dist/HelperText-cjs.js +3 -2
  68. package/dist/HelperText-es.js +3 -2
  69. package/dist/InputDate/index.cjs +0 -2
  70. package/dist/InputDate/index.mjs +0 -2
  71. package/dist/InputNumber/InputNumber.d.ts +75 -5
  72. package/dist/InputNumber/index.cjs +27 -3
  73. package/dist/InputNumber/index.d.ts +2 -2
  74. package/dist/InputNumber/index.mjs +27 -3
  75. package/dist/{primitives/InputNumberExperimental → InputNumber}/types.d.ts +48 -35
  76. package/dist/InputNumber-cjs.js +267 -4986
  77. package/dist/InputNumber-es.js +268 -4987
  78. package/dist/LightBox/index.cjs +0 -1
  79. package/dist/LightBox/index.mjs +0 -1
  80. package/dist/Menu/index.cjs +7 -7
  81. package/dist/Menu/index.mjs +7 -7
  82. package/dist/Menu-cjs.js +4 -1
  83. package/dist/Menu-es.js +4 -1
  84. package/dist/MenuSubmenuTrigger-cjs.js +142 -143
  85. package/dist/MenuSubmenuTrigger-es.js +5 -6
  86. package/dist/Modal/index.cjs +0 -1
  87. package/dist/Modal/index.mjs +0 -1
  88. package/dist/NumberFieldInput-cjs.js +63 -63
  89. package/dist/NumberFieldInput-es.js +5 -5
  90. package/dist/Page/index.cjs +7 -8
  91. package/dist/Page/index.mjs +7 -8
  92. package/dist/Popover/index.cjs +0 -1
  93. package/dist/Popover/index.mjs +0 -1
  94. package/dist/ScrollAreaViewport-cjs.js +119 -121
  95. package/dist/ScrollAreaViewport-es.js +3 -5
  96. package/dist/Select/index.cjs +3 -9
  97. package/dist/Select/index.mjs +3 -9
  98. package/dist/SelectGroupLabel-cjs.js +117 -107
  99. package/dist/SelectGroupLabel-es.js +20 -12
  100. package/dist/Tooltip/index.cjs +0 -1
  101. package/dist/Tooltip/index.mjs +0 -1
  102. package/dist/dialogReturnFocus-cjs.js +4 -1
  103. package/dist/dialogReturnFocus-es.js +4 -1
  104. package/dist/docs/InputNumber/InputNumber.md +564 -56
  105. package/dist/docs/index.md +0 -1
  106. package/dist/floating-ui.react-cjs.js +34 -35
  107. package/dist/floating-ui.react-dom-cjs.js +64 -65
  108. package/dist/floating-ui.react-dom-es.js +1 -2
  109. package/dist/floating-ui.react-es.js +1 -2
  110. package/dist/floating-ui.utils-cjs.js +183 -0
  111. package/dist/floating-ui.utils-es.js +165 -1
  112. package/dist/index.cjs +10 -15
  113. package/dist/index.mjs +10 -15
  114. package/dist/primitives/BottomSheet/index.cjs +2 -5
  115. package/dist/primitives/BottomSheet/index.mjs +2 -5
  116. package/dist/primitives/ComboboxPrimitive/index.cjs +3 -7
  117. package/dist/primitives/ComboboxPrimitive/index.mjs +3 -7
  118. package/dist/primitives/HelperText/HelperText.d.ts +4 -1
  119. package/dist/primitives/HelperText/index.cjs +1 -1
  120. package/dist/primitives/HelperText/index.mjs +1 -1
  121. package/dist/primitives/SelectPrimitive/index.cjs +3 -9
  122. package/dist/primitives/SelectPrimitive/index.mjs +3 -9
  123. package/dist/primitives/index.cjs +2 -16
  124. package/dist/primitives/index.d.ts +0 -2
  125. package/dist/primitives/index.mjs +2 -15
  126. package/dist/scrollEdges-cjs.js +6 -2
  127. package/dist/scrollEdges-es.js +5 -2
  128. package/dist/styles.css +573 -902
  129. package/dist/unstyledPrimitives/index.cjs +105 -111
  130. package/dist/unstyledPrimitives/index.mjs +5 -11
  131. package/dist/useCompositeListItem-cjs.js +516 -90
  132. package/dist/useCompositeListItem-es.js +407 -6
  133. package/dist/useLabel-cjs.js +10 -10
  134. package/dist/useLabel-es.js +3 -3
  135. package/dist/useRenderElement-es.js +1 -1
  136. package/dist/useScrollLock-cjs.js +1332 -203
  137. package/dist/useScrollLock-es.js +1068 -5
  138. package/dist/utils/meta/meta.json +12 -0
  139. package/package.json +2 -3
  140. package/dist/InputNumber/InputNumber.types.d.ts +0 -20
  141. package/dist/InputNumberExperimental-cjs.js +0 -277
  142. package/dist/InputNumberExperimental-es.js +0 -275
  143. package/dist/clamp-cjs.js +0 -7
  144. package/dist/clamp-es.js +0 -5
  145. package/dist/clsx-cjs.js +0 -5
  146. package/dist/clsx-es.js +0 -3
  147. package/dist/docs/InputNumberExperimental/InputNumberExperimental.md +0 -578
  148. package/dist/floating-ui.utils.dom-cjs.js +0 -185
  149. package/dist/floating-ui.utils.dom-es.js +0 -165
  150. package/dist/isElementDisabled-cjs.js +0 -40
  151. package/dist/isElementDisabled-es.js +0 -18
  152. package/dist/primitives/InputNumberExperimental/InputNumberExperimental.d.ts +0 -77
  153. package/dist/primitives/InputNumberExperimental/index.cjs +0 -30
  154. package/dist/primitives/InputNumberExperimental/index.d.ts +0 -2
  155. package/dist/primitives/InputNumberExperimental/index.mjs +0 -24
  156. package/dist/resolveAriaLabelledBy-cjs.js +0 -200
  157. package/dist/resolveAriaLabelledBy-es.js +0 -166
  158. package/dist/useButton-cjs.js +0 -1164
  159. package/dist/useButton-es.js +0 -1071
  160. package/dist/useLabelableId-cjs.js +0 -278
  161. package/dist/useLabelableId-es.js +0 -247
package/dist/styles.css CHANGED
@@ -4966,58 +4966,43 @@ a._7BLGtYNuJOU-.zgRx3ehZ2z8-:hover {
4966
4966
  }
4967
4967
  }
4968
4968
 
4969
- ._6HZLFIOZh4s- {
4970
- width: 100%;
4971
- }
4969
+ /* ============================================================
4970
+ SelectPrimitive
4971
+ Styled wrappers around BaseUI Select parts with Atlantis tokens.
4972
+ No field structure abstraction — consumers compose their own.
4973
+ ============================================================ */
4972
4974
 
4973
- ._-6ndFYNKKaM- {
4974
- display: inline-block;
4975
- width: auto;
4976
- }
4975
+ /* ------ Trigger ------ */
4977
4976
 
4978
- .c20czk-FSyY- {
4979
- /* Semantic, theme-adaptive token. */
4977
+ .WQiJQH4jadQ- {
4978
+ /* Field tokens */
4980
4979
  --field--placeholder-color: var(--color-text--secondary);
4981
4980
  --field--value-color: var(--color-heading);
4982
4981
  --field--border-color: var(--color-border--interactive);
4983
-
4984
- --field--placeholder-offset: 50%;
4985
- --field--placeholder-transform: -50%;
4986
-
4987
- --field--textAlign: left;
4988
-
4989
4982
  --field--height: var(--space-largest);
4990
-
4991
- --field--padding-top: calc(var(--space-base) - var(--space-smallest));
4992
- --field--padding-bottom: calc(var(--space-base) - var(--space-smallest));
4993
- --field--padding-left: var(--space-base);
4994
- --field--padding-right: var(--space-base);
4995
-
4996
- --field--value-lineHeight: calc(var(--base-unit) * 1.25);
4997
-
4983
+ --field--padding-x: var(--space-base);
4998
4984
  --field--background-color: var(--color-surface);
4999
-
5000
- --field--base-elevation: var(--elevation-base);
5001
- --field--label-elevation: calc(var(--field--base-elevation) + 1);
5002
-
5003
- --stepper--width: calc(var(--space-base) + var(--space-smaller));
4985
+ /* Space reserved on the right for the chevron icon */
4986
+ --field--icon-area: calc(
4987
+ var(--base-unit) * 1.25 + var(--field--padding-x) + var(--space-small)
4988
+ );
5004
4989
 
5005
4990
  display: -ms-flexbox;
5006
4991
 
5007
4992
  display: flex;
5008
4993
  position: relative;
5009
- -ms-flex-direction: row;
5010
- flex-direction: row;
5011
- -ms-flex-align: stretch;
5012
- align-items: stretch;
4994
+ -ms-flex-align: center;
4995
+ align-items: center;
5013
4996
  width: 100%;
4997
+ height: 48px;
4998
+ height: var(--field--height);
4999
+ box-sizing: border-box;
5000
+ padding: 0 calc(
5001
+ 16px * 1.25 + 16px + 8px
5002
+ ) 0 16px;
5003
+ padding: 0 var(--field--icon-area) 0 var(--field--padding-x);
5014
5004
  border: 1px solid hsl(200, 13%, 87%);
5015
5005
  border: var(--border-base) solid var(--field--border-color);
5016
- border-radius: 8px;
5017
- border-radius: var(--radius-base);
5018
- /* Read radius vars via fallback so InputGroup's parent-level overrides
5019
- * still flatten inner corners; declaring them on `.wrapper` would
5020
- * shadow the inherited value. */
5021
5006
  border-top-right-radius: 8px;
5022
5007
  border-top-right-radius: var(
5023
5008
  --public-field--top-right-radius,
@@ -5038,848 +5023,296 @@ a._7BLGtYNuJOU-.zgRx3ehZ2z8-:hover {
5038
5023
  --public-field--top-left-radius,
5039
5024
  var(--radius-base)
5040
5025
  );
5026
+ outline: none;
5041
5027
  color: hsl(197, 90%, 12%);
5042
5028
  color: var(--field--value-color);
5029
+ font-family: inherit;
5043
5030
  font-size: 14px;
5044
5031
  font-size: var(--typography--fontSize-base);
5032
+ text-align: left;
5045
5033
  background-color: rgba(255, 255, 255, 1);
5046
5034
  background-color: var(--field--background-color);
5047
- }
5035
+ cursor: pointer;
5048
5036
 
5049
- .c20czk-FSyY- * {
5050
- box-sizing: border-box;
5051
- }
5037
+ transition: box-shadow 200ms ease-out,
5038
+ border-color 200ms ease-out;
5052
5039
 
5053
- ._-6ndFYNKKaM- .c20czk-FSyY- {
5054
- width: auto;
5040
+ transition: box-shadow var(--timing-base) ease-out,
5041
+ border-color var(--timing-base) ease-out;
5042
+ -webkit-appearance: none;
5043
+ appearance: none;
5055
5044
  }
5056
5045
 
5057
- .c20czk-FSyY-:focus-within {
5058
- z-index: var(--field--base-elevation);
5046
+ .WQiJQH4jadQ-:focus-visible,
5047
+ .WQiJQH4jadQ-[data-popup-open] {
5059
5048
  box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 1), 0px 0px 0px 4px hsl(198, 12%, 57%);
5060
5049
  box-shadow: var(--shadow-focus);
5061
5050
  }
5062
5051
 
5063
- /**
5064
- * Base UI's `Field.Root` sets `data-invalid` on the outer container when the
5065
- * field's invalid state is true. We read that attribute instead of toggling
5066
- * a local `.invalid` class so Base UI is the single source of truth.
5067
- */
5068
-
5069
- ._6HZLFIOZh4s-[data-invalid] .c20czk-FSyY-,
5070
- ._6HZLFIOZh4s-[data-invalid] .c20czk-FSyY-:focus-within {
5071
- --field--border-color: var(--color-critical);
5072
- }
5073
-
5074
- ._-2INirAxaU4- {
5052
+ .WQiJQH4jadQ-:disabled {
5075
5053
  --field--placeholder-color: var(--color-disabled);
5076
5054
  --field--value-color: var(--color-disabled);
5077
5055
  --field--background-color: var(--color-disabled--secondary);
5078
5056
  --field--border-color: var(--color-border);
5057
+ cursor: not-allowed;
5079
5058
  }
5080
5059
 
5081
- ._-2INirAxaU4- :disabled {
5082
- -webkit-text-fill-color: var(--field--value-color);
5083
- opacity: 1;
5084
- }
5085
-
5086
- .NsFBA5oqRAA- {
5087
- --field--padding-left: var(--space-slim);
5088
- --field--padding-right: var(--space-slim);
5089
- --field--padding-top: var(--space-small);
5090
- --field--padding-bottom: var(--space-small);
5091
- --field--height: calc(var(--space-larger) + var(--space-smaller));
5092
- }
5093
-
5094
- .ExKqck-6xVs- {
5095
- --field--padding-left: var(--space-large);
5096
- --field--padding-right: var(--space-large);
5097
- --field--height: var(--space-extravagant);
5060
+ .WQiJQH4jadQ-[data-readonly] {
5061
+ --field--border-color: var(--color-border);
5062
+ --field--background-color: var(--color-disabled--secondary);
5063
+ pointer-events: none;
5064
+ cursor: default;
5098
5065
  }
5099
5066
 
5100
- .UWiqNi57G8g- {
5101
- --field--textAlign: center;
5067
+ .WQiJQH4jadQ-[data-invalid] {
5068
+ --field--border-color: var(--color-critical);
5102
5069
  }
5103
5070
 
5104
- .po25PZwJpe4- {
5105
- --field--textAlign: right;
5106
- }
5071
+ /* ------ Value / placeholder text ------ */
5107
5072
 
5108
- .k9dAO6d010o- {
5109
- display: -ms-flexbox;
5110
- display: flex;
5111
- position: relative;
5112
- z-index: 0;
5113
- z-index: var(--elevation-default);
5114
- height: var(--field--height);
5073
+ .P2HhjOjxY34- {
5115
5074
  -ms-flex: 1;
5116
5075
  flex: 1;
5117
- }
5118
-
5119
- .D-PmE-l-hZU- {
5120
- position: relative;
5121
- z-index: var(--field--base-elevation);
5122
- width: 100%;
5123
- padding-top: var(--field--padding-top);
5124
- padding-bottom: var(--field--padding-bottom);
5125
- padding-left: var(--field--padding-left);
5126
- padding-right: var(--field--padding-right);
5127
- border: none;
5128
- border-radius: 8px;
5129
- border-radius: var(--radius-base);
5130
- color: inherit;
5131
- font-family: inherit;
5132
- font-size: inherit;
5133
- line-height: var(--field--value-lineHeight);
5134
- text-align: var(--field--textAlign);
5135
- background: transparent;
5136
- -webkit-appearance: none;
5137
- appearance: none;
5138
- }
5139
-
5140
- .D-PmE-l-hZU-:focus {
5141
- outline: none;
5142
- }
5143
-
5144
- /**
5145
- * When the stepper is rendered as an in-flow flex sibling (default mode), it
5146
- * provides visual separation from the typed value. Tighten the input's
5147
- * own right padding so narrow consumers (~100px wrappers with a suffix) keep
5148
- * enough room for multi-digit values to display.
5149
- */
5150
-
5151
- .k9dAO6d010o-:has(> .t42w4ZDiDyI-) .D-PmE-l-hZU-,
5152
- .k9dAO6d010o-:has(> .NLptJ1t9Pj4-) .D-PmE-l-hZU- {
5153
- padding-right: 2px;
5154
- padding-right: var(--space-smallest);
5155
- }
5156
-
5157
- .Ggk3aaMcIJU- {
5158
- position: absolute;
5159
- top: var(--field--placeholder-offset);
5160
- left: 0;
5161
- z-index: var(--field--label-elevation);
5162
- width: 100%;
5163
- padding-left: var(--field--padding-left);
5164
- padding-right: var(--field--padding-right);
5076
+ min-width: 0;
5165
5077
  overflow: hidden;
5166
- color: var(--field--placeholder-color);
5167
- line-height: var(--field--value-lineHeight);
5168
- text-align: var(--field--textAlign);
5078
+ color: var(--field--value-color);
5169
5079
  text-overflow: ellipsis;
5170
5080
  white-space: nowrap;
5171
5081
  pointer-events: none;
5172
- -webkit-transform: translateY(var(--field--placeholder-transform));
5173
- transform: translateY(var(--field--placeholder-transform));
5174
5082
  }
5175
5083
 
5176
- .k9dAO6d010o-:not(.C7d6qmoZiKU-) .Ggk3aaMcIJU- {
5177
- transition: all 100ms;
5178
- transition: all var(--timing-quick);
5084
+ .WQiJQH4jadQ-[data-placeholder] .P2HhjOjxY34- {
5085
+ color: var(--field--placeholder-color);
5179
5086
  }
5180
5087
 
5181
- /**
5182
- * Value-present mini-label state: when the input has a value (or focus),
5183
- * shrink and pin the placeholder label to the top-left and grow the input's
5184
- * vertical padding to make room.
5185
- *
5186
- * The variables are hoisted to `.wrapper` (not `.inputWrapper`) so that
5187
- * affix labels — which are flex siblings of `.inputWrapper` inside `.wrapper`
5188
- * in the default render — also inherit the new padding values and stay
5189
- * vertically aligned with the typed value.
5190
- */
5191
-
5192
- .c20czk-FSyY-:has(
5193
- .k9dAO6d010o-:not(.NsFBA5oqRAA-):not(.C7d6qmoZiKU-)
5194
- .D-PmE-l-hZU-:not(:-ms-input-placeholder)
5195
- + .Ggk3aaMcIJU-:not(:empty)
5196
- ) {
5197
- --field--placeholder-offset: var(--space-smallest);
5198
- --field--placeholder-transform: 0;
5199
- --field--padding-top: calc(var(--space-base) + var(--space-smaller));
5200
- --field--padding-bottom: var(--space-small);
5201
- }
5088
+ /* ------ Chevron icon ------ */
5202
5089
 
5203
- .wrapper:has(
5204
- .inputWrapper:not(.small, .hideLabel)
5205
- .input:not(:-ms-input-placeholder)
5206
- + .label:not(:empty)
5207
- ) {
5208
- --field--placeholder-offset: var(--space-smallest);
5209
- --field--placeholder-transform: 0;
5210
- --field--padding-top: calc(var(--space-base) + var(--space-smaller));
5211
- --field--padding-bottom: var(--space-small);
5090
+ .cxgFUCKcXcw- {
5091
+ display: -ms-flexbox;
5092
+ display: flex;
5093
+ position: absolute;
5094
+ top: 50%;
5095
+ right: var(--field--padding-x);
5096
+ pointer-events: none;
5097
+ -webkit-transform: translateY(-50%);
5098
+ transform: translateY(-50%);
5099
+ -ms-flex-align: center;
5100
+ align-items: center;
5212
5101
  }
5213
5102
 
5214
- .c20czk-FSyY-:has(
5215
- .k9dAO6d010o-:not(.NsFBA5oqRAA-):not(.C7d6qmoZiKU-)
5216
- .D-PmE-l-hZU-:not(:placeholder-shown)
5217
- + .Ggk3aaMcIJU-:not(:empty)
5218
- ) {
5219
- --field--placeholder-offset: var(--space-smallest);
5220
- --field--placeholder-transform: 0;
5221
- --field--padding-top: calc(var(--space-base) + var(--space-smaller));
5222
- --field--padding-bottom: var(--space-small);
5103
+ ._3BEK4Z1gGis- {
5104
+ display: -ms-flexbox;
5105
+ display: flex;
5106
+ transition: -webkit-transform 100ms;
5107
+ transition: -webkit-transform var(--timing-quick);
5108
+ transition: transform 100ms;
5109
+ transition: transform var(--timing-quick);
5110
+ transition: transform 100ms, -webkit-transform 100ms;
5111
+ transition: transform var(--timing-quick), -webkit-transform var(--timing-quick);
5223
5112
  }
5224
5113
 
5225
- .k9dAO6d010o-._-2INirAxaU4- label {
5226
- --field--placeholder-color: var(--color-text-disabled);
5114
+ .WQiJQH4jadQ-[data-popup-open] ._3BEK4Z1gGis- {
5115
+ -webkit-transform: rotate(180deg);
5116
+ transform: rotate(180deg);
5227
5117
  }
5228
5118
 
5229
- .D-PmE-l-hZU-:not(:-ms-input-placeholder) + .Ggk3aaMcIJU-:not(:empty) {
5230
- font-size: 12px;
5231
- font-size: var(--typography--fontSize-small);
5232
- }
5119
+ /* ============================================================
5120
+ Popup / Dropdown — mirrors Menu dropdown styling
5121
+ ============================================================ */
5233
5122
 
5234
- .input:not(:-ms-input-placeholder) + .label:not(:empty) {
5235
- font-size: 12px;
5236
- font-size: var(--typography--fontSize-small);
5123
+ .g221yZJtRrU- {
5124
+ z-index: 1001;
5125
+ z-index: var(--elevation-modal);
5237
5126
  }
5238
5127
 
5239
- .D-PmE-l-hZU-:not(:placeholder-shown) + .Ggk3aaMcIJU-:not(:empty) {
5240
- font-size: 12px;
5241
- font-size: var(--typography--fontSize-small);
5128
+ .vifRnCQ18ss- {
5129
+ min-width: var(--anchor-width);
5130
+ box-shadow: 0px 1px 4px 0px rgba(0, 0, 0, 0.1), 0px 4px 12px 0px rgba(0, 0, 0, 0.05);
5131
+ box-shadow: var(--shadow-base);
5132
+ box-sizing: border-box;
5133
+ padding: 0;
5134
+ border: 1px solid hsl(200, 13%, 87%);
5135
+ border: var(--border-base) solid var(--color-border);
5136
+ border-radius: 8px;
5137
+ border-radius: var(--radius-base);
5138
+ outline: none;
5139
+ overflow: hidden;
5140
+ background-color: rgba(255, 255, 255, 1);
5141
+ background-color: var(--color-surface);
5242
5142
  }
5243
5143
 
5244
- .C7d6qmoZiKU- .D-PmE-l-hZU-:not(:-ms-input-placeholder) + .Ggk3aaMcIJU-:not(:empty) {
5245
- visibility: hidden;
5246
- }
5247
-
5248
- .hideLabel .input:not(:-ms-input-placeholder) + .label:not(:empty) {
5249
- visibility: hidden;
5250
- }
5251
-
5252
- .C7d6qmoZiKU- .D-PmE-l-hZU-:not(:placeholder-shown) + .Ggk3aaMcIJU-:not(:empty) {
5253
- visibility: hidden;
5254
- }
5255
-
5256
- .k9dAO6d010o-.NsFBA5oqRAA- .D-PmE-l-hZU-:not(:-ms-input-placeholder) + .Ggk3aaMcIJU-:not(:empty) {
5257
- display: none;
5258
- }
5144
+ .WsOmdkQ0SWU- {
5145
+ --menu-space: var(--space-small);
5146
+ --menu-item-min-height: calc(var(--base-unit) * 2.5);
5147
+ --menu-item-padding-y: var(--space-small);
5148
+ --menu-item-padding-x: var(--space-small);
5149
+ --menu-item-gap: var(--space-small);
5259
5150
 
5260
- .inputWrapper.small .input:not(:-ms-input-placeholder) + .label:not(:empty) {
5261
- display: none;
5262
- }
5151
+ display: -ms-flexbox;
5263
5152
 
5264
- .k9dAO6d010o-.NsFBA5oqRAA- .D-PmE-l-hZU-:not(:placeholder-shown) + .Ggk3aaMcIJU-:not(:empty) {
5265
- display: none;
5153
+ display: flex;
5154
+ -ms-flex-direction: column;
5155
+ flex-direction: column;
5156
+ max-height: min(
5157
+ 72vh,
5158
+ max(0px, calc(var(--available-height) - 16px))
5159
+ );
5160
+ max-height: min(
5161
+ 72vh,
5162
+ max(0px, calc(var(--available-height) - var(--space-base)))
5163
+ );
5164
+ box-sizing: border-box;
5165
+ padding: 8px;
5166
+ padding: var(--menu-space);
5167
+ border-radius: inherit;
5168
+ overflow: auto;
5266
5169
  }
5267
5170
 
5268
- /**
5269
- * Affix labels render as flex siblings of `.inputWrapper` inside `.wrapper`.
5270
- * The .prefix and .suffix modifiers carry variant-specific spacing so the
5271
- * label sits visually flush against the typed value (mirroring V1 visuals).
5272
- */
5171
+ /* ------ Item ------ */
5273
5172
 
5274
- ._4u1JHjUYvkY- {
5173
+ .wQ2wXu1YH-k- {
5275
5174
  display: -ms-flexbox;
5276
5175
  display: flex;
5277
5176
  -ms-flex-align: center;
5278
5177
  align-items: center;
5279
- -ms-flex: 0 0 auto;
5280
- flex: 0 0 auto;
5281
- padding-top: var(--field--padding-top);
5282
- padding-bottom: var(--field--padding-bottom);
5178
+ gap: var(--menu-item-gap);
5179
+ width: 100%;
5180
+ min-height: var(--menu-item-min-height);
5181
+ box-sizing: border-box;
5182
+ padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
5183
+ border: none;
5184
+ border-radius: 4px;
5185
+ border-radius: var(--radius-small);
5186
+ outline: none;
5187
+ color: inherit;
5188
+ font-family: inherit;
5283
5189
  font-size: 14px;
5284
5190
  font-size: var(--typography--fontSize-base);
5285
- line-height: var(--field--value-lineHeight);
5286
- white-space: nowrap;
5191
+ text-align: left;
5192
+ -webkit-user-select: none;
5193
+ -ms-user-select: none;
5194
+ user-select: none;
5195
+ background: transparent;
5196
+ cursor: pointer;
5197
+
5198
+ transition: background-color 200ms ease-out;
5199
+
5200
+ transition: background-color var(--timing-base) ease-out;
5287
5201
  }
5288
5202
 
5289
- /**
5290
- * Prefix label: negative right margin absorbs the input's left padding so the
5291
- * label sits flush against the typed value.
5292
- */
5203
+ .wQ2wXu1YH-k-[data-highlighted] {
5204
+ background-color: hsl(43, 18%, 92%);
5205
+ background-color: var(--color-surface--hover);
5206
+ }
5293
5207
 
5294
- ._4u1JHjUYvkY-.rEWH41rUUEE- {
5295
- margin: 0 calc((var(--field--padding-left) - 2px) * -1) 0 0;
5296
- margin: 0 calc((var(--field--padding-left) - var(--space-smallest)) * -1) 0 0;
5297
- padding-left: var(--field--padding-left);
5208
+ .wQ2wXu1YH-k-[data-disabled] {
5209
+ color: hsl(0, 0%, 58%);
5210
+ color: var(--color-disabled);
5211
+ cursor: not-allowed;
5298
5212
  }
5299
5213
 
5300
- /**
5301
- * Suffix label: no negative left margin (the stepper sits between the input
5302
- * value and this label, so we don't want to pull the label across it).
5303
- */
5214
+ /* ------ Item text ------ */
5304
5215
 
5305
- ._4u1JHjUYvkY-._4-iNl6jdfmM- {
5306
- padding-right: var(--field--padding-left);
5216
+ ._--Vi-17OUiU- {
5217
+ -ms-flex: 1;
5218
+ flex: 1;
5219
+ min-width: 0;
5220
+ overflow: hidden;
5221
+ text-overflow: ellipsis;
5222
+ white-space: nowrap;
5307
5223
  }
5308
5224
 
5309
- /**
5310
- * Outer affix icon: rendered as a flex sibling of .inputWrapper inside the
5311
- * field group. The prefix variant uses a negative right margin to abut the
5312
- * input's left padding (V1 pattern); the suffix variant does NOT, because the
5313
- * stepper now sits between the input wrapper and the suffix icon, and a
5314
- * negative margin would pull the icon over the stepper.
5315
- */
5225
+ /* ------ Item indicator (checkmark) ------ */
5316
5226
 
5317
- ._5-Iw-2c-wXk- {
5318
- display: -ms-flexbox;
5319
- display: flex;
5227
+ .CfjooR3I8Jc- {
5228
+ display: -ms-inline-flexbox;
5229
+ display: inline-flex;
5230
+ /* Hidden by default; revealed via CSS when the item is selected.
5231
+ Using visibility (not display) so layout width is always reserved. */
5232
+ visibility: hidden;
5233
+ min-width: calc(16px * 1.5);
5234
+ min-width: calc(var(--base-unit) * 1.5);
5235
+ -ms-flex-negative: 0;
5236
+ flex-shrink: 0;
5320
5237
  -ms-flex-align: center;
5321
5238
  align-items: center;
5322
5239
  -ms-flex-pack: center;
5323
5240
  justify-content: center;
5324
- margin: 0 calc(var(--field--padding-left) * -1) 0 0;
5325
- padding: 0 var(--field--padding-right) 0 var(--field--padding-left);
5326
5241
  }
5327
5242
 
5328
- ._5-Iw-2c-wXk-._4-iNl6jdfmM- {
5329
- margin: 0;
5330
- padding: 0 var(--field--padding-right) 0 8px;
5331
- padding: 0 var(--field--padding-right) 0 var(--space-small);
5243
+ .wQ2wXu1YH-k-[data-selected] .CfjooR3I8Jc- {
5244
+ visibility: visible;
5332
5245
  }
5333
5246
 
5334
- /**
5335
- * Compound `<.Affix>`: a single flex sibling of .inputWrapper that bundles
5336
- * icon and/or label inline. Uses the field's vertical padding so it tracks the
5337
- * floating mini-label and lines up with the typed value (and the loading
5338
- * indicator), matching the default split composition.
5339
- */
5247
+ /* ------ Separator ------ */
5340
5248
 
5341
- .tZjZRRcAShY- {
5342
- display: -ms-flexbox;
5343
- display: flex;
5344
- -ms-flex-align: center;
5345
- align-items: center;
5346
- gap: 4px;
5347
- gap: var(--space-smaller);
5348
- padding: var(--field--padding-top) 16px
5349
- var(--field--padding-bottom);
5350
- padding: var(--field--padding-top) var(--space-base)
5351
- var(--field--padding-bottom);
5352
- color: hsl(197, 21%, 36%);
5353
- color: var(--color-text--secondary);
5354
- font-size: 14px;
5355
- font-size: var(--typography--fontSize-base);
5356
- white-space: nowrap;
5249
+ .lI5-MyBERFY- {
5250
+ margin: 8px 0;
5251
+ margin: var(--space-small) 0;
5252
+ border: none;
5253
+ border-bottom: 1px solid hsl(200, 13%, 87%);
5254
+ border-bottom: var(--border-base) solid var(--color-border);
5357
5255
  }
5358
5256
 
5359
- .mbEcqyBQoEg- {
5360
- line-height: var(--field--value-lineHeight);
5361
- }
5257
+ /* ------ Group ------ */
5362
5258
 
5363
- .t42w4ZDiDyI- {
5259
+ ._21z9KBWR06w- {
5364
5260
  display: -ms-flexbox;
5365
5261
  display: flex;
5366
- z-index: calc(var(--field--base-elevation) + 1);
5367
- width: var(--stepper--width);
5368
- opacity: 0;
5369
- transition: opacity 100ms;
5370
- transition: opacity var(--timing-quick);
5371
5262
  -ms-flex-direction: column;
5372
5263
  flex-direction: column;
5373
- -ms-flex: 0 0 auto;
5374
- flex: 0 0 auto;
5375
- }
5376
-
5377
- /*
5378
- * Loading indicator: occupies the stepper's slot, always visible (no hover
5379
- * reveal), vertically centered in the field to match InputText's spinner.
5380
- * The default right padding is just a small gap from a following suffix.
5381
- */
5382
-
5383
- .NLptJ1t9Pj4- {
5384
- display: -ms-flexbox;
5385
- display: flex;
5386
- z-index: calc(var(--field--base-elevation) + 1);
5387
- -ms-flex-align: center;
5388
- align-items: center;
5389
- -ms-flex-pack: center;
5390
- justify-content: center;
5391
- -ms-flex: 0 0 auto;
5392
- flex: 0 0 auto;
5393
- padding-right: 4px;
5394
- padding-right: var(--space-smaller);
5395
5264
  }
5396
5265
 
5397
- /*
5398
- * When the indicator sits flush to the field's right edge (no suffix follows),
5399
- * inset it by the field's right padding so it matches InputText's spinner
5400
- * spacing instead of hugging the border.
5401
- */
5402
-
5403
- .c20czk-FSyY- > .k9dAO6d010o-:last-child > .NLptJ1t9Pj4- {
5404
- padding-right: var(--field--padding-right);
5266
+ ._21z9KBWR06w-:not(:last-child) {
5267
+ padding-bottom: 8px;
5268
+ padding-bottom: var(--space-small);
5269
+ border-bottom: 1px solid hsl(200, 13%, 87%);
5270
+ border-bottom: var(--border-base) solid var(--color-border);
5405
5271
  }
5406
5272
 
5407
- /* Default mode: stepper lives inside .inputWrapper. Reveal on local hover/focus. */
5408
-
5409
- .k9dAO6d010o-:hover .t42w4ZDiDyI-,
5410
- .k9dAO6d010o-:focus-within .t42w4ZDiDyI- {
5411
- opacity: 1;
5273
+ ._21z9KBWR06w-:not(:first-child) {
5274
+ margin-top: 8px;
5275
+ margin-top: var(--space-small);
5412
5276
  }
5413
5277
 
5414
- /**
5415
- * Compound mode: the consumer composes <.Stepper> as a direct child of
5416
- * NumberField.Group (.wrapper). Reveal on the wider group hover/focus there.
5417
- * The `>` direct-child selector ensures this only matches the compound case;
5418
- * default-mode steppers are nested deeper inside .inputWrapper.
5419
- */
5420
-
5421
- .c20czk-FSyY-:hover > .t42w4ZDiDyI-,
5422
- .c20czk-FSyY-:focus-within > .t42w4ZDiDyI- {
5423
- opacity: 1;
5424
- }
5278
+ /* ------ Group label ------ */
5425
5279
 
5426
- .zzrCzYF-8u0- {
5280
+ .ZhtKkgZiSQI- {
5427
5281
  display: -ms-flexbox;
5428
5282
  display: flex;
5429
- padding: 0;
5430
- border: none;
5283
+ -ms-flex-align: center;
5284
+ align-items: center;
5285
+ padding: 8px 8px 4px;
5286
+ padding: var(--space-small) var(--space-small) var(--space-smaller);
5431
5287
  color: hsl(197, 21%, 36%);
5432
5288
  color: var(--color-text--secondary);
5433
- line-height: 0;
5434
- background: transparent;
5435
- cursor: pointer;
5289
+ font-size: 14px;
5290
+ font-size: var(--typography--fontSize-base);
5291
+ font-weight: 400;
5292
+ }
5293
+
5294
+ .kub1yKbFFN0- {
5295
+ display: -ms-flexbox;
5296
+ display: flex;
5297
+ -ms-flex-wrap: wrap;
5298
+ flex-wrap: wrap;
5299
+ gap: 16px;
5300
+ gap: var(--public-cluster-space, var(--space-base, 16px));
5301
+ -ms-flex-pack: flex-start;
5302
+ -ms-flex-pack: var(--public-cluster-justify, flex-start);
5303
+ justify-content: flex-start;
5304
+ justify-content: var(--public-cluster-justify, flex-start);
5436
5305
  -ms-flex-align: center;
5306
+ -ms-flex-align: var(--public-cluster-align, center);
5437
5307
  align-items: center;
5438
- -ms-flex-pack: center;
5439
- justify-content: center;
5440
- -ms-flex: 1;
5441
- flex: 1;
5308
+ align-items: var(--public-cluster-align, center);
5309
+ width: var(--public-cluster-width);
5442
5310
  }
5443
5311
 
5444
- .zzrCzYF-8u0-:hover {
5445
- color: hsl(197, 90%, 12%);
5446
- color: var(--color-heading);
5447
- background: hsl(43, 18%, 92%);
5448
- background: var(--color-surface--hover);
5449
- }
5312
+ /** When we nest clusters, the clustering stops working because of the 100% width. This prevents nested clusters from fighting **/
5450
5313
 
5451
- .zzrCzYF-8u0-:focus-visible {
5452
- outline: 0px 0px 0px 2px rgba(255, 255, 255, 1), 0px 0px 0px 4px hsl(198, 12%, 57%);
5453
- outline: var(--shadow-focus);
5454
- outline-offset: -2px;
5455
- }
5456
-
5457
- .zzrCzYF-8u0-:disabled {
5458
- cursor: not-allowed;
5459
- opacity: 0.4;
5460
- }
5461
-
5462
- /*
5463
- * Match the wrapper's INNER border arc when the stepper sits at the wrapper's
5464
- * right edge so the hover background follows the curve flush. Only fires when
5465
- * nothing follows the stepper (no suffix label/icon in default mode, no later
5466
- * child in compound mode). Button radius = outer radius - border width.
5467
- */
5468
-
5469
- :where(
5470
- .c20czk-FSyY- > .t42w4ZDiDyI-:last-child,
5471
- .c20czk-FSyY- > .k9dAO6d010o-:last-child > .t42w4ZDiDyI-
5472
- )
5473
- > .zzrCzYF-8u0-:first-child {
5474
- border-top-right-radius: calc(
5475
- 8px -
5476
- 1px
5477
- );
5478
- border-top-right-radius: calc(
5479
- var(--public-field--top-right-radius, var(--radius-base)) -
5480
- var(--border-base)
5481
- );
5482
- }
5483
-
5484
- :where(
5485
- .c20czk-FSyY- > .t42w4ZDiDyI-:last-child,
5486
- .c20czk-FSyY- > .k9dAO6d010o-:last-child > .t42w4ZDiDyI-
5487
- )
5488
- > .zzrCzYF-8u0-:last-child {
5489
- border-bottom-right-radius: calc(
5490
- 8px -
5491
- 1px
5492
- );
5493
- border-bottom-right-radius: calc(
5494
- var(--public-field--bottom-right-radius, var(--radius-base)) -
5495
- var(--border-base)
5496
- );
5497
- }
5498
-
5499
- ._0mcAZAtwQ2o- {
5500
- display: -ms-flexbox;
5501
- display: flex;
5502
- -ms-flex-direction: column;
5503
- flex-direction: column;
5504
- }
5505
-
5506
- /**
5507
- * `Field.Description` renders a `<p>`, which inherits the user-agent
5508
- * `margin-block` defaults. Reset margins so spacing comes only from our token.
5509
- */
5510
-
5511
- .xxp2uGc-B6o- {
5512
- margin: 4px 0 0 0;
5513
- margin: var(--space-smaller) 0 0 0;
5514
- color: hsl(197, 21%, 36%);
5515
- color: var(--color-text--secondary);
5516
- font-size: 12px;
5517
- font-size: var(--typography--fontSize-small);
5518
- }
5519
-
5520
- .q-WsOi6joGo- {
5521
- -ms-flex-align: center;
5522
- align-items: center;
5523
- display: -ms-flexbox;
5524
- display: flex;
5525
- gap: 4px;
5526
- gap: var(--space-smaller);
5527
- padding: 4px;
5528
- padding: var(--space-smaller);
5529
- padding-left: 0;
5530
- color: hsl(6, 64%, 51%);
5531
- color: var(--color-critical);
5532
- font-size: 12px;
5533
- font-size: var(--typography--fontSize-small);
5534
- }
5535
-
5536
- /* ============================================================
5537
- SelectPrimitive
5538
- Styled wrappers around BaseUI Select parts with Atlantis tokens.
5539
- No field structure abstraction — consumers compose their own.
5540
- ============================================================ */
5541
-
5542
- /* ------ Trigger ------ */
5543
-
5544
- .WQiJQH4jadQ- {
5545
- /* Field tokens */
5546
- --field--placeholder-color: var(--color-text--secondary);
5547
- --field--value-color: var(--color-heading);
5548
- --field--border-color: var(--color-border--interactive);
5549
- --field--height: var(--space-largest);
5550
- --field--padding-x: var(--space-base);
5551
- --field--background-color: var(--color-surface);
5552
- /* Space reserved on the right for the chevron icon */
5553
- --field--icon-area: calc(
5554
- var(--base-unit) * 1.25 + var(--field--padding-x) + var(--space-small)
5555
- );
5556
-
5557
- display: -ms-flexbox;
5558
-
5559
- display: flex;
5560
- position: relative;
5561
- -ms-flex-align: center;
5562
- align-items: center;
5563
- width: 100%;
5564
- height: 48px;
5565
- height: var(--field--height);
5566
- box-sizing: border-box;
5567
- padding: 0 calc(
5568
- 16px * 1.25 + 16px + 8px
5569
- ) 0 16px;
5570
- padding: 0 var(--field--icon-area) 0 var(--field--padding-x);
5571
- border: 1px solid hsl(200, 13%, 87%);
5572
- border: var(--border-base) solid var(--field--border-color);
5573
- border-top-right-radius: 8px;
5574
- border-top-right-radius: var(
5575
- --public-field--top-right-radius,
5576
- var(--radius-base)
5577
- );
5578
- border-bottom-right-radius: 8px;
5579
- border-bottom-right-radius: var(
5580
- --public-field--bottom-right-radius,
5581
- var(--radius-base)
5582
- );
5583
- border-bottom-left-radius: 8px;
5584
- border-bottom-left-radius: var(
5585
- --public-field--bottom-left-radius,
5586
- var(--radius-base)
5587
- );
5588
- border-top-left-radius: 8px;
5589
- border-top-left-radius: var(
5590
- --public-field--top-left-radius,
5591
- var(--radius-base)
5592
- );
5593
- outline: none;
5594
- color: hsl(197, 90%, 12%);
5595
- color: var(--field--value-color);
5596
- font-family: inherit;
5597
- font-size: 14px;
5598
- font-size: var(--typography--fontSize-base);
5599
- text-align: left;
5600
- background-color: rgba(255, 255, 255, 1);
5601
- background-color: var(--field--background-color);
5602
- cursor: pointer;
5603
-
5604
- transition: box-shadow 200ms ease-out,
5605
- border-color 200ms ease-out;
5606
-
5607
- transition: box-shadow var(--timing-base) ease-out,
5608
- border-color var(--timing-base) ease-out;
5609
- -webkit-appearance: none;
5610
- appearance: none;
5611
- }
5612
-
5613
- .WQiJQH4jadQ-:focus-visible,
5614
- .WQiJQH4jadQ-[data-popup-open] {
5615
- box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 1), 0px 0px 0px 4px hsl(198, 12%, 57%);
5616
- box-shadow: var(--shadow-focus);
5617
- }
5618
-
5619
- .WQiJQH4jadQ-:disabled {
5620
- --field--placeholder-color: var(--color-disabled);
5621
- --field--value-color: var(--color-disabled);
5622
- --field--background-color: var(--color-disabled--secondary);
5623
- --field--border-color: var(--color-border);
5624
- cursor: not-allowed;
5625
- }
5626
-
5627
- .WQiJQH4jadQ-[data-readonly] {
5628
- --field--border-color: var(--color-border);
5629
- --field--background-color: var(--color-disabled--secondary);
5630
- pointer-events: none;
5631
- cursor: default;
5632
- }
5633
-
5634
- .WQiJQH4jadQ-[data-invalid] {
5635
- --field--border-color: var(--color-critical);
5636
- }
5637
-
5638
- /* ------ Value / placeholder text ------ */
5639
-
5640
- .P2HhjOjxY34- {
5641
- -ms-flex: 1;
5642
- flex: 1;
5643
- min-width: 0;
5644
- overflow: hidden;
5645
- color: var(--field--value-color);
5646
- text-overflow: ellipsis;
5647
- white-space: nowrap;
5648
- pointer-events: none;
5649
- }
5650
-
5651
- .WQiJQH4jadQ-[data-placeholder] .P2HhjOjxY34- {
5652
- color: var(--field--placeholder-color);
5653
- }
5654
-
5655
- /* ------ Chevron icon ------ */
5656
-
5657
- .cxgFUCKcXcw- {
5658
- display: -ms-flexbox;
5659
- display: flex;
5660
- position: absolute;
5661
- top: 50%;
5662
- right: var(--field--padding-x);
5663
- pointer-events: none;
5664
- -webkit-transform: translateY(-50%);
5665
- transform: translateY(-50%);
5666
- -ms-flex-align: center;
5667
- align-items: center;
5668
- }
5669
-
5670
- ._3BEK4Z1gGis- {
5671
- display: -ms-flexbox;
5672
- display: flex;
5673
- transition: -webkit-transform 100ms;
5674
- transition: -webkit-transform var(--timing-quick);
5675
- transition: transform 100ms;
5676
- transition: transform var(--timing-quick);
5677
- transition: transform 100ms, -webkit-transform 100ms;
5678
- transition: transform var(--timing-quick), -webkit-transform var(--timing-quick);
5679
- }
5680
-
5681
- .WQiJQH4jadQ-[data-popup-open] ._3BEK4Z1gGis- {
5682
- -webkit-transform: rotate(180deg);
5683
- transform: rotate(180deg);
5684
- }
5685
-
5686
- /* ============================================================
5687
- Popup / Dropdown — mirrors Menu dropdown styling
5688
- ============================================================ */
5689
-
5690
- .g221yZJtRrU- {
5691
- z-index: 1001;
5692
- z-index: var(--elevation-modal);
5693
- }
5694
-
5695
- .vifRnCQ18ss- {
5696
- min-width: var(--anchor-width);
5697
- box-shadow: 0px 1px 4px 0px rgba(0, 0, 0, 0.1), 0px 4px 12px 0px rgba(0, 0, 0, 0.05);
5698
- box-shadow: var(--shadow-base);
5699
- box-sizing: border-box;
5700
- padding: 0;
5701
- border: 1px solid hsl(200, 13%, 87%);
5702
- border: var(--border-base) solid var(--color-border);
5703
- border-radius: 8px;
5704
- border-radius: var(--radius-base);
5705
- outline: none;
5706
- overflow: hidden;
5707
- background-color: rgba(255, 255, 255, 1);
5708
- background-color: var(--color-surface);
5709
- }
5710
-
5711
- .WsOmdkQ0SWU- {
5712
- --menu-space: var(--space-small);
5713
- --menu-item-min-height: calc(var(--base-unit) * 2.5);
5714
- --menu-item-padding-y: var(--space-small);
5715
- --menu-item-padding-x: var(--space-small);
5716
- --menu-item-gap: var(--space-small);
5717
-
5718
- display: -ms-flexbox;
5719
-
5720
- display: flex;
5721
- -ms-flex-direction: column;
5722
- flex-direction: column;
5723
- max-height: min(
5724
- 72vh,
5725
- max(0px, calc(var(--available-height) - 16px))
5726
- );
5727
- max-height: min(
5728
- 72vh,
5729
- max(0px, calc(var(--available-height) - var(--space-base)))
5730
- );
5731
- box-sizing: border-box;
5732
- padding: 8px;
5733
- padding: var(--menu-space);
5734
- border-radius: inherit;
5735
- overflow: auto;
5736
- }
5737
-
5738
- /* ------ Item ------ */
5739
-
5740
- .wQ2wXu1YH-k- {
5741
- display: -ms-flexbox;
5742
- display: flex;
5743
- -ms-flex-align: center;
5744
- align-items: center;
5745
- gap: var(--menu-item-gap);
5746
- width: 100%;
5747
- min-height: var(--menu-item-min-height);
5748
- box-sizing: border-box;
5749
- padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
5750
- border: none;
5751
- border-radius: 4px;
5752
- border-radius: var(--radius-small);
5753
- outline: none;
5754
- color: inherit;
5755
- font-family: inherit;
5756
- font-size: 14px;
5757
- font-size: var(--typography--fontSize-base);
5758
- text-align: left;
5759
- -webkit-user-select: none;
5760
- -ms-user-select: none;
5761
- user-select: none;
5762
- background: transparent;
5763
- cursor: pointer;
5764
-
5765
- transition: background-color 200ms ease-out;
5766
-
5767
- transition: background-color var(--timing-base) ease-out;
5768
- }
5769
-
5770
- .wQ2wXu1YH-k-[data-highlighted] {
5771
- background-color: hsl(43, 18%, 92%);
5772
- background-color: var(--color-surface--hover);
5773
- }
5774
-
5775
- .wQ2wXu1YH-k-[data-disabled] {
5776
- color: hsl(0, 0%, 58%);
5777
- color: var(--color-disabled);
5778
- cursor: not-allowed;
5779
- }
5780
-
5781
- /* ------ Item text ------ */
5782
-
5783
- ._--Vi-17OUiU- {
5784
- -ms-flex: 1;
5785
- flex: 1;
5786
- min-width: 0;
5787
- overflow: hidden;
5788
- text-overflow: ellipsis;
5789
- white-space: nowrap;
5790
- }
5791
-
5792
- /* ------ Item indicator (checkmark) ------ */
5793
-
5794
- .CfjooR3I8Jc- {
5795
- display: -ms-inline-flexbox;
5796
- display: inline-flex;
5797
- /* Hidden by default; revealed via CSS when the item is selected.
5798
- Using visibility (not display) so layout width is always reserved. */
5799
- visibility: hidden;
5800
- min-width: calc(16px * 1.5);
5801
- min-width: calc(var(--base-unit) * 1.5);
5802
- -ms-flex-negative: 0;
5803
- flex-shrink: 0;
5804
- -ms-flex-align: center;
5805
- align-items: center;
5806
- -ms-flex-pack: center;
5807
- justify-content: center;
5808
- }
5809
-
5810
- .wQ2wXu1YH-k-[data-selected] .CfjooR3I8Jc- {
5811
- visibility: visible;
5812
- }
5813
-
5814
- /* ------ Separator ------ */
5815
-
5816
- .lI5-MyBERFY- {
5817
- margin: 8px 0;
5818
- margin: var(--space-small) 0;
5819
- border: none;
5820
- border-bottom: 1px solid hsl(200, 13%, 87%);
5821
- border-bottom: var(--border-base) solid var(--color-border);
5822
- }
5823
-
5824
- /* ------ Group ------ */
5825
-
5826
- ._21z9KBWR06w- {
5827
- display: -ms-flexbox;
5828
- display: flex;
5829
- -ms-flex-direction: column;
5830
- flex-direction: column;
5831
- }
5832
-
5833
- ._21z9KBWR06w-:not(:last-child) {
5834
- padding-bottom: 8px;
5835
- padding-bottom: var(--space-small);
5836
- border-bottom: 1px solid hsl(200, 13%, 87%);
5837
- border-bottom: var(--border-base) solid var(--color-border);
5838
- }
5839
-
5840
- ._21z9KBWR06w-:not(:first-child) {
5841
- margin-top: 8px;
5842
- margin-top: var(--space-small);
5843
- }
5844
-
5845
- /* ------ Group label ------ */
5846
-
5847
- .ZhtKkgZiSQI- {
5848
- display: -ms-flexbox;
5849
- display: flex;
5850
- -ms-flex-align: center;
5851
- align-items: center;
5852
- padding: 8px 8px 4px;
5853
- padding: var(--space-small) var(--space-small) var(--space-smaller);
5854
- color: hsl(197, 21%, 36%);
5855
- color: var(--color-text--secondary);
5856
- font-size: 14px;
5857
- font-size: var(--typography--fontSize-base);
5858
- font-weight: 400;
5859
- }
5860
-
5861
- .kub1yKbFFN0- {
5862
- display: -ms-flexbox;
5863
- display: flex;
5864
- -ms-flex-wrap: wrap;
5865
- flex-wrap: wrap;
5866
- gap: 16px;
5867
- gap: var(--public-cluster-space, var(--space-base, 16px));
5868
- -ms-flex-pack: flex-start;
5869
- -ms-flex-pack: var(--public-cluster-justify, flex-start);
5870
- justify-content: flex-start;
5871
- justify-content: var(--public-cluster-justify, flex-start);
5872
- -ms-flex-align: center;
5873
- -ms-flex-align: var(--public-cluster-align, center);
5874
- align-items: center;
5875
- align-items: var(--public-cluster-align, center);
5876
- width: var(--public-cluster-width);
5877
- }
5878
-
5879
- /** When we nest clusters, the clustering stops working because of the 100% width. This prevents nested clusters from fighting **/
5880
-
5881
- .kub1yKbFFN0- .kub1yKbFFN0- {
5882
- width: auto;
5314
+ .kub1yKbFFN0- .kub1yKbFFN0- {
5315
+ width: auto;
5883
5316
  }
5884
5317
 
5885
5318
  /** For collapse below. If any of the sizes are active, we're in column mode. */
@@ -12276,31 +11709,21 @@ html.atlantisLightBoxActive {
12276
11709
  --public-field--bottom-right-radius: 0;
12277
11710
  }
12278
11711
 
12279
- /*****************************************************************************
12280
- * In Atlantis, these `--public-field` properties are used in other components such
12281
- * as InputGroup, therefore they must stay on :root
12282
- * (but here we move them to .wrapper just to contain them for the time being)
12283
- **/
12284
- :root {
12285
- --public-field--top-left-radius: var(--radius-base);
12286
- --public-field--top-right-radius: var(--radius-base);
12287
- --public-field--bottom-left-radius: var(--radius-base);
12288
- --public-field--bottom-right-radius: var(--radius-base);
12289
- }
12290
11712
  .-W4QiocGsR4- {
12291
11713
  width: 100%;
12292
11714
  }
11715
+
12293
11716
  ._9-f2CjSVojs- {
12294
11717
  display: inline-block;
12295
11718
  width: auto;
12296
11719
  }
11720
+
12297
11721
  ._4y342TRP-y8- {
12298
- --field--placeholder-color: var(--color-base-blue--600);
11722
+ /* Semantic, theme-adaptive token. */
11723
+ --field--placeholder-color: var(--color-text--secondary);
12299
11724
  --field--value-color: var(--color-heading);
12300
11725
  --field--border-color: var(--color-border--interactive);
12301
11726
 
12302
- --postfix-right: var(--space-base);
12303
-
12304
11727
  --field--placeholder-offset: 50%;
12305
11728
  --field--placeholder-transform: -50%;
12306
11729
 
@@ -12319,27 +11742,45 @@ html.atlantisLightBoxActive {
12319
11742
 
12320
11743
  --field--base-elevation: var(--elevation-base);
12321
11744
  --field--label-elevation: calc(var(--field--base-elevation) + 1);
12322
- --field--postfix-elevation: calc(var(--field--base-elevation) - 1);
12323
- --field--postfix-action-elevation: calc(var(--field--base-elevation) + 2);
11745
+
11746
+ --stepper--width: calc(var(--space-base) + var(--space-smaller));
12324
11747
 
12325
11748
  display: -ms-flexbox;
12326
11749
 
12327
11750
  display: flex;
12328
- -ms-flex-direction: column;
12329
- flex-direction: column;
11751
+ position: relative;
11752
+ -ms-flex-direction: row;
11753
+ flex-direction: row;
11754
+ -ms-flex-align: stretch;
11755
+ align-items: stretch;
12330
11756
  width: 100%;
12331
11757
  border: 1px solid hsl(200, 13%, 87%);
12332
11758
  border: var(--border-base) solid var(--field--border-color);
12333
11759
  border-radius: 8px;
12334
11760
  border-radius: var(--radius-base);
11761
+ /* Read radius vars via fallback so InputGroup's parent-level overrides
11762
+ * still flatten inner corners; declaring them on `.wrapper` would
11763
+ * shadow the inherited value. */
12335
11764
  border-top-right-radius: 8px;
12336
- border-top-right-radius: var(--public-field--top-right-radius);
11765
+ border-top-right-radius: var(
11766
+ --public-field--top-right-radius,
11767
+ var(--radius-base)
11768
+ );
12337
11769
  border-bottom-right-radius: 8px;
12338
- border-bottom-right-radius: var(--public-field--bottom-right-radius);
11770
+ border-bottom-right-radius: var(
11771
+ --public-field--bottom-right-radius,
11772
+ var(--radius-base)
11773
+ );
12339
11774
  border-bottom-left-radius: 8px;
12340
- border-bottom-left-radius: var(--public-field--bottom-left-radius);
11775
+ border-bottom-left-radius: var(
11776
+ --public-field--bottom-left-radius,
11777
+ var(--radius-base)
11778
+ );
12341
11779
  border-top-left-radius: 8px;
12342
- border-top-left-radius: var(--public-field--top-left-radius);
11780
+ border-top-left-radius: var(
11781
+ --public-field--top-left-radius,
11782
+ var(--radius-base)
11783
+ );
12343
11784
  color: hsl(197, 90%, 12%);
12344
11785
  color: var(--field--value-color);
12345
11786
  font-size: 14px;
@@ -12347,94 +11788,80 @@ html.atlantisLightBoxActive {
12347
11788
  background-color: rgba(255, 255, 255, 1);
12348
11789
  background-color: var(--field--background-color);
12349
11790
  }
11791
+
12350
11792
  ._4y342TRP-y8- * {
12351
11793
  box-sizing: border-box;
12352
11794
  }
11795
+
11796
+ ._9-f2CjSVojs- ._4y342TRP-y8- {
11797
+ width: auto;
11798
+ }
11799
+
12353
11800
  ._4y342TRP-y8-:focus-within {
12354
- position: relative;
12355
11801
  z-index: var(--field--base-elevation);
12356
11802
  box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 1), 0px 0px 0px 4px hsl(198, 12%, 57%);
12357
11803
  box-shadow: var(--shadow-focus);
12358
11804
  }
12359
- .-bawhitao74- {
12360
- display: -ms-flexbox;
12361
- display: flex;
12362
- height: var(--field--height);
12363
- -ms-flex: 1;
12364
- flex: 1;
12365
- }
12366
- ._0ihSRVfrcGo-,
12367
- ._0ihSRVfrcGo-:focus-within {
11805
+
11806
+ /**
11807
+ * Base UI's `Field.Root` sets `data-invalid` on the outer container when the
11808
+ * field's invalid state is true. We read that attribute instead of toggling
11809
+ * a local `.invalid` class so Base UI is the single source of truth.
11810
+ */
11811
+
11812
+ .-W4QiocGsR4-[data-invalid] ._4y342TRP-y8-,
11813
+ .-W4QiocGsR4-[data-invalid] ._4y342TRP-y8-:focus-within {
12368
11814
  --field--border-color: var(--color-critical);
12369
- position: relative;
11815
+ /* Elevate like :focus-within so the critical border paints over the adjacent
11816
+ * field's border when fields overlap inside a horizontal InputGroup. */
11817
+ z-index: var(--field--base-elevation);
12370
11818
  }
11819
+
12371
11820
  .d-YOq6z4ZxM- {
12372
11821
  --field--placeholder-color: var(--color-disabled);
12373
11822
  --field--value-color: var(--color-disabled);
12374
11823
  --field--background-color: var(--color-disabled--secondary);
12375
11824
  --field--border-color: var(--color-border);
12376
11825
  }
12377
- /* override iOS default styling for disabled input */
11826
+
12378
11827
  .d-YOq6z4ZxM- :disabled {
12379
11828
  -webkit-text-fill-color: var(--field--value-color);
12380
11829
  opacity: 1;
12381
11830
  }
12382
- .buIzMqBEpSQ- {
12383
- margin-top: 4px;
12384
- margin-top: var(--space-smaller);
12385
- }
12386
- .pY0cqJVnma0- {
12387
- -ms-flex-align: center;
12388
- align-items: center;
12389
- display: -ms-flexbox;
12390
- display: flex;
12391
- gap: 4px;
12392
- gap: var(--space-smaller);
12393
- padding: 4px;
12394
- padding: var(--space-smaller);
12395
- padding-left: 0;
12396
- }
11831
+
12397
11832
  .YTL0AyJdbC8- {
12398
- --field--padding-left: calc(var(--space-base) - var(--space-smaller));
12399
- --field--padding-right: calc(var(--space-base) - var(--space-smaller));
11833
+ --field--padding-left: var(--space-slim);
11834
+ --field--padding-right: var(--space-slim);
12400
11835
  --field--padding-top: var(--space-small);
12401
11836
  --field--padding-bottom: var(--space-small);
12402
11837
  --field--height: calc(var(--space-larger) + var(--space-smaller));
12403
- --postfix-right: calc(var(--space-small) + var(--space-smaller));
12404
11838
  }
11839
+
12405
11840
  .mUfanIovnVg- {
12406
11841
  --field--padding-left: var(--space-large);
12407
11842
  --field--padding-right: var(--space-large);
12408
- --field--height: calc(var(--space-extravagant));
12409
- --postfix-right: var(--space-large);
11843
+ --field--height: var(--space-extravagant);
12410
11844
  }
11845
+
12411
11846
  ._8MM9keFOeD0- {
12412
11847
  --field--textAlign: center;
12413
11848
  }
11849
+
12414
11850
  .mTeuCQufdj4- {
12415
11851
  --field--textAlign: right;
12416
11852
  }
12417
- /**
12418
- * Input Wrapper
12419
- **/
11853
+
12420
11854
  .IgE0pfetwVM- {
12421
11855
  display: -ms-flexbox;
12422
11856
  display: flex;
12423
- -ms-flex: 1;
12424
- flex: 1;
12425
11857
  position: relative;
12426
- /* Ensure input stays with the rest of the element stack */
12427
11858
  z-index: 0;
12428
11859
  z-index: var(--elevation-default);
12429
- }
12430
- .H-GDJPTnTJs- {
12431
- position: relative;
11860
+ height: var(--field--height);
12432
11861
  -ms-flex: 1;
12433
11862
  flex: 1;
12434
11863
  }
12435
- /**
12436
- * Input
12437
- **/
11864
+
12438
11865
  .MxShJMNKSB4- {
12439
11866
  position: relative;
12440
11867
  z-index: var(--field--base-elevation);
@@ -12455,22 +11882,28 @@ html.atlantisLightBoxActive {
12455
11882
  -webkit-appearance: none;
12456
11883
  appearance: none;
12457
11884
  }
11885
+
12458
11886
  .MxShJMNKSB4-:focus {
12459
11887
  outline: none;
12460
11888
  }
12461
- /* DO WE NEED TO SUPPORT AUTOFILL FOR INPUT NUMBER?? */
12462
- /* .input:-webkit-autofill,
12463
- .input:-webkit-autofill:hover,
12464
- .input:-webkit-autofill:focus,
12465
- .input:-webkit-autofill:active {
12466
- -webkit-box-shadow: 0 0 0 30px var(--color-surface) inset !important;
12467
- } */
11889
+
12468
11890
  /**
12469
- * Label
12470
- **/
11891
+ * When the stepper is rendered as an in-flow flex sibling (default mode), it
11892
+ * provides visual separation from the typed value. Tighten the input's
11893
+ * own right padding so narrow consumers (~100px wrappers with a suffix) keep
11894
+ * enough room for multi-digit values to display.
11895
+ */
11896
+
11897
+ .IgE0pfetwVM-:has(> .SE8DXlYN02U-) .MxShJMNKSB4-,
11898
+ .IgE0pfetwVM-:has(> .VmKH2-NlbDI-) .MxShJMNKSB4- {
11899
+ padding-right: 2px;
11900
+ padding-right: var(--space-smallest);
11901
+ }
11902
+
12471
11903
  .f1OiicY3UzU- {
12472
11904
  position: absolute;
12473
11905
  top: var(--field--placeholder-offset);
11906
+ left: 0;
12474
11907
  z-index: var(--field--label-elevation);
12475
11908
  width: 100%;
12476
11909
  padding-left: var(--field--padding-left);
@@ -12485,111 +11918,349 @@ html.atlantisLightBoxActive {
12485
11918
  -webkit-transform: translateY(var(--field--placeholder-transform));
12486
11919
  transform: translateY(var(--field--placeholder-transform));
12487
11920
  }
12488
- /* When not hiding the label, animate the transition to the miniLabel */
11921
+
12489
11922
  .IgE0pfetwVM-:not(.j9oUhNvNwsE-) .f1OiicY3UzU- {
12490
11923
  transition: all 100ms;
12491
11924
  transition: all var(--timing-quick);
12492
11925
  }
11926
+
12493
11927
  /**
12494
- * When input has value or is focused
12495
- * and label has content
12496
- * label becomes "miniLabel": small and above field value
12497
- * unless inputWrapper is small
11928
+ * Value-present mini-label state: when the input has a value (or focus),
11929
+ * shrink and pin the placeholder label to the top-left and grow the input's
11930
+ * vertical padding to make room.
11931
+ *
11932
+ * The variables are hoisted to `.wrapper` (not `.inputWrapper`) so that
11933
+ * affix labels — which are flex siblings of `.inputWrapper` inside `.wrapper`
11934
+ * in the default render — also inherit the new padding values and stay
11935
+ * vertically aligned with the typed value.
12498
11936
  */
12499
- .IgE0pfetwVM-:not(.YTL0AyJdbC8-):not(.j9oUhNvNwsE-):has(
12500
- .MxShJMNKSB4-:not(:-ms-input-placeholder) + .f1OiicY3UzU-:not(:empty)
11937
+
11938
+ ._4y342TRP-y8-:has(
11939
+ .IgE0pfetwVM-:not(.YTL0AyJdbC8-):not(.j9oUhNvNwsE-)
11940
+ .MxShJMNKSB4-:not(:-ms-input-placeholder)
11941
+ + .f1OiicY3UzU-:not(:empty)
12501
11942
  ) {
12502
- --field--placeholder-color: var(--color-text--secondary);
12503
11943
  --field--placeholder-offset: var(--space-smallest);
12504
11944
  --field--placeholder-transform: 0;
12505
11945
  --field--padding-top: calc(var(--space-base) + var(--space-smaller));
12506
11946
  --field--padding-bottom: var(--space-small);
12507
11947
  }
12508
- .inputWrapper:not(.small, .hideLabel):has(
12509
- .input:not(:-ms-input-placeholder) + .label:not(:empty)
11948
+
11949
+ .wrapper:has(
11950
+ .inputWrapper:not(.small, .hideLabel)
11951
+ .input:not(:-ms-input-placeholder)
11952
+ + .label:not(:empty)
12510
11953
  ) {
12511
- --field--placeholder-color: var(--color-text--secondary);
12512
11954
  --field--placeholder-offset: var(--space-smallest);
12513
11955
  --field--placeholder-transform: 0;
12514
11956
  --field--padding-top: calc(var(--space-base) + var(--space-smaller));
12515
11957
  --field--padding-bottom: var(--space-small);
12516
11958
  }
12517
- .IgE0pfetwVM-:not(.YTL0AyJdbC8-):not(.j9oUhNvNwsE-):has(
12518
- .MxShJMNKSB4-:not(:placeholder-shown) + .f1OiicY3UzU-:not(:empty)
12519
- ),
12520
- .IgE0pfetwVM-:not(.YTL0AyJdbC8-):not(.j9oUhNvNwsE-):has(.MxShJMNKSB4-:focus + .f1OiicY3UzU-:not(:empty)) {
12521
- --field--placeholder-color: var(--color-text--secondary);
11959
+
11960
+ ._4y342TRP-y8-:has(
11961
+ .IgE0pfetwVM-:not(.YTL0AyJdbC8-):not(.j9oUhNvNwsE-)
11962
+ .MxShJMNKSB4-:not(:placeholder-shown)
11963
+ + .f1OiicY3UzU-:not(:empty)
11964
+ ) {
12522
11965
  --field--placeholder-offset: var(--space-smallest);
12523
11966
  --field--placeholder-transform: 0;
12524
11967
  --field--padding-top: calc(var(--space-base) + var(--space-smaller));
12525
11968
  --field--padding-bottom: var(--space-small);
12526
11969
  }
11970
+
12527
11971
  .IgE0pfetwVM-.d-YOq6z4ZxM- label {
12528
11972
  --field--placeholder-color: var(--color-text-disabled);
12529
11973
  }
11974
+
12530
11975
  .MxShJMNKSB4-:not(:-ms-input-placeholder) + .f1OiicY3UzU-:not(:empty) {
12531
11976
  font-size: 12px;
12532
11977
  font-size: var(--typography--fontSize-small);
12533
11978
  }
11979
+
12534
11980
  .input:not(:-ms-input-placeholder) + .label:not(:empty) {
12535
11981
  font-size: 12px;
12536
11982
  font-size: var(--typography--fontSize-small);
12537
11983
  }
12538
- .MxShJMNKSB4-:not(:placeholder-shown) + .f1OiicY3UzU-:not(:empty),
12539
- .MxShJMNKSB4-:focus + .f1OiicY3UzU-:not(:empty) {
11984
+
11985
+ .MxShJMNKSB4-:not(:placeholder-shown) + .f1OiicY3UzU-:not(:empty) {
12540
11986
  font-size: 12px;
12541
11987
  font-size: var(--typography--fontSize-small);
12542
11988
  }
11989
+
12543
11990
  .j9oUhNvNwsE- .MxShJMNKSB4-:not(:-ms-input-placeholder) + .f1OiicY3UzU-:not(:empty) {
12544
11991
  visibility: hidden;
12545
11992
  }
11993
+
12546
11994
  .hideLabel .input:not(:-ms-input-placeholder) + .label:not(:empty) {
12547
11995
  visibility: hidden;
12548
11996
  }
12549
- .j9oUhNvNwsE- .MxShJMNKSB4-:not(:placeholder-shown) + .f1OiicY3UzU-:not(:empty),
12550
- .j9oUhNvNwsE- .MxShJMNKSB4-:focus + .f1OiicY3UzU-:not(:empty) {
11997
+
11998
+ .j9oUhNvNwsE- .MxShJMNKSB4-:not(:placeholder-shown) + .f1OiicY3UzU-:not(:empty) {
12551
11999
  visibility: hidden;
12552
12000
  }
12553
- /* Size small inputs don't show a "miniLabel" */
12001
+
12554
12002
  .IgE0pfetwVM-.YTL0AyJdbC8- .MxShJMNKSB4-:not(:-ms-input-placeholder) + .f1OiicY3UzU-:not(:empty) {
12555
12003
  display: none;
12556
12004
  }
12005
+
12557
12006
  .inputWrapper.small .input:not(:-ms-input-placeholder) + .label:not(:empty) {
12558
12007
  display: none;
12559
12008
  }
12560
- .IgE0pfetwVM-.YTL0AyJdbC8- .MxShJMNKSB4-:not(:placeholder-shown) + .f1OiicY3UzU-:not(:empty),
12561
- .IgE0pfetwVM-.YTL0AyJdbC8- .MxShJMNKSB4-:focus + .f1OiicY3UzU-:not(:empty) {
12009
+
12010
+ .IgE0pfetwVM-.YTL0AyJdbC8- .MxShJMNKSB4-:not(:placeholder-shown) + .f1OiicY3UzU-:not(:empty) {
12562
12011
  display: none;
12563
12012
  }
12564
- /* Size Large inputs adjust top padding on minilabel */
12565
- .IgE0pfetwVM-.mUfanIovnVg-:not(.j9oUhNvNwsE-)
12566
- .MxShJMNKSB4-:not(:-ms-input-placeholder)
12567
- + .f1OiicY3UzU-:not(:empty) {
12568
- --field--padding-top: calc(var(--space-large) + var(--space-smaller));
12013
+
12014
+ /**
12015
+ * Affix labels render as flex siblings of `.inputWrapper` inside `.wrapper`.
12016
+ * The .prefix and .suffix modifiers carry variant-specific spacing so the
12017
+ * label sits visually flush against the typed value (mirroring V1 visuals).
12018
+ */
12019
+
12020
+ .oR6I7xtSbL4- {
12021
+ display: -ms-flexbox;
12022
+ display: flex;
12023
+ -ms-flex-align: center;
12024
+ align-items: center;
12025
+ -ms-flex: 0 0 auto;
12026
+ flex: 0 0 auto;
12027
+ padding-top: var(--field--padding-top);
12028
+ padding-bottom: var(--field--padding-bottom);
12029
+ font-size: 14px;
12030
+ font-size: var(--typography--fontSize-base);
12031
+ line-height: var(--field--value-lineHeight);
12032
+ white-space: nowrap;
12569
12033
  }
12570
- .inputWrapper.large:not(.hideLabel)
12571
- .input:not(:-ms-input-placeholder)
12572
- + .label:not(:empty) {
12573
- --field--padding-top: calc(var(--space-large) + var(--space-smaller));
12034
+
12035
+ /**
12036
+ * Prefix label: negative right margin absorbs the input's left padding so the
12037
+ * label sits flush against the typed value.
12038
+ */
12039
+
12040
+ .oR6I7xtSbL4-.s-WnNh4k-kw- {
12041
+ margin: 0 calc((var(--field--padding-left) - 2px) * -1) 0 0;
12042
+ margin: 0 calc((var(--field--padding-left) - var(--space-smallest)) * -1) 0 0;
12043
+ padding-left: var(--field--padding-left);
12574
12044
  }
12575
- .IgE0pfetwVM-.mUfanIovnVg-:not(.j9oUhNvNwsE-)
12576
- .MxShJMNKSB4-:not(:placeholder-shown)
12577
- + .f1OiicY3UzU-:not(:empty),
12578
- .IgE0pfetwVM-.mUfanIovnVg-:not(.j9oUhNvNwsE-) .MxShJMNKSB4-:focus + .f1OiicY3UzU-:not(:empty) {
12579
- --field--padding-top: calc(var(--space-large) + var(--space-smaller));
12045
+
12046
+ /**
12047
+ * Suffix label: no negative left margin (the stepper sits between the input
12048
+ * value and this label, so we don't want to pull the label across it).
12049
+ */
12050
+
12051
+ .oR6I7xtSbL4-.Ep7K8jug-Xc- {
12052
+ padding-right: var(--field--padding-left);
12580
12053
  }
12581
- .IgE0pfetwVM-.mUfanIovnVg- .MxShJMNKSB4-:not(:-ms-input-placeholder) + .f1OiicY3UzU-:not(:empty) .f1OiicY3UzU- {
12582
- padding-top: 8px;
12583
- padding-top: var(--space-small);
12054
+
12055
+ /**
12056
+ * Outer affix icon: rendered as a flex sibling of .inputWrapper inside the
12057
+ * field group. The prefix variant uses a negative right margin to abut the
12058
+ * input's left padding (V1 pattern); the suffix variant does NOT, because the
12059
+ * stepper now sits between the input wrapper and the suffix icon, and a
12060
+ * negative margin would pull the icon over the stepper.
12061
+ */
12062
+
12063
+ .E3w3BEJoBFE- {
12064
+ display: -ms-flexbox;
12065
+ display: flex;
12066
+ -ms-flex-align: center;
12067
+ align-items: center;
12068
+ -ms-flex-pack: center;
12069
+ justify-content: center;
12070
+ margin: 0 calc(var(--field--padding-left) * -1) 0 0;
12071
+ padding: 0 var(--field--padding-right) 0 var(--field--padding-left);
12584
12072
  }
12585
- .inputWrapper.large .input:not(:-ms-input-placeholder) + .label:not(:empty) .label {
12586
- padding-top: 8px;
12587
- padding-top: var(--space-small);
12073
+
12074
+ .E3w3BEJoBFE-.Ep7K8jug-Xc- {
12075
+ margin: 0;
12076
+ padding: 0 var(--field--padding-right) 0 8px;
12077
+ padding: 0 var(--field--padding-right) 0 var(--space-small);
12588
12078
  }
12589
- .IgE0pfetwVM-.mUfanIovnVg- .MxShJMNKSB4-:not(:placeholder-shown) + .f1OiicY3UzU-:not(:empty) .f1OiicY3UzU-,
12590
- .IgE0pfetwVM-.mUfanIovnVg- .MxShJMNKSB4-:focus + .f1OiicY3UzU-:not(:empty) .f1OiicY3UzU- {
12591
- padding-top: 8px;
12592
- padding-top: var(--space-small);
12079
+
12080
+ /**
12081
+ * Compound `<.Affix>`: a single flex sibling of .inputWrapper that bundles
12082
+ * icon and/or label inline. Uses the field's vertical padding so it tracks the
12083
+ * floating mini-label and lines up with the typed value (and the loading
12084
+ * indicator), matching the default split composition.
12085
+ */
12086
+
12087
+ .znvaejix3iE- {
12088
+ display: -ms-flexbox;
12089
+ display: flex;
12090
+ -ms-flex-align: center;
12091
+ align-items: center;
12092
+ gap: 4px;
12093
+ gap: var(--space-smaller);
12094
+ padding: var(--field--padding-top) 16px
12095
+ var(--field--padding-bottom);
12096
+ padding: var(--field--padding-top) var(--space-base)
12097
+ var(--field--padding-bottom);
12098
+ color: hsl(197, 21%, 36%);
12099
+ color: var(--color-text--secondary);
12100
+ font-size: 14px;
12101
+ font-size: var(--typography--fontSize-base);
12102
+ white-space: nowrap;
12103
+ }
12104
+
12105
+ .m1ZP5T4QOAQ- {
12106
+ line-height: var(--field--value-lineHeight);
12107
+ }
12108
+
12109
+ .SE8DXlYN02U- {
12110
+ display: -ms-flexbox;
12111
+ display: flex;
12112
+ z-index: calc(var(--field--base-elevation) + 1);
12113
+ width: var(--stepper--width);
12114
+ opacity: 0;
12115
+ transition: opacity 100ms;
12116
+ transition: opacity var(--timing-quick);
12117
+ -ms-flex-direction: column;
12118
+ flex-direction: column;
12119
+ -ms-flex: 0 0 auto;
12120
+ flex: 0 0 auto;
12121
+ }
12122
+
12123
+ /*
12124
+ * Loading indicator: occupies the stepper's slot, always visible (no hover
12125
+ * reveal), vertically centered in the field to match InputText's spinner.
12126
+ * The default right padding is just a small gap from a following suffix.
12127
+ */
12128
+
12129
+ .VmKH2-NlbDI- {
12130
+ display: -ms-flexbox;
12131
+ display: flex;
12132
+ z-index: calc(var(--field--base-elevation) + 1);
12133
+ -ms-flex-align: center;
12134
+ align-items: center;
12135
+ -ms-flex-pack: center;
12136
+ justify-content: center;
12137
+ -ms-flex: 0 0 auto;
12138
+ flex: 0 0 auto;
12139
+ padding-right: 4px;
12140
+ padding-right: var(--space-smaller);
12141
+ }
12142
+
12143
+ /*
12144
+ * When the indicator sits flush to the field's right edge (no suffix follows),
12145
+ * inset it by the field's right padding so it matches InputText's spinner
12146
+ * spacing instead of hugging the border.
12147
+ */
12148
+
12149
+ ._4y342TRP-y8- > .IgE0pfetwVM-:last-child > .VmKH2-NlbDI- {
12150
+ padding-right: var(--field--padding-right);
12151
+ }
12152
+
12153
+ /* Default mode: stepper lives inside .inputWrapper. Reveal on local hover/focus. */
12154
+
12155
+ .IgE0pfetwVM-:hover .SE8DXlYN02U-,
12156
+ .IgE0pfetwVM-:focus-within .SE8DXlYN02U- {
12157
+ opacity: 1;
12158
+ }
12159
+
12160
+ /**
12161
+ * Compound mode: the consumer composes <.Stepper> as a direct child of
12162
+ * NumberField.Group (.wrapper). Reveal on the wider group hover/focus there.
12163
+ * The `>` direct-child selector ensures this only matches the compound case;
12164
+ * default-mode steppers are nested deeper inside .inputWrapper.
12165
+ */
12166
+
12167
+ ._4y342TRP-y8-:hover > .SE8DXlYN02U-,
12168
+ ._4y342TRP-y8-:focus-within > .SE8DXlYN02U- {
12169
+ opacity: 1;
12170
+ }
12171
+
12172
+ ._22AXoGKVAjc- {
12173
+ display: -ms-flexbox;
12174
+ display: flex;
12175
+ padding: 0;
12176
+ border: none;
12177
+ color: hsl(197, 21%, 36%);
12178
+ color: var(--color-text--secondary);
12179
+ line-height: 0;
12180
+ background: transparent;
12181
+ cursor: pointer;
12182
+ -ms-flex-align: center;
12183
+ align-items: center;
12184
+ -ms-flex-pack: center;
12185
+ justify-content: center;
12186
+ -ms-flex: 1;
12187
+ flex: 1;
12188
+ }
12189
+
12190
+ ._22AXoGKVAjc-:hover {
12191
+ color: hsl(197, 90%, 12%);
12192
+ color: var(--color-heading);
12193
+ background: hsl(43, 18%, 92%);
12194
+ background: var(--color-surface--hover);
12195
+ }
12196
+
12197
+ ._22AXoGKVAjc-:focus-visible {
12198
+ outline: 0px 0px 0px 2px rgba(255, 255, 255, 1), 0px 0px 0px 4px hsl(198, 12%, 57%);
12199
+ outline: var(--shadow-focus);
12200
+ outline-offset: -2px;
12201
+ }
12202
+
12203
+ ._22AXoGKVAjc-:disabled {
12204
+ cursor: not-allowed;
12205
+ opacity: 0.4;
12206
+ }
12207
+
12208
+ /*
12209
+ * Match the wrapper's INNER border arc when the stepper sits at the wrapper's
12210
+ * right edge so the hover background follows the curve flush. Only fires when
12211
+ * nothing follows the stepper (no suffix label/icon in default mode, no later
12212
+ * child in compound mode). Button radius = outer radius - border width.
12213
+ */
12214
+
12215
+ :where(
12216
+ ._4y342TRP-y8- > .SE8DXlYN02U-:last-child,
12217
+ ._4y342TRP-y8- > .IgE0pfetwVM-:last-child > .SE8DXlYN02U-
12218
+ )
12219
+ > ._22AXoGKVAjc-:first-child {
12220
+ border-top-right-radius: calc(
12221
+ 8px -
12222
+ 1px
12223
+ );
12224
+ border-top-right-radius: calc(
12225
+ var(--public-field--top-right-radius, var(--radius-base)) -
12226
+ var(--border-base)
12227
+ );
12228
+ }
12229
+
12230
+ :where(
12231
+ ._4y342TRP-y8- > .SE8DXlYN02U-:last-child,
12232
+ ._4y342TRP-y8- > .IgE0pfetwVM-:last-child > .SE8DXlYN02U-
12233
+ )
12234
+ > ._22AXoGKVAjc-:last-child {
12235
+ border-bottom-right-radius: calc(
12236
+ 8px -
12237
+ 1px
12238
+ );
12239
+ border-bottom-right-radius: calc(
12240
+ var(--public-field--bottom-right-radius, var(--radius-base)) -
12241
+ var(--border-base)
12242
+ );
12243
+ }
12244
+
12245
+ .kkywg49kgrg- {
12246
+ display: -ms-flexbox;
12247
+ display: flex;
12248
+ -ms-flex-direction: column;
12249
+ flex-direction: column;
12250
+ }
12251
+
12252
+ /**
12253
+ * `Field.Description` renders a `<p>`, which inherits the user-agent
12254
+ * `margin-block` defaults. Reset margins so spacing comes only from our token.
12255
+ */
12256
+
12257
+ .buIzMqBEpSQ- {
12258
+ margin: 4px 0 0 0;
12259
+ margin: var(--space-smaller) 0 0 0;
12260
+ color: hsl(197, 21%, 36%);
12261
+ color: var(--color-text--secondary);
12262
+ font-size: 12px;
12263
+ font-size: var(--typography--fontSize-small);
12593
12264
  }
12594
12265
 
12595
12266
  ._78-Lxj78xPg- {