@yamada-ui/number-input 1.2.4-dev-20241214144625 → 1.2.4

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.
@@ -46,7 +46,7 @@ var getStep = ({
46
46
  return ratio;
47
47
  };
48
48
  var useNumberInput = (props = {}) => {
49
- let {
49
+ const {
50
50
  id,
51
51
  name,
52
52
  allowMouseWheel,
@@ -58,20 +58,19 @@ var useNumberInput = (props = {}) => {
58
58
  inputMode = "decimal",
59
59
  isValidCharacter: isValidCharacterProp,
60
60
  keepWithinRange = true,
61
- max = Number.MAX_SAFE_INTEGER,
62
- min = Number.MIN_SAFE_INTEGER,
61
+ max: maxValue = Number.MAX_SAFE_INTEGER,
62
+ min: minValue = Number.MIN_SAFE_INTEGER,
63
63
  parse: parseProp,
64
64
  pattern = "[0-9]*(.[0-9]+)?",
65
65
  precision,
66
66
  step: stepProp,
67
- validCharacter,
68
67
  value: valueProp,
69
68
  onChange: onChangeProp,
70
69
  onInvalid: onInvalidProp,
71
70
  ...rest
72
71
  } = useFormControlProps(props);
73
72
  const {
74
- "aria-invalid": isInvalid,
73
+ "aria-invalid": invalid,
75
74
  disabled,
76
75
  readOnly,
77
76
  required,
@@ -79,12 +78,8 @@ var useNumberInput = (props = {}) => {
79
78
  onFocus: onFocusProp,
80
79
  ...formControlProps
81
80
  } = pickObject(rest, formControlProperties);
82
- validCharacter != null ? validCharacter : validCharacter = isValidCharacterProp;
83
- const isRequired = required;
84
- const isReadOnly = readOnly;
85
- const isDisabled = disabled;
86
- const [isFocused, setFocused] = useState(false);
87
- const isInteractive = !(readOnly || disabled);
81
+ const [focused, setFocused] = useState(false);
82
+ const interactive = !(readOnly || disabled);
88
83
  const inputRef = useRef(null);
89
84
  const inputSelectionRef = useRef(null);
90
85
  const incrementRef = useRef(null);
@@ -107,13 +102,13 @@ var useNumberInput = (props = {}) => {
107
102
  const onInvalid = useCallbackRef(onInvalidProp);
108
103
  const getAriaValueText = useCallbackRef(getAriaValueTextProp);
109
104
  const isValidCharacter = useCallbackRef(
110
- validCharacter != null ? validCharacter : isDefaultValidCharacter
105
+ isValidCharacterProp != null ? isValidCharacterProp : isDefaultValidCharacter
111
106
  );
112
107
  const {
113
108
  cast,
114
- isMax,
115
- isMin,
116
- isOut,
109
+ max,
110
+ min,
111
+ out,
117
112
  setValue,
118
113
  update,
119
114
  value,
@@ -122,8 +117,8 @@ var useNumberInput = (props = {}) => {
122
117
  } = useCounter({
123
118
  defaultValue,
124
119
  keepWithinRange,
125
- max,
126
- min,
120
+ max: maxValue,
121
+ min: minValue,
127
122
  precision,
128
123
  step: stepProp,
129
124
  value: valueProp,
@@ -155,28 +150,28 @@ var useNumberInput = (props = {}) => {
155
150
  );
156
151
  const increment = useCallback(
157
152
  (step = stepProp != null ? stepProp : 1) => {
158
- if (isInteractive) counter.increment(step);
153
+ if (interactive) counter.increment(step);
159
154
  },
160
- [isInteractive, counter, stepProp]
155
+ [interactive, counter, stepProp]
161
156
  );
162
157
  const decrement = useCallback(
163
158
  (step = stepProp != null ? stepProp : 1) => {
164
- if (isInteractive) counter.decrement(step);
159
+ if (interactive) counter.decrement(step);
165
160
  },
166
- [isInteractive, counter, stepProp]
161
+ [interactive, counter, stepProp]
167
162
  );
168
163
  const validateAndClamp = useCallback(() => {
169
- let next = value;
164
+ let nextValue = value;
170
165
  if (value === "") return;
171
166
  const valueStartsWithE = /^[eE]/.test(value.toString());
172
167
  if (valueStartsWithE) {
173
168
  setValue("");
174
169
  } else {
175
- if (valueAsNumber < min) next = min;
176
- if (valueAsNumber > max) next = max;
177
- cast(next);
170
+ if (valueAsNumber < minValue) nextValue = minValue;
171
+ if (valueAsNumber > maxValue) nextValue = maxValue;
172
+ cast(nextValue);
178
173
  }
179
- }, [cast, max, min, setValue, value, valueAsNumber]);
174
+ }, [cast, maxValue, minValue, setValue, value, valueAsNumber]);
180
175
  const onChange = useCallback(
181
176
  (ev) => {
182
177
  if (ev.nativeEvent.isComposing) return;
@@ -198,15 +193,23 @@ var useNumberInput = (props = {}) => {
198
193
  const keyMap = {
199
194
  ArrowDown: () => decrement(step),
200
195
  ArrowUp: () => increment(step),
201
- End: () => update(max),
202
- Home: () => update(min)
196
+ End: () => update(maxValue),
197
+ Home: () => update(minValue)
203
198
  };
204
199
  const action = keyMap[ev.key];
205
200
  if (!action) return;
206
201
  ev.preventDefault();
207
202
  action(ev);
208
203
  },
209
- [decrement, increment, isValidCharacter, max, min, stepProp, update]
204
+ [
205
+ decrement,
206
+ increment,
207
+ isValidCharacter,
208
+ maxValue,
209
+ minValue,
210
+ stepProp,
211
+ update
212
+ ]
210
213
  );
211
214
  const { down, isSpinning, stop, up } = useSpinner(increment, decrement);
212
215
  useAttributeObserver(incrementRef, ["disabled"], isSpinning, stop);
@@ -235,9 +238,9 @@ var useNumberInput = (props = {}) => {
235
238
  [focusInput, down]
236
239
  );
237
240
  useUpdateEffect(() => {
238
- if (valueAsNumber > max) {
241
+ if (valueAsNumber > maxValue) {
239
242
  onInvalid("rangeOverflow", format(value), valueAsNumber);
240
- } else if (valueAsNumber < min) {
243
+ } else if (valueAsNumber < minValue) {
241
244
  onInvalid("rangeOverflow", format(value), valueAsNumber);
242
245
  }
243
246
  }, [valueAsNumber, value, format, onInvalid]);
@@ -254,8 +257,8 @@ var useNumberInput = (props = {}) => {
254
257
  (ev) => {
255
258
  var _a, _b;
256
259
  const ownerDocument = (_b = (_a = inputRef.current) == null ? void 0 : _a.ownerDocument) != null ? _b : document;
257
- const isFocused2 = ownerDocument.activeElement === inputRef.current;
258
- if (!allowMouseWheel || !isFocused2) return;
260
+ const focused2 = ownerDocument.activeElement === inputRef.current;
261
+ if (!allowMouseWheel || !focused2) return;
259
262
  ev.preventDefault();
260
263
  const step = getStep(ev) * (stepProp != null ? stepProp : 1);
261
264
  const direction = Math.sign(ev.deltaY);
@@ -281,15 +284,15 @@ var useNumberInput = (props = {}) => {
281
284
  ...formControlProps,
282
285
  ...props2,
283
286
  ref: mergeRefs(inputRef, ref),
284
- "aria-invalid": ariaAttr(isInvalid != null ? isInvalid : isOut),
285
- "aria-valuemax": max,
286
- "aria-valuemin": min,
287
+ "aria-invalid": ariaAttr(invalid != null ? invalid : out),
288
+ "aria-valuemax": maxValue,
289
+ "aria-valuemin": minValue,
287
290
  "aria-valuenow": Number.isNaN(valueAsNumber) ? void 0 : valueAsNumber,
288
291
  "aria-valuetext": valueText,
289
292
  autoComplete: "off",
290
293
  autoCorrect: "off",
291
- max,
292
- min,
294
+ max: maxValue,
295
+ min: minValue,
293
296
  step: stepProp,
294
297
  value: format(value),
295
298
  onBlur: handlerAll(props2.onBlur, onBlur),
@@ -306,15 +309,15 @@ var useNumberInput = (props = {}) => {
306
309
  disabled,
307
310
  readOnly,
308
311
  formControlProps,
309
- min,
310
- max,
312
+ maxValue,
313
+ minValue,
311
314
  stepProp,
312
315
  format,
313
316
  value,
314
317
  valueAsNumber,
315
318
  valueText,
316
- isInvalid,
317
- isOut,
319
+ invalid,
320
+ out,
318
321
  onChange,
319
322
  onKeyDown,
320
323
  onFocus,
@@ -324,7 +327,7 @@ var useNumberInput = (props = {}) => {
324
327
  const getIncrementProps = useCallback(
325
328
  (props2 = {}, ref = null) => {
326
329
  var _a;
327
- const trulyDisabled = disabled || keepWithinRange && isMax;
330
+ const trulyDisabled = disabled || keepWithinRange && max;
328
331
  return {
329
332
  "aria-label": "Increase",
330
333
  disabled: trulyDisabled,
@@ -348,7 +351,7 @@ var useNumberInput = (props = {}) => {
348
351
  [
349
352
  disabled,
350
353
  keepWithinRange,
351
- isMax,
354
+ max,
352
355
  required,
353
356
  readOnly,
354
357
  formControlProps,
@@ -359,7 +362,7 @@ var useNumberInput = (props = {}) => {
359
362
  const getDecrementProps = useCallback(
360
363
  (props2 = {}, ref = null) => {
361
364
  var _a;
362
- const trulyDisabled = disabled || keepWithinRange && isMin;
365
+ const trulyDisabled = disabled || keepWithinRange && min;
363
366
  return {
364
367
  "aria-label": "Decrease",
365
368
  disabled: trulyDisabled,
@@ -383,7 +386,7 @@ var useNumberInput = (props = {}) => {
383
386
  [
384
387
  disabled,
385
388
  keepWithinRange,
386
- isMin,
389
+ min,
387
390
  required,
388
391
  readOnly,
389
392
  formControlProps,
@@ -392,11 +395,23 @@ var useNumberInput = (props = {}) => {
392
395
  ]
393
396
  );
394
397
  return {
395
- isDisabled,
396
- isFocused,
397
- isReadOnly,
398
- isRequired,
398
+ disabled,
399
+ focused,
400
+ /**
401
+ * @deprecated Use `disabled` instead.
402
+ */
403
+ isDisabled: disabled,
404
+ /**
405
+ * @deprecated Use `readOnly` instead.
406
+ */
407
+ isReadOnly: readOnly,
408
+ /**
409
+ * @deprecated Use `required` instead.
410
+ */
411
+ isRequired: required,
399
412
  props: rest,
413
+ readOnly,
414
+ required,
400
415
  value: format(value),
401
416
  valueAsNumber,
402
417
  getDecrementProps,
@@ -467,10 +482,10 @@ var [NumberInputContextProvider, useNumberInputContext] = createContext({
467
482
  var NumberInput = forwardRef(
468
483
  (props, ref) => {
469
484
  const [styles, mergedProps] = useComponentMultiStyle("NumberInput", props);
470
- let {
485
+ const {
471
486
  className,
472
487
  isStepper = true,
473
- stepper,
488
+ stepper = isStepper,
474
489
  addonProps,
475
490
  containerProps,
476
491
  decrementProps,
@@ -483,7 +498,6 @@ var NumberInput = forwardRef(
483
498
  getIncrementProps,
484
499
  getInputProps
485
500
  } = useNumberInput(computedProps);
486
- stepper != null ? stepper : stepper = isStepper;
487
501
  const css = {
488
502
  position: "relative",
489
503
  zIndex: 0,
@@ -502,7 +516,7 @@ var NumberInput = forwardRef(
502
516
  ...containerProps,
503
517
  children: [
504
518
  /* @__PURE__ */ jsx(NumberInputField, { ...getInputProps(rest, ref) }),
505
- isStepper ? /* @__PURE__ */ jsxs(NumberInputAddon, { ...addonProps, children: [
519
+ stepper ? /* @__PURE__ */ jsxs(NumberInputAddon, { ...addonProps, children: [
506
520
  /* @__PURE__ */ jsx(NumberIncrementStepper, { ...incrementProps }),
507
521
  /* @__PURE__ */ jsx(NumberDecrementStepper, { ...decrementProps })
508
522
  ] }) : null
@@ -611,4 +625,4 @@ export {
611
625
  useNumberInput,
612
626
  NumberInput
613
627
  };
614
- //# sourceMappingURL=chunk-MZV5BX62.mjs.map
628
+ //# sourceMappingURL=chunk-OW4A5AQU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/number-input.tsx"],"sourcesContent":["import type {\n ColorModeToken,\n CSS,\n CSSUIObject,\n HTMLUIProps,\n PropGetter,\n ThemeProps,\n} from \"@yamada-ui/core\"\nimport type { UseFormControlProps } from \"@yamada-ui/form-control\"\nimport type { UseCounterProps } from \"@yamada-ui/use-counter\"\nimport type {\n ChangeEvent,\n InputHTMLAttributes,\n KeyboardEvent,\n KeyboardEventHandler,\n} from \"react\"\nimport {\n forwardRef,\n omitThemeProps,\n ui,\n useComponentMultiStyle,\n} from \"@yamada-ui/core\"\nimport {\n formControlProperties,\n useFormControlProps,\n} from \"@yamada-ui/form-control\"\nimport { ChevronIcon } from \"@yamada-ui/icon\"\nimport { useCounter } from \"@yamada-ui/use-counter\"\nimport { useEventListener } from \"@yamada-ui/use-event-listener\"\nimport { useInterval } from \"@yamada-ui/use-interval\"\nimport {\n ariaAttr,\n createContext,\n cx,\n handlerAll,\n mergeRefs,\n pickObject,\n useCallbackRef,\n useSafeLayoutEffect,\n useUpdateEffect,\n} from \"@yamada-ui/utils\"\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\"\n\nconst isDefaultValidCharacter = (character: string) =>\n /^[Ee0-9+\\-.]$/.test(character)\n\nconst isValidNumericKeyboardEvent = (\n { key, altKey, ctrlKey, metaKey }: KeyboardEvent,\n isValid: (key: string) => boolean,\n) => {\n const isModifierKey = ctrlKey || altKey || metaKey\n const isSingleCharacterKey = key.length === 1\n\n if (!isSingleCharacterKey || isModifierKey) return true\n\n return isValid(key)\n}\n\nconst getStep = <Y extends KeyboardEvent | WheelEvent>({\n ctrlKey,\n metaKey,\n shiftKey,\n}: Y) => {\n let ratio = 1\n\n if (metaKey || ctrlKey) ratio = 0.1\n\n if (shiftKey) ratio = 10\n\n return ratio\n}\n\ntype ValidityState = \"rangeOverflow\" | \"rangeUnderflow\"\n\nexport interface UseNumberInputProps\n extends UseFormControlProps<HTMLInputElement>,\n UseCounterProps {\n /**\n * The HTML `name` attribute used for forms.\n */\n name?: string\n /**\n * If `true`, the input's value will change based on mouse wheel.\n *\n * @default false\n */\n allowMouseWheel?: boolean\n /**\n * This controls the value update when you blur out of the input.\n * - If `true` and the value is greater than `max`, the value will be reset to `max`.\n * - Else, the value remains the same.\n *\n * @default true\n */\n clampValueOnBlur?: boolean\n /**\n * If `true`, the input will be focused as you increment or decrement the value with the stepper.\n *\n * @default true\n */\n focusInputOnChange?: boolean\n /**\n * If using a custom display format, this converts the default format to the custom format.\n */\n format?: (value: number | string) => number | string\n /**\n * This is used to format the value so that screen readers\n * can speak out a more human-friendly value.\n *\n * It is used to set the `aria-valuetext` property of the input.\n */\n getAriaValueText?: (value: number | string) => string | undefined\n /**\n * Hints at the type of data that might be entered by the user.\n * It also determines the type of keyboard shown to the user on mobile devices.\n *\n * @default 'decimal'\n */\n inputMode?: InputHTMLAttributes<any>[\"inputMode\"]\n /**\n * Whether the pressed key should be allowed in the input.\n * The default behavior is to allow DOM floating point characters defined by /^[Ee0-9+\\-.]$/.\n */\n isValidCharacter?: (value: string) => boolean\n /**\n * If using a custom display format, this converts the custom format to a format `parseFloat` understands.\n */\n parse?: (value: string) => string\n /**\n * The pattern used to check the <input> element's value against on form submission.\n *\n * @default '[0-9]*(.[0-9]+)?'\n */\n pattern?: InputHTMLAttributes<any>[\"pattern\"]\n /**\n * The callback invoked when invalid number is entered.\n */\n onInvalid?: (\n message: ValidityState,\n value: string,\n valueAsNumber: number,\n ) => void\n}\n\nexport const useNumberInput = (props: UseNumberInputProps = {}) => {\n const {\n id,\n name,\n allowMouseWheel,\n clampValueOnBlur = true,\n defaultValue,\n focusInputOnChange = true,\n format: formatProp,\n getAriaValueText: getAriaValueTextProp,\n inputMode = \"decimal\",\n isValidCharacter: isValidCharacterProp,\n keepWithinRange = true,\n max: maxValue = Number.MAX_SAFE_INTEGER,\n min: minValue = Number.MIN_SAFE_INTEGER,\n parse: parseProp,\n pattern = \"[0-9]*(.[0-9]+)?\",\n precision,\n step: stepProp,\n value: valueProp,\n onChange: onChangeProp,\n onInvalid: onInvalidProp,\n ...rest\n } = useFormControlProps(props)\n const {\n \"aria-invalid\": invalid,\n disabled,\n readOnly,\n required,\n onBlur: onBlurProp,\n onFocus: onFocusProp,\n ...formControlProps\n } = pickObject(rest, formControlProperties)\n const [focused, setFocused] = useState(false)\n const interactive = !(readOnly || disabled)\n const inputRef = useRef<HTMLInputElement>(null)\n const inputSelectionRef = useRef<{\n end: null | number\n start: null | number\n } | null>(null)\n const incrementRef = useRef<HTMLButtonElement>(null)\n const decrementRef = useRef<HTMLButtonElement>(null)\n\n const onFocus = useCallbackRef(\n handlerAll(onFocusProp, (ev) => {\n setFocused(true)\n\n if (!inputSelectionRef.current) return\n\n ev.target.selectionStart =\n inputSelectionRef.current.start ?? ev.currentTarget.value.length\n ev.currentTarget.selectionEnd =\n inputSelectionRef.current.end ?? ev.currentTarget.selectionStart\n }),\n )\n const onBlur = useCallbackRef(\n handlerAll(onBlurProp, () => {\n setFocused(false)\n\n if (clampValueOnBlur) validateAndClamp()\n }),\n )\n const onInvalid = useCallbackRef(onInvalidProp)\n const getAriaValueText = useCallbackRef(getAriaValueTextProp)\n const isValidCharacter = useCallbackRef(\n isValidCharacterProp ?? isDefaultValidCharacter,\n )\n\n const {\n cast,\n max,\n min,\n out,\n setValue,\n update,\n value,\n valueAsNumber,\n ...counter\n } = useCounter({\n defaultValue,\n keepWithinRange,\n max: maxValue,\n min: minValue,\n precision,\n step: stepProp,\n value: valueProp,\n onChange: onChangeProp,\n })\n\n const valueText = useMemo(() => {\n let text = getAriaValueText(value)\n\n if (text != null) return text\n\n text = value.toString()\n\n return !text ? undefined : text\n }, [value, getAriaValueText])\n\n const sanitize = useCallback(\n (value: string) => value.split(\"\").filter(isValidCharacter).join(\"\"),\n [isValidCharacter],\n )\n\n const parse = useCallback(\n (value: string) => parseProp?.(value) ?? value,\n [parseProp],\n )\n\n const format = useCallback(\n (value: number | string) => (formatProp?.(value) ?? value).toString(),\n [formatProp],\n )\n\n const increment = useCallback(\n (step = stepProp ?? 1) => {\n if (interactive) counter.increment(step)\n },\n [interactive, counter, stepProp],\n )\n\n const decrement = useCallback(\n (step = stepProp ?? 1) => {\n if (interactive) counter.decrement(step)\n },\n [interactive, counter, stepProp],\n )\n\n const validateAndClamp = useCallback(() => {\n let nextValue = value as number | string\n\n if (value === \"\") return\n\n const valueStartsWithE = /^[eE]/.test(value.toString())\n\n if (valueStartsWithE) {\n setValue(\"\")\n } else {\n if (valueAsNumber < minValue) nextValue = minValue\n\n if (valueAsNumber > maxValue) nextValue = maxValue\n\n cast(nextValue)\n }\n }, [cast, maxValue, minValue, setValue, value, valueAsNumber])\n\n const onChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if ((ev.nativeEvent as InputEvent).isComposing) return\n\n const parsedInput = parse(ev.currentTarget.value)\n\n update(sanitize(parsedInput))\n\n inputSelectionRef.current = {\n end: ev.currentTarget.selectionEnd,\n start: ev.currentTarget.selectionStart,\n }\n },\n [parse, update, sanitize],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent) => {\n if (ev.nativeEvent.isComposing) return\n\n if (!isValidNumericKeyboardEvent(ev, isValidCharacter))\n ev.preventDefault()\n\n const step = getStep(ev) * (stepProp ?? 1)\n\n const keyMap: { [key: string]: KeyboardEventHandler } = {\n ArrowDown: () => decrement(step),\n ArrowUp: () => increment(step),\n End: () => update(maxValue),\n Home: () => update(minValue),\n }\n\n const action = keyMap[ev.key]\n\n if (!action) return\n\n ev.preventDefault()\n action(ev)\n },\n [\n decrement,\n increment,\n isValidCharacter,\n maxValue,\n minValue,\n stepProp,\n update,\n ],\n )\n\n const { down, isSpinning, stop, up } = useSpinner(increment, decrement)\n\n useAttributeObserver(incrementRef, [\"disabled\"], isSpinning, stop)\n useAttributeObserver(decrementRef, [\"disabled\"], isSpinning, stop)\n\n const focusInput = useCallback(() => {\n if (focusInputOnChange)\n requestAnimationFrame(() => {\n inputRef.current?.focus()\n })\n }, [focusInputOnChange])\n\n const eventUp = useCallback(\n (ev: any) => {\n ev.preventDefault()\n up()\n focusInput()\n },\n [focusInput, up],\n )\n\n const eventDown = useCallback(\n (ev: any) => {\n ev.preventDefault()\n down()\n focusInput()\n },\n [focusInput, down],\n )\n\n useUpdateEffect(() => {\n if (valueAsNumber > maxValue) {\n onInvalid(\"rangeOverflow\", format(value), valueAsNumber)\n } else if (valueAsNumber < minValue) {\n onInvalid(\"rangeOverflow\", format(value), valueAsNumber)\n }\n }, [valueAsNumber, value, format, onInvalid])\n\n useSafeLayoutEffect(() => {\n if (!inputRef.current) return\n\n const notInSync = inputRef.current.value != value\n\n if (!notInSync) return\n\n const parsedInput = parse(inputRef.current.value)\n\n setValue(sanitize(parsedInput))\n }, [parse, sanitize])\n\n useEventListener(\n () => inputRef.current,\n \"wheel\",\n (ev) => {\n const ownerDocument = inputRef.current?.ownerDocument ?? document\n const focused = ownerDocument.activeElement === inputRef.current\n\n if (!allowMouseWheel || !focused) return\n\n ev.preventDefault()\n\n const step = getStep(ev as any) * (stepProp ?? 1)\n const direction = Math.sign(ev.deltaY)\n\n if (direction === -1) {\n increment(step)\n } else if (direction === 1) {\n decrement(step)\n }\n },\n { passive: false },\n )\n\n const getInputProps: PropGetter<\"input\"> = useCallback(\n (props = {}, ref = null) => ({\n id,\n type: \"text\",\n name,\n disabled,\n inputMode,\n pattern,\n readOnly,\n required,\n role: \"spinbutton\",\n ...formControlProps,\n ...props,\n ref: mergeRefs(inputRef, ref),\n \"aria-invalid\": ariaAttr(invalid ?? out),\n \"aria-valuemax\": maxValue,\n \"aria-valuemin\": minValue,\n \"aria-valuenow\": Number.isNaN(valueAsNumber) ? undefined : valueAsNumber,\n \"aria-valuetext\": valueText,\n autoComplete: \"off\",\n autoCorrect: \"off\",\n max: maxValue,\n min: minValue,\n step: stepProp,\n value: format(value),\n onBlur: handlerAll(props.onBlur, onBlur),\n onChange: handlerAll(props.onChange, onChange),\n onFocus: handlerAll(props.onFocus, onFocus),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }),\n [\n id,\n name,\n inputMode,\n pattern,\n required,\n disabled,\n readOnly,\n formControlProps,\n maxValue,\n minValue,\n stepProp,\n format,\n value,\n valueAsNumber,\n valueText,\n invalid,\n out,\n onChange,\n onKeyDown,\n onFocus,\n onBlur,\n ],\n )\n\n const getIncrementProps: PropGetter<\"button\"> = useCallback(\n (props = {}, ref = null) => {\n const trulyDisabled = disabled || (keepWithinRange && max)\n\n return {\n \"aria-label\": \"Increase\",\n disabled: trulyDisabled,\n readOnly,\n required,\n ...formControlProps,\n ...props,\n ref: mergeRefs(ref, incrementRef),\n style: {\n ...props.style,\n cursor: readOnly ? \"not-allowed\" : props.style?.cursor,\n },\n tabIndex: -1,\n onPointerDown: handlerAll(props.onPointerDown, (ev) => {\n if (ev.button === 0 && !trulyDisabled) eventUp(ev)\n }),\n onPointerLeave: handlerAll(props.onPointerLeave, stop),\n onPointerUp: handlerAll(props.onPointerUp, stop),\n }\n },\n [\n disabled,\n keepWithinRange,\n max,\n required,\n readOnly,\n formControlProps,\n stop,\n eventUp,\n ],\n )\n\n const getDecrementProps: PropGetter<\"button\"> = useCallback(\n (props = {}, ref = null) => {\n const trulyDisabled = disabled || (keepWithinRange && min)\n\n return {\n \"aria-label\": \"Decrease\",\n disabled: trulyDisabled,\n readOnly,\n required,\n ...formControlProps,\n ...props,\n ref: mergeRefs(ref, decrementRef),\n style: {\n ...props.style,\n cursor: readOnly ? \"not-allowed\" : props.style?.cursor,\n },\n tabIndex: -1,\n onPointerDown: handlerAll(props.onPointerDown, (ev) => {\n if (ev.button === 0 && !trulyDisabled) eventDown(ev)\n }),\n onPointerLeave: handlerAll(props.onPointerLeave, stop),\n onPointerUp: handlerAll(props.onPointerUp, stop),\n }\n },\n [\n disabled,\n keepWithinRange,\n min,\n required,\n readOnly,\n formControlProps,\n stop,\n eventDown,\n ],\n )\n\n return {\n disabled,\n focused,\n /**\n * @deprecated Use `disabled` instead.\n */\n isDisabled: disabled,\n /**\n * @deprecated Use `readOnly` instead.\n */\n isReadOnly: readOnly,\n /**\n * @deprecated Use `required` instead.\n */\n isRequired: required,\n props: rest,\n readOnly,\n required,\n value: format(value),\n valueAsNumber,\n getDecrementProps,\n getIncrementProps,\n getInputProps,\n }\n}\n\nexport type UseNumberInputReturn = ReturnType<typeof useNumberInput>\n\nconst INTERVAL = 50\n\nconst DELAY = 300\n\ntype Action = \"decrement\" | \"increment\"\n\nconst useSpinner = (increment: Function, decrement: Function) => {\n const [isSpinning, setIsSpinning] = useState(false)\n const [action, setAction] = useState<Action | null>(null)\n const [isOnce, setIsOnce] = useState(true)\n const timeoutRef = useRef<any>(null)\n\n const removeTimeout = () => clearTimeout(timeoutRef.current)\n\n useInterval(\n () => {\n if (action === \"increment\") increment()\n\n if (action === \"decrement\") decrement()\n },\n isSpinning ? INTERVAL : null,\n )\n\n const up = useCallback(() => {\n if (isOnce) increment()\n\n timeoutRef.current = setTimeout(() => {\n setIsOnce(false)\n setIsSpinning(true)\n setAction(\"increment\")\n }, DELAY)\n }, [increment, isOnce])\n\n const down = useCallback(() => {\n if (isOnce) decrement()\n\n timeoutRef.current = setTimeout(() => {\n setIsOnce(false)\n setIsSpinning(true)\n setAction(\"decrement\")\n }, DELAY)\n }, [decrement, isOnce])\n\n const stop = useCallback(() => {\n setIsOnce(true)\n setIsSpinning(false)\n removeTimeout()\n }, [])\n\n useEffect(() => {\n return () => removeTimeout()\n }, [])\n\n return { down, isSpinning, stop, up }\n}\n\nconst useAttributeObserver = (\n ref: React.RefObject<HTMLElement | null>,\n attributeFilter: string[],\n enabled: boolean,\n func: () => void,\n) => {\n useEffect(() => {\n if (!ref.current || !enabled) return\n\n const ownerDocument = ref.current.ownerDocument.defaultView ?? window\n\n const observer = new ownerDocument.MutationObserver((changes) => {\n for (const { type, attributeName } of changes) {\n if (\n type === \"attributes\" &&\n attributeName &&\n attributeFilter.includes(attributeName)\n )\n func()\n }\n })\n\n observer.observe(ref.current, { attributeFilter, attributes: true })\n\n return () => observer.disconnect()\n })\n}\n\ninterface NumberInputOptions {\n /**\n * The border color when the input is invalid.\n */\n errorBorderColor?: ColorModeToken<CSS.Property.BorderColor, \"colors\">\n /**\n * The border color when the input is focused.\n */\n focusBorderColor?: ColorModeToken<CSS.Property.BorderColor, \"colors\">\n /**\n * If `true`, display the addon for the number input.\n *\n * @deprecated Use `stepper` instead.\n */\n isStepper?: boolean\n /**\n * If `true`, display the addon for the number input.\n */\n stepper?: boolean\n /**\n * Props for addon component.\n */\n addonProps?: HTMLUIProps\n /**\n * Props for container element.\n */\n containerProps?: HTMLUIProps\n /**\n * Props for decrement component.\n */\n decrementProps?: NumberDecrementStepperProps\n /**\n * Props for increment component.\n */\n incrementProps?: NumberIncrementStepperProps\n}\n\nexport interface NumberInputProps\n extends Omit<\n HTMLUIProps<\"input\">,\n | \"defaultValue\"\n | \"max\"\n | \"min\"\n | \"onChange\"\n | \"onInvalid\"\n | \"size\"\n | \"step\"\n | \"value\"\n >,\n ThemeProps<\"NumberInput\">,\n UseNumberInputProps,\n NumberInputOptions {}\n\ninterface NumberInputContext {\n styles: { [key: string]: CSSUIObject | undefined }\n getDecrementProps: PropGetter<\"button\">\n getIncrementProps: PropGetter<\"button\">\n getInputProps: PropGetter<\"input\">\n}\n\nconst [NumberInputContextProvider, useNumberInputContext] =\n createContext<NumberInputContext>({\n name: \"NumberInputContext\",\n errorMessage: `useNumberInputContext returned is 'undefined'. Seems you forgot to wrap the components in \"<NumberInput />\"`,\n })\n\n/**\n * `NumberInput` is a component used to obtain numeric input from the user.\n *\n * @see Docs https://yamada-ui.com/components/forms/number-input\n */\nexport const NumberInput = forwardRef<NumberInputProps, \"input\">(\n (props, ref) => {\n const [styles, mergedProps] = useComponentMultiStyle(\"NumberInput\", props)\n const {\n className,\n isStepper = true,\n stepper = isStepper,\n addonProps,\n containerProps,\n decrementProps,\n incrementProps,\n ...computedProps\n } = omitThemeProps(mergedProps)\n const {\n props: rest,\n getDecrementProps,\n getIncrementProps,\n getInputProps,\n } = useNumberInput(computedProps)\n const css: CSSUIObject = {\n position: \"relative\",\n zIndex: 0,\n ...styles.container,\n }\n\n return (\n <NumberInputContextProvider\n value={{ styles, getDecrementProps, getIncrementProps, getInputProps }}\n >\n <ui.div\n className={cx(\"ui-number-input\", className)}\n role=\"group\"\n __css={css}\n {...containerProps}\n >\n <NumberInputField {...getInputProps(rest, ref)} />\n\n {stepper ? (\n <NumberInputAddon {...addonProps}>\n <NumberIncrementStepper {...incrementProps} />\n <NumberDecrementStepper {...decrementProps} />\n </NumberInputAddon>\n ) : null}\n </ui.div>\n </NumberInputContextProvider>\n )\n },\n)\n\nNumberInput.displayName = \"NumberInput\"\nNumberInput.__ui__ = \"NumberInput\"\n\ntype NumberInputFieldProps = Omit<HTMLUIProps<\"input\">, \"size\">\n\nconst NumberInputField = forwardRef<NumberInputFieldProps, \"input\">(\n ({ className, ...rest }, ref) => {\n const { styles } = useNumberInputContext()\n\n const css: CSSUIObject = {\n width: \"100%\",\n ...styles.field,\n }\n\n return (\n <ui.input\n ref={ref}\n className={cx(\"ui-number-input__field\", className)}\n __css={css}\n {...rest}\n />\n )\n },\n)\n\nNumberInputField.displayName = \"NumberInputField\"\nNumberInputField.__ui__ = \"NumberInputField\"\n\ntype NumberInputAddonProps = HTMLUIProps\n\nconst NumberInputAddon = forwardRef<NumberInputAddonProps, \"div\">(\n ({ className, ...rest }, ref) => {\n const { styles } = useNumberInputContext()\n\n const css: CSSUIObject = {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"calc(100% - 2px)\",\n insetEnd: \"0px\",\n margin: \"1px\",\n position: \"absolute\",\n top: \"0\",\n zIndex: \"fallback(yamcha, 1)\",\n ...styles.addon,\n }\n\n return (\n <ui.div\n ref={ref}\n className={cx(\"ui-number-input__addon\", className)}\n aria-hidden\n __css={css}\n {...rest}\n />\n )\n },\n)\n\nNumberInputAddon.displayName = \"NumberInputAddon\"\nNumberInputAddon.__ui__ = \"NumberInputAddon\"\n\nconst Stepper = ui(\"button\", {\n baseStyle: {\n alignItems: \"center\",\n cursor: \"pointer\",\n display: \"flex\",\n flex: 1,\n justifyContent: \"center\",\n lineHeight: \"normal\",\n transitionDuration: \"normal\",\n transitionProperty: \"common\",\n userSelect: \"none\",\n },\n})\n\ntype NumberIncrementStepperProps = HTMLUIProps<\"button\">\n\nconst NumberIncrementStepper = forwardRef<\n NumberIncrementStepperProps,\n \"button\"\n>(({ className, children, ...rest }, ref) => {\n const { styles, getIncrementProps } = useNumberInputContext()\n\n const css: CSSUIObject = { ...styles.stepper }\n\n return (\n <Stepper\n className={cx(\"ui-number-input__stepper--up\", className)}\n {...getIncrementProps(rest, ref)}\n __css={css}\n >\n {children ?? <ChevronIcon __css={{ transform: \"rotate(180deg)\" }} />}\n </Stepper>\n )\n})\n\nNumberIncrementStepper.displayName = \"NumberIncrementStepper\"\nNumberIncrementStepper.__ui__ = \"NumberIncrementStepper\"\n\ntype NumberDecrementStepperProps = HTMLUIProps<\"button\">\n\nconst NumberDecrementStepper = forwardRef<\n NumberDecrementStepperProps,\n \"button\"\n>(({ className, children, ...rest }, ref) => {\n const { styles, getDecrementProps } = useNumberInputContext()\n\n const css: CSSUIObject = { ...styles.stepper }\n\n return (\n <Stepper\n className={cx(\"ui-number-input__stepper--down\", className)}\n {...getDecrementProps(rest, ref)}\n __css={css}\n >\n {children ?? <ChevronIcon />}\n </Stepper>\n )\n})\n\nNumberDecrementStepper.displayName = \"NumberDecrementStepper\"\nNumberDecrementStepper.__ui__ = \"NumberDecrementStepper\"\n"],"mappings":"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","names":["value","focused","props"]}
package/dist/index.js CHANGED
@@ -54,7 +54,7 @@ var getStep = ({
54
54
  return ratio;
55
55
  };
56
56
  var useNumberInput = (props = {}) => {
57
- let {
57
+ const {
58
58
  id,
59
59
  name,
60
60
  allowMouseWheel,
@@ -66,20 +66,19 @@ var useNumberInput = (props = {}) => {
66
66
  inputMode = "decimal",
67
67
  isValidCharacter: isValidCharacterProp,
68
68
  keepWithinRange = true,
69
- max = Number.MAX_SAFE_INTEGER,
70
- min = Number.MIN_SAFE_INTEGER,
69
+ max: maxValue = Number.MAX_SAFE_INTEGER,
70
+ min: minValue = Number.MIN_SAFE_INTEGER,
71
71
  parse: parseProp,
72
72
  pattern = "[0-9]*(.[0-9]+)?",
73
73
  precision,
74
74
  step: stepProp,
75
- validCharacter,
76
75
  value: valueProp,
77
76
  onChange: onChangeProp,
78
77
  onInvalid: onInvalidProp,
79
78
  ...rest
80
79
  } = (0, import_form_control.useFormControlProps)(props);
81
80
  const {
82
- "aria-invalid": isInvalid,
81
+ "aria-invalid": invalid,
83
82
  disabled,
84
83
  readOnly,
85
84
  required,
@@ -87,12 +86,8 @@ var useNumberInput = (props = {}) => {
87
86
  onFocus: onFocusProp,
88
87
  ...formControlProps
89
88
  } = (0, import_utils.pickObject)(rest, import_form_control.formControlProperties);
90
- validCharacter != null ? validCharacter : validCharacter = isValidCharacterProp;
91
- const isRequired = required;
92
- const isReadOnly = readOnly;
93
- const isDisabled = disabled;
94
- const [isFocused, setFocused] = (0, import_react.useState)(false);
95
- const isInteractive = !(readOnly || disabled);
89
+ const [focused, setFocused] = (0, import_react.useState)(false);
90
+ const interactive = !(readOnly || disabled);
96
91
  const inputRef = (0, import_react.useRef)(null);
97
92
  const inputSelectionRef = (0, import_react.useRef)(null);
98
93
  const incrementRef = (0, import_react.useRef)(null);
@@ -115,13 +110,13 @@ var useNumberInput = (props = {}) => {
115
110
  const onInvalid = (0, import_utils.useCallbackRef)(onInvalidProp);
116
111
  const getAriaValueText = (0, import_utils.useCallbackRef)(getAriaValueTextProp);
117
112
  const isValidCharacter = (0, import_utils.useCallbackRef)(
118
- validCharacter != null ? validCharacter : isDefaultValidCharacter
113
+ isValidCharacterProp != null ? isValidCharacterProp : isDefaultValidCharacter
119
114
  );
120
115
  const {
121
116
  cast,
122
- isMax,
123
- isMin,
124
- isOut,
117
+ max,
118
+ min,
119
+ out,
125
120
  setValue,
126
121
  update,
127
122
  value,
@@ -130,8 +125,8 @@ var useNumberInput = (props = {}) => {
130
125
  } = (0, import_use_counter.useCounter)({
131
126
  defaultValue,
132
127
  keepWithinRange,
133
- max,
134
- min,
128
+ max: maxValue,
129
+ min: minValue,
135
130
  precision,
136
131
  step: stepProp,
137
132
  value: valueProp,
@@ -163,28 +158,28 @@ var useNumberInput = (props = {}) => {
163
158
  );
164
159
  const increment = (0, import_react.useCallback)(
165
160
  (step = stepProp != null ? stepProp : 1) => {
166
- if (isInteractive) counter.increment(step);
161
+ if (interactive) counter.increment(step);
167
162
  },
168
- [isInteractive, counter, stepProp]
163
+ [interactive, counter, stepProp]
169
164
  );
170
165
  const decrement = (0, import_react.useCallback)(
171
166
  (step = stepProp != null ? stepProp : 1) => {
172
- if (isInteractive) counter.decrement(step);
167
+ if (interactive) counter.decrement(step);
173
168
  },
174
- [isInteractive, counter, stepProp]
169
+ [interactive, counter, stepProp]
175
170
  );
176
171
  const validateAndClamp = (0, import_react.useCallback)(() => {
177
- let next = value;
172
+ let nextValue = value;
178
173
  if (value === "") return;
179
174
  const valueStartsWithE = /^[eE]/.test(value.toString());
180
175
  if (valueStartsWithE) {
181
176
  setValue("");
182
177
  } else {
183
- if (valueAsNumber < min) next = min;
184
- if (valueAsNumber > max) next = max;
185
- cast(next);
178
+ if (valueAsNumber < minValue) nextValue = minValue;
179
+ if (valueAsNumber > maxValue) nextValue = maxValue;
180
+ cast(nextValue);
186
181
  }
187
- }, [cast, max, min, setValue, value, valueAsNumber]);
182
+ }, [cast, maxValue, minValue, setValue, value, valueAsNumber]);
188
183
  const onChange = (0, import_react.useCallback)(
189
184
  (ev) => {
190
185
  if (ev.nativeEvent.isComposing) return;
@@ -206,15 +201,23 @@ var useNumberInput = (props = {}) => {
206
201
  const keyMap = {
207
202
  ArrowDown: () => decrement(step),
208
203
  ArrowUp: () => increment(step),
209
- End: () => update(max),
210
- Home: () => update(min)
204
+ End: () => update(maxValue),
205
+ Home: () => update(minValue)
211
206
  };
212
207
  const action = keyMap[ev.key];
213
208
  if (!action) return;
214
209
  ev.preventDefault();
215
210
  action(ev);
216
211
  },
217
- [decrement, increment, isValidCharacter, max, min, stepProp, update]
212
+ [
213
+ decrement,
214
+ increment,
215
+ isValidCharacter,
216
+ maxValue,
217
+ minValue,
218
+ stepProp,
219
+ update
220
+ ]
218
221
  );
219
222
  const { down, isSpinning, stop, up } = useSpinner(increment, decrement);
220
223
  useAttributeObserver(incrementRef, ["disabled"], isSpinning, stop);
@@ -243,9 +246,9 @@ var useNumberInput = (props = {}) => {
243
246
  [focusInput, down]
244
247
  );
245
248
  (0, import_utils.useUpdateEffect)(() => {
246
- if (valueAsNumber > max) {
249
+ if (valueAsNumber > maxValue) {
247
250
  onInvalid("rangeOverflow", format(value), valueAsNumber);
248
- } else if (valueAsNumber < min) {
251
+ } else if (valueAsNumber < minValue) {
249
252
  onInvalid("rangeOverflow", format(value), valueAsNumber);
250
253
  }
251
254
  }, [valueAsNumber, value, format, onInvalid]);
@@ -262,8 +265,8 @@ var useNumberInput = (props = {}) => {
262
265
  (ev) => {
263
266
  var _a, _b;
264
267
  const ownerDocument = (_b = (_a = inputRef.current) == null ? void 0 : _a.ownerDocument) != null ? _b : document;
265
- const isFocused2 = ownerDocument.activeElement === inputRef.current;
266
- if (!allowMouseWheel || !isFocused2) return;
268
+ const focused2 = ownerDocument.activeElement === inputRef.current;
269
+ if (!allowMouseWheel || !focused2) return;
267
270
  ev.preventDefault();
268
271
  const step = getStep(ev) * (stepProp != null ? stepProp : 1);
269
272
  const direction = Math.sign(ev.deltaY);
@@ -289,15 +292,15 @@ var useNumberInput = (props = {}) => {
289
292
  ...formControlProps,
290
293
  ...props2,
291
294
  ref: (0, import_utils.mergeRefs)(inputRef, ref),
292
- "aria-invalid": (0, import_utils.ariaAttr)(isInvalid != null ? isInvalid : isOut),
293
- "aria-valuemax": max,
294
- "aria-valuemin": min,
295
+ "aria-invalid": (0, import_utils.ariaAttr)(invalid != null ? invalid : out),
296
+ "aria-valuemax": maxValue,
297
+ "aria-valuemin": minValue,
295
298
  "aria-valuenow": Number.isNaN(valueAsNumber) ? void 0 : valueAsNumber,
296
299
  "aria-valuetext": valueText,
297
300
  autoComplete: "off",
298
301
  autoCorrect: "off",
299
- max,
300
- min,
302
+ max: maxValue,
303
+ min: minValue,
301
304
  step: stepProp,
302
305
  value: format(value),
303
306
  onBlur: (0, import_utils.handlerAll)(props2.onBlur, onBlur),
@@ -314,15 +317,15 @@ var useNumberInput = (props = {}) => {
314
317
  disabled,
315
318
  readOnly,
316
319
  formControlProps,
317
- min,
318
- max,
320
+ maxValue,
321
+ minValue,
319
322
  stepProp,
320
323
  format,
321
324
  value,
322
325
  valueAsNumber,
323
326
  valueText,
324
- isInvalid,
325
- isOut,
327
+ invalid,
328
+ out,
326
329
  onChange,
327
330
  onKeyDown,
328
331
  onFocus,
@@ -332,7 +335,7 @@ var useNumberInput = (props = {}) => {
332
335
  const getIncrementProps = (0, import_react.useCallback)(
333
336
  (props2 = {}, ref = null) => {
334
337
  var _a;
335
- const trulyDisabled = disabled || keepWithinRange && isMax;
338
+ const trulyDisabled = disabled || keepWithinRange && max;
336
339
  return {
337
340
  "aria-label": "Increase",
338
341
  disabled: trulyDisabled,
@@ -356,7 +359,7 @@ var useNumberInput = (props = {}) => {
356
359
  [
357
360
  disabled,
358
361
  keepWithinRange,
359
- isMax,
362
+ max,
360
363
  required,
361
364
  readOnly,
362
365
  formControlProps,
@@ -367,7 +370,7 @@ var useNumberInput = (props = {}) => {
367
370
  const getDecrementProps = (0, import_react.useCallback)(
368
371
  (props2 = {}, ref = null) => {
369
372
  var _a;
370
- const trulyDisabled = disabled || keepWithinRange && isMin;
373
+ const trulyDisabled = disabled || keepWithinRange && min;
371
374
  return {
372
375
  "aria-label": "Decrease",
373
376
  disabled: trulyDisabled,
@@ -391,7 +394,7 @@ var useNumberInput = (props = {}) => {
391
394
  [
392
395
  disabled,
393
396
  keepWithinRange,
394
- isMin,
397
+ min,
395
398
  required,
396
399
  readOnly,
397
400
  formControlProps,
@@ -400,11 +403,23 @@ var useNumberInput = (props = {}) => {
400
403
  ]
401
404
  );
402
405
  return {
403
- isDisabled,
404
- isFocused,
405
- isReadOnly,
406
- isRequired,
406
+ disabled,
407
+ focused,
408
+ /**
409
+ * @deprecated Use `disabled` instead.
410
+ */
411
+ isDisabled: disabled,
412
+ /**
413
+ * @deprecated Use `readOnly` instead.
414
+ */
415
+ isReadOnly: readOnly,
416
+ /**
417
+ * @deprecated Use `required` instead.
418
+ */
419
+ isRequired: required,
407
420
  props: rest,
421
+ readOnly,
422
+ required,
408
423
  value: format(value),
409
424
  valueAsNumber,
410
425
  getDecrementProps,
@@ -475,10 +490,10 @@ var [NumberInputContextProvider, useNumberInputContext] = (0, import_utils.creat
475
490
  var NumberInput = (0, import_core.forwardRef)(
476
491
  (props, ref) => {
477
492
  const [styles, mergedProps] = (0, import_core.useComponentMultiStyle)("NumberInput", props);
478
- let {
493
+ const {
479
494
  className,
480
495
  isStepper = true,
481
- stepper,
496
+ stepper = isStepper,
482
497
  addonProps,
483
498
  containerProps,
484
499
  decrementProps,
@@ -491,7 +506,6 @@ var NumberInput = (0, import_core.forwardRef)(
491
506
  getIncrementProps,
492
507
  getInputProps
493
508
  } = useNumberInput(computedProps);
494
- stepper != null ? stepper : stepper = isStepper;
495
509
  const css = {
496
510
  position: "relative",
497
511
  zIndex: 0,
@@ -510,7 +524,7 @@ var NumberInput = (0, import_core.forwardRef)(
510
524
  ...containerProps,
511
525
  children: [
512
526
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NumberInputField, { ...getInputProps(rest, ref) }),
513
- isStepper ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(NumberInputAddon, { ...addonProps, children: [
527
+ stepper ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(NumberInputAddon, { ...addonProps, children: [
514
528
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NumberIncrementStepper, { ...incrementProps }),
515
529
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NumberDecrementStepper, { ...decrementProps })
516
530
  ] }) : null