@spark-ui/components 10.19.3 → 10.20.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.
@@ -1,173 +1,230 @@
1
+ import {
2
+ Input,
3
+ InputGroup
4
+ } from "../chunk-VBX7BTNU.mjs";
5
+ import {
6
+ IconButton
7
+ } from "../chunk-XYK6V3JF.mjs";
1
8
  import {
2
9
  Icon
3
10
  } from "../chunk-UMUMFMFB.mjs";
11
+ import "../chunk-HEKSVWYW.mjs";
12
+ import "../chunk-GAK4SC2F.mjs";
4
13
  import "../chunk-KEGAAGJW.mjs";
5
- import {
6
- Slot
7
- } from "../chunk-6QCEPQ3U.mjs";
8
-
9
- // src/stepper/Buttons.tsx
10
- import { NumberField } from "@base-ui-components/react/number-field";
11
- import { Minus } from "@spark-ui/icons/Minus";
12
- import { Plus } from "@spark-ui/icons/Plus";
13
- import { cva } from "class-variance-authority";
14
+ import "../chunk-6QCEPQ3U.mjs";
14
15
 
15
- // src/stepper/useRenderSlot.tsx
16
- import { jsx } from "react/jsx-runtime";
17
- function useRenderSlot(asChild, defaultTag) {
18
- const Component = asChild ? Slot : defaultTag;
19
- return asChild ? ({ ...props }) => /* @__PURE__ */ jsx(Component, { ...props }) : void 0;
20
- }
16
+ // src/stepper/Stepper.tsx
17
+ import { useFormFieldControl } from "@spark-ui/components/form-field";
18
+ import { createContext, useContext, useRef } from "react";
21
19
 
22
- // src/stepper/Buttons.tsx
23
- import { jsx as jsx2 } from "react/jsx-runtime";
24
- var styles = cva(
25
- [
26
- // Base styles
27
- "border-outline border-sm min-w-sz-44 text-on-surface flex cursor-pointer items-center justify-center bg-clip-padding select-none",
28
- "hover:bg-neutral/dim-5",
29
- // Disabled and ReadOnly styles
30
- "disabled:bg-on-surface/dim-5 disabled:text-on-surface/dim-3 disabled:cursor-not-allowed",
31
- "data-[disabled]:bg-on-surface/dim-5 data-[disabled]:text-on-surface/dim-3 data-[disabled]:cursor-not-allowed",
32
- "data-[readonly]:bg-on-surface/dim-5 data-[readonly]:text-on-surface/dim-3 data-[readonly]:cursor-not-allowed",
33
- // State styles
34
- "group-data-[field-state=error]:border-error",
35
- "group-data-[field-state=alert]:border-alert",
36
- "group-data-[field-state=success]:border-success"
37
- ],
38
- {
39
- variants: {
40
- placement: {
41
- left: "rounded-l-lg",
42
- right: "rounded-r-lg"
43
- }
44
- }
45
- }
46
- );
47
- var Decrement = ({ children, className, asChild = false, ...props }) => {
48
- const render = useRenderSlot(asChild, "div");
49
- return /* @__PURE__ */ jsx2(
50
- NumberField.Decrement,
20
+ // src/stepper/useStepper.ts
21
+ import { useNumberField } from "@react-aria/numberfield";
22
+ import { useNumberFieldState } from "@react-stately/numberfield";
23
+ var useStepper = ({
24
+ inputRef,
25
+ locale = "fr",
26
+ ...rest
27
+ }) => {
28
+ const state = useNumberFieldState({
29
+ ...rest,
30
+ isDisabled: rest.disabled,
31
+ isReadOnly: rest.readOnly,
32
+ isRequired: rest.required,
33
+ locale
34
+ });
35
+ const { groupProps, inputProps, incrementButtonProps, decrementButtonProps } = useNumberField(
51
36
  {
52
- "data-spark-component": "stepper-decrement-button",
53
- className: styles({
54
- placement: "left",
55
- className
56
- }),
57
- render,
58
- ...props,
59
- children: children || /* @__PURE__ */ jsx2(Icon, { children: /* @__PURE__ */ jsx2(Minus, {}) })
60
- }
37
+ isWheelDisabled: false,
38
+ ...rest,
39
+ isDisabled: rest.disabled,
40
+ isReadOnly: rest.readOnly,
41
+ isRequired: rest.required
42
+ },
43
+ state,
44
+ inputRef
61
45
  );
46
+ return {
47
+ groupProps,
48
+ inputProps,
49
+ incrementButtonProps,
50
+ decrementButtonProps
51
+ };
62
52
  };
63
- var Increment = ({ children, className, asChild = false, ...props }) => {
64
- const render = useRenderSlot(asChild, "div");
65
- return /* @__PURE__ */ jsx2(
66
- NumberField.Increment,
53
+
54
+ // src/stepper/Stepper.tsx
55
+ import { jsx } from "react/jsx-runtime";
56
+ var StepperContext = createContext(null);
57
+ var Stepper = ({
58
+ children,
59
+ formatOptions,
60
+ minValue,
61
+ maxValue,
62
+ ref: forwardedRef,
63
+ ...stepperProps
64
+ }) => {
65
+ const inputRef = useRef(null);
66
+ const {
67
+ groupProps,
68
+ inputProps: _inputProps,
69
+ incrementButtonProps: _incrementButtonProps,
70
+ decrementButtonProps: _decrementButtonProps
71
+ } = useStepper({
72
+ ...{
73
+ ...stepperProps,
74
+ /**
75
+ * To enable the possibility to init the stepper with empty (undefined) value,
76
+ * we need to force the empty value to NaN.
77
+ * Cf. https://github.com/adobe/react-spectrum/issues/5524
78
+ */
79
+ ..."value" in stepperProps && { value: stepperProps.value ?? NaN },
80
+ onChange: stepperProps.onValueChange
81
+ },
82
+ formatOptions,
83
+ minValue,
84
+ maxValue,
85
+ inputRef
86
+ });
87
+ const formFieldControlProps = useFormFieldControl();
88
+ const isWrappedInFormField = !!formFieldControlProps.id;
89
+ const incrementButtonProps = {
90
+ ..._incrementButtonProps,
91
+ ...isWrappedInFormField && { "aria-controls": formFieldControlProps.id }
92
+ };
93
+ const decrementButtonProps = {
94
+ ..._decrementButtonProps,
95
+ ...isWrappedInFormField && { "aria-controls": formFieldControlProps.id }
96
+ };
97
+ const inputProps = {
98
+ ..._inputProps,
99
+ ...isWrappedInFormField && {
100
+ id: formFieldControlProps.id,
101
+ required: formFieldControlProps.isRequired,
102
+ "aria-invalid": formFieldControlProps.isInvalid ? true : void 0
103
+ }
104
+ };
105
+ const { onValueChange: _, ...remainingStepperProps } = stepperProps;
106
+ return /* @__PURE__ */ jsx(
107
+ StepperContext.Provider,
67
108
  {
68
- "data-spark-component": "stepper-increment-button",
69
- className: styles({
70
- placement: "right",
71
- className
72
- }),
73
- render,
74
- ...props,
75
- children: children || /* @__PURE__ */ jsx2(Icon, { children: /* @__PURE__ */ jsx2(Plus, {}) })
109
+ value: { incrementButtonProps, decrementButtonProps, inputProps, inputRef },
110
+ children: /* @__PURE__ */ jsx(
111
+ InputGroup,
112
+ {
113
+ ...remainingStepperProps,
114
+ ...groupProps,
115
+ "data-spark-component": "stepper",
116
+ ref: forwardedRef,
117
+ children
118
+ }
119
+ )
76
120
  }
77
121
  );
78
122
  };
79
- Decrement.displayName = "Stepper.DecrementButton";
80
- Increment.displayName = "Stepper.IncrementButton";
123
+ Stepper.displayName = "Stepper";
124
+ var useStepperContext = () => {
125
+ const context = useContext(StepperContext);
126
+ if (!context) {
127
+ throw Error("useStepperContext must be used within a Stepper provider");
128
+ }
129
+ return context;
130
+ };
81
131
 
82
- // src/stepper/Input.tsx
83
- import { NumberField as NumberField2 } from "@base-ui-components/react/number-field";
84
- import { useFormFieldControl } from "@spark-ui/components/form-field";
85
- import { cx } from "class-variance-authority";
86
- import { jsx as jsx3 } from "react/jsx-runtime";
87
- var Input = ({ className, ...props }) => {
88
- const field = useFormFieldControl();
89
- return /* @__PURE__ */ jsx3(
90
- NumberField2.Input,
132
+ // src/stepper/StepperButton.tsx
133
+ import { useButton } from "@react-aria/button";
134
+ import { Minus } from "@spark-ui/icons/Minus";
135
+ import { Plus } from "@spark-ui/icons/Plus";
136
+ import { useRef as useRef2 } from "react";
137
+ import { jsx as jsx2 } from "react/jsx-runtime";
138
+ var IncrementButton = ({
139
+ children,
140
+ design = "ghost",
141
+ intent = "neutral",
142
+ className,
143
+ ref: forwardedRef,
144
+ ...rest
145
+ }) => {
146
+ const innerRef = useRef2(null);
147
+ const ref = forwardedRef && typeof forwardedRef !== "function" ? forwardedRef : innerRef;
148
+ const { incrementButtonProps } = useStepperContext();
149
+ const { buttonProps } = useButton({ ...incrementButtonProps, ...rest }, ref);
150
+ return /* @__PURE__ */ jsx2(InputGroup.TrailingAddon, { asChild: true, "data-spark-component": "stepper-increment-button", children: /* @__PURE__ */ jsx2(
151
+ IconButton,
91
152
  {
92
- "data-spark-component": "stepper-input",
93
- className: cx(
94
- // Base styles
95
- "bg-surface text-on-surface px-lg h-sz-44 border-y-sm border-outline relative inline-flex w-full text-center",
96
- "first:border-l-sm first:rounded-l-lg",
97
- "last:border-r-sm last:rounded-r-lg",
98
- // State styles
99
- "group-data-[field-state=error]:border-error",
100
- "group-data-[field-state=alert]:border-alert",
101
- "group-data-[field-state=success]:border-success",
102
- "",
103
- // Disabled and ReadOnly styles
104
- "data-[disabled]:bg-on-surface/dim-5 data-[disabled]:text-on-surface/dim-3 data-[disabled]:cursor-not-allowed",
105
- "data-[readonly]:bg-on-surface/dim-5",
106
- // Focus styles
107
- "focus:outline-outline-high focus:z-raised focus:outline-2 focus:-outline-offset-1",
108
- className
109
- ),
110
- ...field.description && { "aria-describedby": field.description },
111
- ...field.isRequired && { required: true },
112
- ...field.state === "error" && { "aria-invalid": true },
113
- ...props
153
+ ref,
154
+ design,
155
+ intent,
156
+ className,
157
+ "aria-label": buttonProps["aria-label"],
158
+ ...buttonProps,
159
+ disabled: rest.disabled || buttonProps.disabled,
160
+ children: children || /* @__PURE__ */ jsx2(Icon, { children: /* @__PURE__ */ jsx2(Plus, {}) })
114
161
  }
115
- );
162
+ ) });
116
163
  };
117
- Input.displayName = "Stepper.InputButton";
118
-
119
- // src/stepper/Root.tsx
120
- import { NumberField as NumberField3 } from "@base-ui-components/react/number-field";
121
- import { useFormFieldControl as useFormFieldControl2 } from "@spark-ui/components/form-field";
122
- import { cx as cx2 } from "class-variance-authority";
123
- import { jsx as jsx4 } from "react/jsx-runtime";
124
- var Root = ({
164
+ var DecrementButton = ({
125
165
  children,
126
- allowWheelScrub = true,
127
- state: stateProp,
128
- minValue,
129
- maxValue,
130
- formatOptions,
131
- step: stepProp,
166
+ design = "ghost",
167
+ intent = "neutral",
132
168
  className,
133
- ...props
169
+ ref: forwardedRef,
170
+ ...rest
134
171
  }) => {
135
- const render = useRenderSlot(true, "div");
136
- const field = useFormFieldControl2();
137
- const state = field.state ?? stateProp;
138
- const step = stepProp == null && formatOptions?.style === "percent" ? 0.01 : stepProp;
139
- return /* @__PURE__ */ jsx4(
140
- NumberField3.Root,
172
+ const innerRef = useRef2(null);
173
+ const ref = forwardedRef && typeof forwardedRef !== "function" ? forwardedRef : innerRef;
174
+ const { decrementButtonProps } = useStepperContext();
175
+ const { buttonProps } = useButton({ ...decrementButtonProps, ...rest }, ref);
176
+ return /* @__PURE__ */ jsx2(InputGroup.LeadingAddon, { asChild: true, "data-spark-component": "stepper-decrement-button", children: /* @__PURE__ */ jsx2(
177
+ IconButton,
141
178
  {
142
- "data-spark-component": "stepper",
143
- allowWheelScrub,
144
- render,
145
- min: minValue,
146
- max: maxValue,
147
- format: formatOptions,
148
- step,
149
- ...field.id && { id: field.id },
150
- ...props,
151
- children: /* @__PURE__ */ jsx4(
152
- NumberField3.Group,
153
- {
154
- className: cx2("group relative inline-flex w-full", className),
155
- "data-field-state": state,
156
- children
157
- }
158
- )
179
+ ref,
180
+ design,
181
+ intent,
182
+ className,
183
+ "aria-label": buttonProps["aria-label"],
184
+ ...buttonProps,
185
+ disabled: rest.disabled || buttonProps.disabled,
186
+ children: children || /* @__PURE__ */ jsx2(Icon, { children: /* @__PURE__ */ jsx2(Minus, {}) })
187
+ }
188
+ ) });
189
+ };
190
+ var StepperIncrementButton = Object.assign(IncrementButton, {
191
+ id: "TrailingAddon"
192
+ });
193
+ var StepperDecrementButton = Object.assign(DecrementButton, {
194
+ id: "LeadingAddon"
195
+ });
196
+ IncrementButton.displayName = "Stepper.DecrementButton";
197
+ DecrementButton.displayName = "Stepper.DecrementButton";
198
+
199
+ // src/stepper/StepperInput.tsx
200
+ import { useMergeRefs } from "@spark-ui/hooks/use-merge-refs";
201
+ import { jsx as jsx3 } from "react/jsx-runtime";
202
+ var Input2 = ({ ref: forwardedRef, ...props }) => {
203
+ const { inputRef, inputProps } = useStepperContext();
204
+ const ref = useMergeRefs(forwardedRef, inputRef);
205
+ const { className = "", ...remainingProps } = props;
206
+ return /* @__PURE__ */ jsx3(
207
+ Input,
208
+ {
209
+ ref,
210
+ ...remainingProps,
211
+ ...inputProps,
212
+ className: `min-w-sz-56 text-center ${className}`
159
213
  }
160
214
  );
161
215
  };
162
- Root.displayName = "Stepper";
216
+ var StepperInput = Object.assign(Input2, {
217
+ id: "Input"
218
+ });
219
+ Input2.displayName = "Stepper.Input";
163
220
 
164
221
  // src/stepper/index.ts
165
- var Stepper = Object.assign(Root, { IncrementButton: Increment, DecrementButton: Decrement, Input });
166
- Stepper.displayName = "Stepper";
167
- Increment.displayName = "Stepper.IncrementButton";
168
- Decrement.displayName = "Stepper.DecrementButton";
169
- Input.displayName = "Stepper.Input";
222
+ var Stepper2 = Object.assign(Stepper, { IncrementButton: StepperIncrementButton, DecrementButton: StepperDecrementButton, Input: StepperInput });
223
+ Stepper2.displayName = "Stepper";
224
+ StepperIncrementButton.displayName = "Stepper.IncrementButton";
225
+ StepperDecrementButton.displayName = "Stepper.DecrementButton";
226
+ StepperInput.displayName = "Stepper.Input";
170
227
  export {
171
- Stepper
228
+ Stepper2 as Stepper
172
229
  };
173
230
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/stepper/Buttons.tsx","../../src/stepper/useRenderSlot.tsx","../../src/stepper/Input.tsx","../../src/stepper/Root.tsx","../../src/stepper/index.ts"],"sourcesContent":["import { NumberField } from '@base-ui-components/react/number-field'\nimport { Minus } from '@spark-ui/icons/Minus'\nimport { Plus } from '@spark-ui/icons/Plus'\nimport { cva } from 'class-variance-authority'\nimport { ComponentProps, ReactNode } from 'react'\n\nimport { Icon } from '../icon'\nimport { useRenderSlot } from './useRenderSlot'\n\nconst styles = cva(\n [\n // Base styles\n 'border-outline border-sm min-w-sz-44 text-on-surface flex cursor-pointer items-center justify-center bg-clip-padding select-none',\n 'hover:bg-neutral/dim-5',\n // Disabled and ReadOnly styles\n 'disabled:bg-on-surface/dim-5 disabled:text-on-surface/dim-3 disabled:cursor-not-allowed',\n 'data-[disabled]:bg-on-surface/dim-5 data-[disabled]:text-on-surface/dim-3 data-[disabled]:cursor-not-allowed',\n 'data-[readonly]:bg-on-surface/dim-5 data-[readonly]:text-on-surface/dim-3 data-[readonly]:cursor-not-allowed',\n // State styles\n 'group-data-[field-state=error]:border-error',\n 'group-data-[field-state=alert]:border-alert',\n 'group-data-[field-state=success]:border-success',\n ],\n {\n variants: {\n placement: {\n left: 'rounded-l-lg',\n right: 'rounded-r-lg',\n },\n },\n }\n)\n\ninterface DecrementProps extends Omit<ComponentProps<typeof NumberField.Decrement>, 'render'> {\n children?: ReactNode\n asChild?: boolean\n}\n\ninterface IncrementProps extends Omit<ComponentProps<typeof NumberField.Increment>, 'render'> {\n children?: ReactNode\n asChild?: boolean\n}\n\nexport const Decrement = ({ children, className, asChild = false, ...props }: DecrementProps) => {\n const render = useRenderSlot(asChild, 'div')\n\n return (\n <NumberField.Decrement\n data-spark-component=\"stepper-decrement-button\"\n className={styles({\n placement: 'left',\n className,\n })}\n render={render}\n {...props}\n >\n {children || (\n <Icon>\n <Minus />\n </Icon>\n )}\n </NumberField.Decrement>\n )\n}\n\nexport const Increment = ({ children, className, asChild = false, ...props }: IncrementProps) => {\n const render = useRenderSlot(asChild, 'div')\n\n return (\n <NumberField.Increment\n data-spark-component=\"stepper-increment-button\"\n className={styles({\n placement: 'right',\n className,\n })}\n render={render}\n {...props}\n >\n {children || (\n <Icon>\n <Plus />\n </Icon>\n )}\n </NumberField.Increment>\n )\n}\n\nDecrement.displayName = 'Stepper.DecrementButton'\nIncrement.displayName = 'Stepper.IncrementButton'\n","import { Slot } from '../slot'\n\nexport function useRenderSlot(asChild: boolean, defaultTag: string) {\n const Component = asChild ? Slot : defaultTag\n\n return asChild ? ({ ...props }) => <Component {...props} /> : undefined\n}\n","import { NumberField } from '@base-ui-components/react/number-field'\nimport { useFormFieldControl } from '@spark-ui/components/form-field'\nimport { cx } from 'class-variance-authority'\nimport { ComponentProps, ReactNode } from 'react'\n\ninterface Props extends Omit<ComponentProps<typeof NumberField.Input>, 'render'> {\n children?: ReactNode\n}\n\nexport const Input = ({ className, ...props }: Props) => {\n const field = useFormFieldControl()\n\n return (\n <NumberField.Input\n data-spark-component=\"stepper-input\"\n className={cx(\n // Base styles\n 'bg-surface text-on-surface px-lg h-sz-44 border-y-sm border-outline relative inline-flex w-full text-center',\n 'first:border-l-sm first:rounded-l-lg',\n 'last:border-r-sm last:rounded-r-lg',\n // State styles\n 'group-data-[field-state=error]:border-error',\n 'group-data-[field-state=alert]:border-alert',\n 'group-data-[field-state=success]:border-success',\n '',\n // Disabled and ReadOnly styles\n 'data-[disabled]:bg-on-surface/dim-5 data-[disabled]:text-on-surface/dim-3 data-[disabled]:cursor-not-allowed',\n 'data-[readonly]:bg-on-surface/dim-5',\n // Focus styles\n 'focus:outline-outline-high focus:z-raised focus:outline-2 focus:-outline-offset-1',\n className\n )}\n {...(field.description && { 'aria-describedby': field.description })}\n {...(field.isRequired && { required: true })}\n {...(field.state === 'error' && { 'aria-invalid': true })}\n {...props}\n />\n )\n}\n\nInput.displayName = 'Stepper.InputButton'\n","import { NumberField } from '@base-ui-components/react/number-field'\nimport { useFormFieldControl } from '@spark-ui/components/form-field'\nimport { cx } from 'class-variance-authority'\n\nimport { StepperProps } from './types'\nimport { useRenderSlot } from './useRenderSlot'\n\nexport const Root = ({\n children,\n allowWheelScrub = true,\n state: stateProp,\n minValue,\n maxValue,\n formatOptions,\n step: stepProp,\n className,\n ...props\n}: StepperProps) => {\n const render = useRenderSlot(true, 'div')\n\n const field = useFormFieldControl()\n const state = field.state ?? stateProp\n\n /**\n * By default, a percent format will increment in steps of 1 (100% on each increment)\n */\n const step = stepProp == null && formatOptions?.style === 'percent' ? 0.01 : stepProp\n\n return (\n <NumberField.Root\n data-spark-component=\"stepper\"\n allowWheelScrub={allowWheelScrub}\n render={render}\n min={minValue}\n max={maxValue}\n format={formatOptions}\n step={step}\n {...(field.id && { id: field.id })}\n {...props}\n >\n <NumberField.Group\n className={cx('group relative inline-flex w-full', className)}\n data-field-state={state}\n >\n {children}\n </NumberField.Group>\n </NumberField.Root>\n )\n}\n\nRoot.displayName = 'Stepper'\n","import { Decrement as DecrementButton, Increment as IncrementButton } from './Buttons'\nimport { Input } from './Input'\nimport { Root } from './Root'\n\nexport const Stepper: typeof Root & {\n IncrementButton: typeof IncrementButton\n DecrementButton: typeof DecrementButton\n Input: typeof Input\n} = Object.assign(Root, { IncrementButton, DecrementButton, Input })\n\nStepper.displayName = 'Stepper'\nIncrementButton.displayName = 'Stepper.IncrementButton'\nDecrementButton.displayName = 'Stepper.DecrementButton'\nInput.displayName = 'Stepper.Input'\n\nexport type { StepperProps, StepperButtonProps, StepperInputProps } from './types'\n"],"mappings":"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","names":["jsx","NumberField","jsx","NumberField","useFormFieldControl","cx","jsx","useFormFieldControl","NumberField","cx"]}
1
+ {"version":3,"sources":["../../src/stepper/Stepper.tsx","../../src/stepper/useStepper.ts","../../src/stepper/StepperButton.tsx","../../src/stepper/StepperInput.tsx","../../src/stepper/index.ts"],"sourcesContent":["import { useFormFieldControl } from '@spark-ui/components/form-field'\nimport { createContext, type PropsWithChildren, RefObject, useContext, useRef } from 'react'\n\nimport { InputGroup } from '../input'\nimport type { StepperProps, UseStepperReturn } from './types'\nimport { useStepper } from './useStepper'\n\nconst StepperContext = createContext<\n (Omit<UseStepperReturn, 'groupProps'> & { inputRef: RefObject<HTMLInputElement | null> }) | null\n>(null)\n\nexport const Stepper = ({\n children,\n formatOptions,\n minValue,\n maxValue,\n ref: forwardedRef,\n ...stepperProps\n}: PropsWithChildren<StepperProps>) => {\n const inputRef = useRef<HTMLInputElement>(null)\n\n const {\n groupProps,\n inputProps: _inputProps,\n incrementButtonProps: _incrementButtonProps,\n decrementButtonProps: _decrementButtonProps,\n } = useStepper({\n ...{\n ...stepperProps,\n /**\n * To enable the possibility to init the stepper with empty (undefined) value,\n * we need to force the empty value to NaN.\n * Cf. https://github.com/adobe/react-spectrum/issues/5524\n */\n ...('value' in stepperProps && { value: stepperProps.value ?? NaN }),\n onChange: stepperProps.onValueChange,\n },\n formatOptions,\n minValue,\n maxValue,\n inputRef,\n })\n\n const formFieldControlProps = useFormFieldControl()\n const isWrappedInFormField = !!formFieldControlProps.id\n\n const incrementButtonProps = {\n ..._incrementButtonProps,\n ...(isWrappedInFormField && { 'aria-controls': formFieldControlProps.id }),\n }\n\n const decrementButtonProps = {\n ..._decrementButtonProps,\n ...(isWrappedInFormField && { 'aria-controls': formFieldControlProps.id }),\n }\n\n const inputProps = {\n ..._inputProps,\n ...(isWrappedInFormField && {\n id: formFieldControlProps.id,\n required: formFieldControlProps.isRequired,\n 'aria-invalid': formFieldControlProps.isInvalid ? true : undefined,\n }),\n }\n\n const { onValueChange: _, ...remainingStepperProps } = stepperProps\n\n return (\n <StepperContext.Provider\n value={{ incrementButtonProps, decrementButtonProps, inputProps, inputRef }}\n >\n <InputGroup\n {...remainingStepperProps}\n {...groupProps}\n data-spark-component=\"stepper\"\n ref={forwardedRef}\n >\n {children}\n </InputGroup>\n </StepperContext.Provider>\n )\n}\n\nStepper.displayName = 'Stepper'\n\nexport const useStepperContext = () => {\n const context = useContext(StepperContext)\n\n if (!context) {\n throw Error('useStepperContext must be used within a Stepper provider')\n }\n\n return context\n}\n","import { useNumberField } from '@react-aria/numberfield'\nimport { useNumberFieldState } from '@react-stately/numberfield'\n\nimport type { UseStepperArgs, UseStepperReturn } from './types'\n\nexport const useStepper = ({\n inputRef,\n locale = 'fr',\n ...rest\n}: UseStepperArgs): UseStepperReturn => {\n const state = useNumberFieldState({\n ...rest,\n isDisabled: rest.disabled,\n isReadOnly: rest.readOnly,\n isRequired: rest.required,\n locale,\n })\n\n const { groupProps, inputProps, incrementButtonProps, decrementButtonProps } = useNumberField(\n {\n isWheelDisabled: false,\n ...rest,\n isDisabled: rest.disabled,\n isReadOnly: rest.readOnly,\n isRequired: rest.required,\n },\n state,\n inputRef\n )\n\n return {\n groupProps,\n inputProps,\n incrementButtonProps,\n decrementButtonProps,\n }\n}\n","import { useButton } from '@react-aria/button'\nimport { Minus } from '@spark-ui/icons/Minus'\nimport { Plus } from '@spark-ui/icons/Plus'\nimport { type PropsWithChildren, useRef } from 'react'\n\nimport { Icon } from '../icon'\nimport { IconButton } from '../icon-button'\nimport { InputGroup } from '../input'\nimport { useStepperContext } from './Stepper'\nimport type { StepperButtonProps } from './types'\n\nconst IncrementButton = ({\n children,\n design = 'ghost',\n intent = 'neutral',\n className,\n ref: forwardedRef,\n ...rest\n}: PropsWithChildren<StepperButtonProps>) => {\n const innerRef = useRef<HTMLButtonElement>(null)\n const ref = forwardedRef && typeof forwardedRef !== 'function' ? forwardedRef : innerRef\n\n const { incrementButtonProps } = useStepperContext()\n const { buttonProps } = useButton({ ...incrementButtonProps, ...rest }, ref)\n\n return (\n <InputGroup.TrailingAddon asChild data-spark-component=\"stepper-increment-button\">\n <IconButton\n ref={ref}\n design={design}\n intent={intent}\n className={className}\n aria-label={buttonProps['aria-label'] as string}\n {...buttonProps}\n disabled={rest.disabled || buttonProps.disabled}\n >\n {children || (\n <Icon>\n <Plus />\n </Icon>\n )}\n </IconButton>\n </InputGroup.TrailingAddon>\n )\n}\n\nconst DecrementButton = ({\n children,\n design = 'ghost',\n intent = 'neutral',\n className,\n ref: forwardedRef,\n ...rest\n}: PropsWithChildren<StepperButtonProps>) => {\n const innerRef = useRef<HTMLButtonElement>(null)\n const ref = forwardedRef && typeof forwardedRef !== 'function' ? forwardedRef : innerRef\n\n const { decrementButtonProps } = useStepperContext()\n const { buttonProps } = useButton({ ...decrementButtonProps, ...rest }, ref)\n\n return (\n <InputGroup.LeadingAddon asChild data-spark-component=\"stepper-decrement-button\">\n <IconButton\n ref={ref}\n design={design}\n intent={intent}\n className={className}\n aria-label={buttonProps['aria-label'] as string}\n {...buttonProps}\n disabled={rest.disabled || buttonProps.disabled}\n >\n {children || (\n <Icon>\n <Minus />\n </Icon>\n )}\n </IconButton>\n </InputGroup.LeadingAddon>\n )\n}\n\nexport const StepperIncrementButton = Object.assign(IncrementButton, {\n id: 'TrailingAddon',\n})\n\nexport const StepperDecrementButton = Object.assign(DecrementButton, {\n id: 'LeadingAddon',\n})\n\nIncrementButton.displayName = 'Stepper.DecrementButton'\nDecrementButton.displayName = 'Stepper.DecrementButton'\n","import { useMergeRefs } from '@spark-ui/hooks/use-merge-refs'\n\nimport { Input as SparkInput } from '../input'\nimport { useStepperContext } from './Stepper'\nimport type { StepperInputProps } from './types'\n\nconst Input = ({ ref: forwardedRef, ...props }: StepperInputProps) => {\n const { inputRef, inputProps } = useStepperContext()\n const ref = useMergeRefs(forwardedRef, inputRef)\n const { className = '', ...remainingProps } = props\n\n return (\n <SparkInput\n ref={ref}\n {...remainingProps}\n {...inputProps}\n className={`min-w-sz-56 text-center ${className}`}\n />\n )\n}\n\nexport const StepperInput = Object.assign(Input, {\n id: 'Input',\n})\n\nInput.displayName = 'Stepper.Input'\n","import { Stepper as Root } from './Stepper'\nimport {\n StepperDecrementButton as DecrementButton,\n StepperIncrementButton as IncrementButton,\n} from './StepperButton'\nimport { StepperInput as Input } from './StepperInput'\n\nexport const Stepper: typeof Root & {\n IncrementButton: typeof IncrementButton\n DecrementButton: typeof DecrementButton\n Input: typeof Input\n} = Object.assign(Root, { IncrementButton, DecrementButton, Input })\n\nStepper.displayName = 'Stepper'\nIncrementButton.displayName = 'Stepper.IncrementButton'\nDecrementButton.displayName = 'Stepper.DecrementButton'\nInput.displayName = 'Stepper.Input'\n\nexport type { StepperProps, StepperButtonProps, StepperInputProps } from './types'\n"],"mappings":"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","names":["useRef","jsx","useRef","jsx","Input","Stepper"]}
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ComponentPropsWithoutRef, Ref, PropsWithChildren } from 'react';
3
- import { I as InputGroupProps, a as InputLeadingIconProps, b as InputTrailingIconProps } from '../InputTrailingIcon-DzmwLGtX.mjs';
4
- import { I as InputProps } from '../Input-g0LpWuv0.mjs';
3
+ import { I as InputGroupProps, a as InputProps } from '../Input-N8AWWSmt.mjs';
4
+ import { I as InputLeadingIconProps, a as InputTrailingIconProps } from '../InputTrailingIcon-BBp7sE6D.mjs';
5
5
  import 'class-variance-authority/types';
6
6
  import 'class-variance-authority';
7
7
  import '../icon/index.mjs';
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ComponentPropsWithoutRef, Ref, PropsWithChildren } from 'react';
3
- import { I as InputGroupProps, a as InputLeadingIconProps, b as InputTrailingIconProps } from '../InputTrailingIcon-CZD9hydv.js';
4
- import { I as InputProps } from '../Input-g0LpWuv0.js';
3
+ import { I as InputGroupProps, a as InputProps } from '../Input-N8AWWSmt.js';
4
+ import { I as InputLeadingIconProps, a as InputTrailingIconProps } from '../InputTrailingIcon-ZZx8PoJy.js';
5
5
  import 'class-variance-authority/types';
6
6
  import 'class-variance-authority';
7
7
  import '../icon/index.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spark-ui/components",
3
- "version": "10.19.3",
3
+ "version": "10.20.0",
4
4
  "license": "MIT",
5
5
  "description": "Spark (Leboncoin design system) components.",
6
6
  "exports": {
@@ -49,11 +49,13 @@
49
49
  "dependencies": {
50
50
  "@base-ui-components/react": "^1.0.0-beta.3",
51
51
  "@react-aria/button": "3.13.0",
52
+ "@react-aria/numberfield": "3.11.13",
52
53
  "@react-aria/toast": "^3.0.0-beta.18",
54
+ "@react-stately/numberfield": "3.9.11",
53
55
  "@react-stately/toast": "^3.0.0-beta.7",
54
- "@spark-ui/hooks": "^10.19.3",
55
- "@spark-ui/icons": "^10.19.3",
56
- "@spark-ui/internal-utils": "^10.19.3",
56
+ "@spark-ui/hooks": "^10.20.0",
57
+ "@spark-ui/icons": "^10.20.0",
58
+ "@spark-ui/internal-utils": "^10.20.0",
57
59
  "@zag-js/pagination": "1.25.0",
58
60
  "@zag-js/react": "1.25.0",
59
61
  "class-variance-authority": "0.7.1",
@@ -80,5 +82,5 @@
80
82
  "url": "https://github.com/leboncoin/spark-web/issues?q=is%3Aopen+label%3A%22Component%3A+button%22"
81
83
  },
82
84
  "homepage": "https://sparkui.vercel.app",
83
- "gitHead": "2bf71247a88874257530eb1a926c3b5b757fca96"
85
+ "gitHead": "17a89ca6572d8f8969dc4dac32e6d180bee6c34f"
84
86
  }
@@ -1,17 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { ComponentPropsWithoutRef, Ref } from 'react';
3
-
4
- type InputPrimitiveProps = ComponentPropsWithoutRef<'input'>;
5
- interface InputProps extends InputPrimitiveProps {
6
- asChild?: boolean;
7
- onValueChange?: (value: string) => void;
8
- ref?: Ref<HTMLInputElement>;
9
- }
10
- declare const Input: {
11
- ({ className, asChild, onValueChange, onChange, onKeyDown, disabled: disabledProp, readOnly: readOnlyProp, ref, ...others }: InputProps): react_jsx_runtime.JSX.Element;
12
- displayName: string;
13
- } & {
14
- id: string;
15
- };
16
-
17
- export { type InputProps as I, Input as a };
@@ -1,17 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { ComponentPropsWithoutRef, Ref } from 'react';
3
-
4
- type InputPrimitiveProps = ComponentPropsWithoutRef<'input'>;
5
- interface InputProps extends InputPrimitiveProps {
6
- asChild?: boolean;
7
- onValueChange?: (value: string) => void;
8
- ref?: Ref<HTMLInputElement>;
9
- }
10
- declare const Input: {
11
- ({ className, asChild, onValueChange, onChange, onKeyDown, disabled: disabledProp, readOnly: readOnlyProp, ref, ...others }: InputProps): react_jsx_runtime.JSX.Element;
12
- displayName: string;
13
- } & {
14
- id: string;
15
- };
16
-
17
- export { type InputProps as I, Input as a };