@jobber/components 9.4.0 → 9.5.1

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 +8 -5
  83. package/dist/Menu-es.js +8 -5
  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
@@ -1,7 +1,77 @@
1
+ import type { Ref } from "react";
1
2
  import React from "react";
2
- import type { InputNumberProps } from "./InputNumber.types";
3
- export interface InputNumberRef {
4
- blur(): void;
5
- focus(): void;
3
+ import type { InputNumberAffixCompoundProps, InputNumberDescriptionProps, InputNumberErrorProps, InputNumberFooterProps, InputNumberGroupProps, InputNumberInputProps, InputNumberLabelProps, InputNumberLoadingProps, InputNumberProps, InputNumberRef, InputNumberStepButtonProps, InputNumberStepperProps, InputNumberWrapperProps } from "./types";
4
+ declare function InputNumberWrapper({ ref, ...props }: InputNumberWrapperProps & {
5
+ readonly ref?: Ref<InputNumberRef>;
6
+ }): React.JSX.Element;
7
+ declare namespace InputNumberWrapper {
8
+ var displayName: string;
6
9
  }
7
- export declare const InputNumber: React.ForwardRefExoticComponent<InputNumberProps & React.RefAttributes<InputNumberRef>>;
10
+ declare function InputNumberGroup({ children, className, style, }: InputNumberGroupProps): React.JSX.Element;
11
+ declare namespace InputNumberGroup {
12
+ var displayName: string;
13
+ }
14
+ declare function InputNumberFooter({ children, className, style, }: InputNumberFooterProps): React.JSX.Element;
15
+ declare namespace InputNumberFooter {
16
+ var displayName: string;
17
+ }
18
+ declare function InputNumberInput({ children, className, style, }: InputNumberInputProps): React.JSX.Element;
19
+ declare namespace InputNumberInput {
20
+ var displayName: string;
21
+ }
22
+ declare function InputNumberLabel({ children, className, style, }: InputNumberLabelProps): React.JSX.Element | null;
23
+ declare namespace InputNumberLabel {
24
+ var displayName: string;
25
+ }
26
+ declare function InputNumberDescription({ children, className, style, }: InputNumberDescriptionProps): React.JSX.Element | null;
27
+ declare namespace InputNumberDescription {
28
+ var displayName: string;
29
+ }
30
+ declare function InputNumberError({ children, className, style, }: InputNumberErrorProps): React.JSX.Element | null;
31
+ declare namespace InputNumberError {
32
+ var displayName: string;
33
+ }
34
+ declare function InputNumberLoading({ children, className, style, }: InputNumberLoadingProps): React.JSX.Element;
35
+ declare namespace InputNumberLoading {
36
+ var displayName: string;
37
+ }
38
+ declare function InputNumberStepper({ children, incrementLabel, decrementLabel, className, style, }: InputNumberStepperProps): React.JSX.Element | null;
39
+ declare namespace InputNumberStepper {
40
+ var displayName: string;
41
+ }
42
+ declare function InputNumberIncrement({ children, ariaLabel, className, style, }: InputNumberStepButtonProps): React.JSX.Element;
43
+ declare namespace InputNumberIncrement {
44
+ var displayName: string;
45
+ }
46
+ declare function InputNumberDecrement({ children, ariaLabel, className, style, }: InputNumberStepButtonProps): React.JSX.Element;
47
+ declare namespace InputNumberDecrement {
48
+ var displayName: string;
49
+ }
50
+ declare function InputNumberAffixCompound({ variation, label, icon, onClick, ariaLabel, children, className, style, }: InputNumberAffixCompoundProps): React.JSX.Element | null;
51
+ declare namespace InputNumberAffixCompound {
52
+ var displayName: string;
53
+ }
54
+ /**
55
+ * Sugar layer: composes the parts from props. This is the same composition a
56
+ * consumer would write by hand with `<InputNumber.Wrapper>` and the
57
+ * parts — to customize a single piece, copy this tree and swap that part.
58
+ */
59
+ declare function InputNumber({ ref, ...props }: InputNumberProps & {
60
+ readonly ref?: Ref<InputNumberRef>;
61
+ }): React.JSX.Element;
62
+ declare namespace InputNumber {
63
+ var displayName: string;
64
+ var Wrapper: typeof InputNumberWrapper;
65
+ var Group: typeof InputNumberGroup;
66
+ var Footer: typeof InputNumberFooter;
67
+ var Input: typeof InputNumberInput;
68
+ var Label: typeof InputNumberLabel;
69
+ var Description: typeof InputNumberDescription;
70
+ var Error: typeof InputNumberError;
71
+ var Loading: typeof InputNumberLoading;
72
+ var Stepper: typeof InputNumberStepper;
73
+ var Increment: typeof InputNumberIncrement;
74
+ var Decrement: typeof InputNumberDecrement;
75
+ var Affix: typeof InputNumberAffixCompound;
76
+ }
77
+ export { InputNumber };
@@ -3,13 +3,37 @@
3
3
  var InputNumber = require('../InputNumber-cjs.js');
4
4
  require('../tslib.es6-cjs.js');
5
5
  require('react');
6
- require('../clsx-cjs.js');
7
6
  require('classnames');
7
+ require('../ActivityIndicator-cjs.js');
8
+ require('../common.messages-cjs.js');
9
+ require('../useAtlantisI18n-cjs.js');
10
+ require('../AtlantisContext-cjs.js');
11
+ require('../Button-cjs.js');
12
+ require('react-router-dom');
8
13
  require('../Icon-cjs.js');
9
14
  require('@jobber/design');
10
- require('../Text-cjs.js');
11
15
  require('../Typography-cjs.js');
12
- require('../filterDataAttributes-cjs.js');
16
+ require('../OverlaySeparator-cjs.js');
17
+ require('../Separator-cjs.js');
18
+ require('../useRenderElement-cjs.js');
19
+ require('../BottomSheet-cjs.js');
20
+ require('../buttonRenderAdapter-cjs.js');
21
+ require('../ScrollAreaViewport-cjs.js');
22
+ require('../useScrollLock-cjs.js');
23
+ require('../floating-ui.utils-cjs.js');
24
+ require('react/jsx-runtime');
25
+ require('react-dom');
26
+ require('../scrollEdges-cjs.js');
27
+ require('../HelperText-cjs.js');
28
+ require('../Text-cjs.js');
29
+ require('../SelectPrimitive-cjs.js');
30
+ require('../SelectGroupLabel-cjs.js');
31
+ require('../useCompositeListItem-cjs.js');
32
+ require('../floating-ui.react-dom-cjs.js');
33
+ require('../FieldDescription-cjs.js');
34
+ require('../useLabel-cjs.js');
35
+ require('../NumberFieldInput-cjs.js');
36
+ require('../stringifyLocale-cjs.js');
13
37
 
14
38
 
15
39
 
@@ -1,2 +1,2 @@
1
- export { InputNumber, type InputNumberRef } from "./InputNumber";
2
- export type { InputNumberProps } from "./InputNumber.types";
1
+ export { InputNumber } from "./InputNumber";
2
+ export type { InputNumberAffix, InputNumberAffixCompoundProps, InputNumberAutoComplete, InputNumberDescriptionProps, InputNumberErrorProps, InputNumberFooterProps, InputNumberGroupProps, InputNumberInputProps, InputNumberLabelProps, InputNumberLoadingProps, InputNumberProps, InputNumberRef, InputNumberSize, InputNumberStepButtonProps, InputNumberStepperProps, InputNumberSuffix, InputNumberSuffixProp, InputNumberWrapperProps, } from "./types";
@@ -1,10 +1,34 @@
1
1
  export { I as InputNumber } from '../InputNumber-es.js';
2
2
  import '../tslib.es6-es.js';
3
3
  import 'react';
4
- import '../clsx-es.js';
5
4
  import 'classnames';
5
+ import '../ActivityIndicator-es.js';
6
+ import '../common.messages-es.js';
7
+ import '../useAtlantisI18n-es.js';
8
+ import '../AtlantisContext-es.js';
9
+ import '../Button-es.js';
10
+ import 'react-router-dom';
6
11
  import '../Icon-es.js';
7
12
  import '@jobber/design';
8
- import '../Text-es.js';
9
13
  import '../Typography-es.js';
10
- import '../filterDataAttributes-es.js';
14
+ import '../OverlaySeparator-es.js';
15
+ import '../Separator-es.js';
16
+ import '../useRenderElement-es.js';
17
+ import '../BottomSheet-es.js';
18
+ import '../buttonRenderAdapter-es.js';
19
+ import '../ScrollAreaViewport-es.js';
20
+ import '../useScrollLock-es.js';
21
+ import '../floating-ui.utils-es.js';
22
+ import 'react/jsx-runtime';
23
+ import 'react-dom';
24
+ import '../scrollEdges-es.js';
25
+ import '../HelperText-es.js';
26
+ import '../Text-es.js';
27
+ import '../SelectPrimitive-es.js';
28
+ import '../SelectGroupLabel-es.js';
29
+ import '../useCompositeListItem-es.js';
30
+ import '../floating-ui.react-dom-es.js';
31
+ import '../FieldDescription-es.js';
32
+ import '../useLabel-es.js';
33
+ import '../NumberFieldInput-es.js';
34
+ import '../stringifyLocale-es.js';
@@ -1,10 +1,10 @@
1
1
  import type { CSSProperties, FocusEvent, KeyboardEvent, ReactNode } from "react";
2
- import type { IconNames } from "../../Icon";
2
+ import type { IconNames } from "../Icon";
3
3
  /**
4
- * `className`/`style` shared by every `InputNumberExperimental` building block.
4
+ * `className`/`style` shared by every `InputNumber` building block.
5
5
  * Both compose with the block's internal styling rather than replacing it.
6
6
  */
7
- export interface InputNumberExperimentalStyleProps {
7
+ export interface InputNumberStyleProps {
8
8
  readonly className?: string;
9
9
  readonly style?: CSSProperties;
10
10
  }
@@ -13,9 +13,9 @@ export interface InputNumberExperimentalStyleProps {
13
13
  * `label` or `icon` should be provided. Icons render outside the input area (in
14
14
  * the field's outer padding zone); labels render inside the input area next to
15
15
  * the typed value. `onClick`/`ariaLabel` are not allowed here; use
16
- * `InputNumberExperimentalSuffix` for a clickable action.
16
+ * `InputNumberSuffix` for a clickable action.
17
17
  */
18
- export interface InputNumberExperimentalAffix {
18
+ export interface InputNumberAffix {
19
19
  readonly label?: string;
20
20
  readonly icon?: IconNames;
21
21
  readonly ariaLabel?: never;
@@ -25,23 +25,25 @@ export interface InputNumberExperimentalAffix {
25
25
  * Suffix variant that turns the suffix icon into a clickable action button.
26
26
  * The `?: never` fields make this a discriminated union with the plain affix.
27
27
  */
28
- export interface InputNumberExperimentalSuffix {
28
+ export interface InputNumberSuffix {
29
29
  readonly label?: string;
30
30
  readonly icon: IconNames;
31
31
  readonly ariaLabel: string;
32
32
  onClick(): void;
33
33
  }
34
- export type InputNumberExperimentalSuffixProp = InputNumberExperimentalAffix | InputNumberExperimentalSuffix;
35
- export type InputNumberExperimentalAutoComplete = boolean | "on" | "off" | "one-time-code" | "address-line1" | "address-line2";
36
- export type InputNumberExperimentalSize = "small" | "default" | "large";
34
+ export type InputNumberSuffixProp = InputNumberAffix | InputNumberSuffix;
35
+ export type InputNumberAutoComplete = boolean | "on" | "off" | "one-time-code" | "address-line1" | "address-line2";
36
+ export type InputNumberSize = "small" | "default" | "large";
37
37
  /**
38
- * Field configuration shared by `<InputNumberExperimental.Wrapper>` (the
39
- * composition entry point) and the top-level `<InputNumberExperimental>` sugar.
38
+ * Field configuration shared by `<InputNumber.Wrapper>` (the
39
+ * composition entry point) and the top-level `<InputNumber>` sugar.
40
40
  * The Wrapper owns the field state and exposes it to the parts via context.
41
41
  */
42
- export interface InputNumberExperimentalWrapperProps extends InputNumberExperimentalStyleProps {
42
+ export interface InputNumberWrapperProps extends InputNumberStyleProps {
43
+ readonly "aria-label"?: string;
44
+ readonly "aria-labelledby"?: string;
43
45
  readonly align?: "center" | "right";
44
- readonly autoComplete?: InputNumberExperimentalAutoComplete;
46
+ readonly autoComplete?: InputNumberAutoComplete;
45
47
  /** Composed parts (`.Group`, `.Footer`, and the parts within them). */
46
48
  readonly children?: ReactNode;
47
49
  readonly disabled?: boolean;
@@ -65,6 +67,11 @@ export interface InputNumberExperimentalWrapperProps extends InputNumberExperime
65
67
  readonly max?: number;
66
68
  readonly min?: number;
67
69
  readonly name?: string;
70
+ /**
71
+ * Also fires once per Enter press: committing on Enter is implemented as a
72
+ * `blur()`/`focus()` round-trip, so `onBlur` and `onFocus` both fire even
73
+ * though focus never visibly leaves the field.
74
+ */
68
75
  readonly onBlur?: (event?: FocusEvent<HTMLInputElement>) => void;
69
76
  /**
70
77
  * Fires when the user commits a value (blur, Enter, stepper, arrow step).
@@ -79,18 +86,23 @@ export interface InputNumberExperimentalWrapperProps extends InputNumberExperime
79
86
  readonly onValueChange?: (newValue: number | null) => void;
80
87
  /** Fires when Enter is pressed without modifier keys (Shift/Ctrl/Meta). */
81
88
  readonly onEnter?: (event: KeyboardEvent<HTMLInputElement>) => void;
89
+ /**
90
+ * Also fires once per Enter press; see `onBlur` for the commit mechanics.
91
+ */
82
92
  readonly onFocus?: (event?: FocusEvent<HTMLInputElement>) => void;
83
93
  readonly onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;
84
94
  readonly onKeyUp?: (event: KeyboardEvent<HTMLInputElement>) => void;
85
95
  readonly readOnly?: boolean;
86
96
  /** Default `true`. When `false`, the floating label is hidden. */
87
97
  readonly showMiniLabel?: boolean;
88
- readonly size?: InputNumberExperimentalSize;
98
+ readonly size?: InputNumberSize;
89
99
  /**
90
100
  * Amount the stepper buttons and ArrowUp/ArrowDown keys change the value by.
91
- * Default `1`.
101
+ * Default `"any"`, which steps by `1` while accepting any decimal value. Pass a
102
+ * number to both set the step increment and constrain valid values to its
103
+ * multiples (a non-multiple then fails native validation).
92
104
  */
93
- readonly step?: number;
105
+ readonly step?: number | "any";
94
106
  /**
95
107
  * Controlled value. `number` sets the value; `null` (or `undefined`) is an
96
108
  * empty field.
@@ -98,48 +110,49 @@ export interface InputNumberExperimentalWrapperProps extends InputNumberExperime
98
110
  readonly value?: number | null;
99
111
  }
100
112
  /**
101
- * Props for the top-level `<InputNumberExperimental>` sugar: the field
113
+ * Props for the top-level `<InputNumber>` sugar: the field
102
114
  * configuration plus the convenience content props (`label`, `description`,
103
115
  * `error`, `prefix`, `suffix`). It composes the parts internally — to compose
104
- * the field yourself, use `<InputNumberExperimental.Wrapper>` and the parts.
116
+ * the field yourself, use `<InputNumber.Wrapper>` and the parts.
105
117
  */
106
- export interface InputNumberExperimentalProps extends Omit<InputNumberExperimentalWrapperProps, "children"> {
118
+ export interface InputNumberProps extends Omit<InputNumberWrapperProps, "children"> {
107
119
  /** Floating field label. */
108
120
  readonly label?: string;
109
121
  readonly description?: ReactNode;
110
122
  /** Renders a styled error message below the field. */
111
123
  readonly error?: string;
112
- readonly prefix?: InputNumberExperimentalAffix;
113
- readonly suffix?: InputNumberExperimentalSuffixProp;
124
+ readonly prefix?: InputNumberAffix;
125
+ readonly suffix?: InputNumberSuffixProp;
114
126
  }
115
- export interface InputNumberExperimentalRef {
127
+ export interface InputNumberRef {
116
128
  blur(): void;
117
129
  focus(): void;
118
130
  }
119
- export interface InputNumberExperimentalGroupProps extends InputNumberExperimentalStyleProps {
131
+ export interface InputNumberGroupProps extends InputNumberStyleProps {
120
132
  readonly children?: ReactNode;
121
133
  }
122
- export interface InputNumberExperimentalFooterProps extends InputNumberExperimentalStyleProps {
134
+ export interface InputNumberFooterProps extends InputNumberStyleProps {
123
135
  readonly children?: ReactNode;
124
136
  }
125
- export interface InputNumberExperimentalInputProps extends InputNumberExperimentalStyleProps {
137
+ export interface InputNumberInputProps extends InputNumberStyleProps {
126
138
  /** Content rendered inside the input area (e.g. `.Label`, `.Stepper`). */
127
139
  readonly children?: ReactNode;
128
140
  }
129
- export interface InputNumberExperimentalLabelProps extends InputNumberExperimentalStyleProps {
141
+ export interface InputNumberLabelProps extends InputNumberStyleProps {
130
142
  readonly children?: ReactNode;
131
143
  }
132
- export interface InputNumberExperimentalDescriptionProps extends InputNumberExperimentalStyleProps {
144
+ export interface InputNumberDescriptionProps extends InputNumberStyleProps {
133
145
  readonly children?: ReactNode;
134
146
  }
135
- export interface InputNumberExperimentalErrorProps extends InputNumberExperimentalStyleProps {
136
- readonly children?: ReactNode;
147
+ export interface InputNumberErrorProps extends InputNumberStyleProps {
148
+ /** Error message. Rendered with an alert icon via the `HelperText` primitive. */
149
+ readonly children?: string;
137
150
  }
138
- export interface InputNumberExperimentalLoadingProps extends InputNumberExperimentalStyleProps {
151
+ export interface InputNumberLoadingProps extends InputNumberStyleProps {
139
152
  /** Indicator content. Falls back to the default `ActivityIndicator`. */
140
153
  readonly children?: ReactNode;
141
154
  }
142
- export interface InputNumberExperimentalStepperProps extends InputNumberExperimentalStyleProps {
155
+ export interface InputNumberStepperProps extends InputNumberStyleProps {
143
156
  /** Stepper buttons. Falls back to the default increment/decrement pair. */
144
157
  readonly children?: ReactNode;
145
158
  /** Accessible label for the increment button. Defaults to `Increase value`. */
@@ -147,13 +160,13 @@ export interface InputNumberExperimentalStepperProps extends InputNumberExperime
147
160
  /** Accessible label for the decrement button. Defaults to `Decrease value`. */
148
161
  readonly decrementLabel?: string;
149
162
  }
150
- export interface InputNumberExperimentalStepButtonProps extends InputNumberExperimentalStyleProps {
163
+ export interface InputNumberStepButtonProps extends InputNumberStyleProps {
151
164
  /** Icon content. Falls back to the default Atlantis stepper icon. */
152
165
  readonly children?: ReactNode;
153
166
  /** Accessible label for the button. */
154
167
  readonly ariaLabel?: string;
155
168
  }
156
- export interface InputNumberExperimentalAffixCompound extends InputNumberExperimentalStyleProps {
169
+ export interface InputNumberAffixCompound extends InputNumberStyleProps {
157
170
  readonly variation: "prefix" | "suffix";
158
171
  readonly label?: string;
159
172
  readonly icon?: IconNames;
@@ -162,7 +175,7 @@ export interface InputNumberExperimentalAffixCompound extends InputNumberExperim
162
175
  /** Arbitrary affix content, beyond the built-in `label`/`icon`. */
163
176
  readonly children?: ReactNode;
164
177
  }
165
- export interface InputNumberExperimentalAffixCompoundClickable extends InputNumberExperimentalStyleProps {
178
+ export interface InputNumberAffixCompoundClickable extends InputNumberStyleProps {
166
179
  readonly variation: "prefix" | "suffix";
167
180
  readonly label?: string;
168
181
  readonly icon: IconNames;
@@ -176,4 +189,4 @@ export interface InputNumberExperimentalAffixCompoundClickable extends InputNumb
176
189
  * - omit `onClick` -> behaves like a plain affix
177
190
  * - set `onClick` -> requires `icon` and `ariaLabel` (clickable icon-button)
178
191
  */
179
- export type InputNumberExperimentalAffixCompoundProps = InputNumberExperimentalAffixCompound | InputNumberExperimentalAffixCompoundClickable;
192
+ export type InputNumberAffixCompoundProps = InputNumberAffixCompound | InputNumberAffixCompoundClickable;