@yamada-ui/checkbox 1.3.0 → 1.3.1-dev-20241201045027

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 (42) hide show
  1. package/dist/checkbox-card-group.js +78 -44
  2. package/dist/checkbox-card-group.js.map +1 -1
  3. package/dist/checkbox-card-group.mjs +5 -5
  4. package/dist/checkbox-card.js +78 -44
  5. package/dist/checkbox-card.js.map +1 -1
  6. package/dist/checkbox-card.mjs +3 -3
  7. package/dist/checkbox-group.js +78 -44
  8. package/dist/checkbox-group.js.map +1 -1
  9. package/dist/checkbox-group.mjs +4 -4
  10. package/dist/checkbox.d.mts +16 -0
  11. package/dist/checkbox.d.ts +16 -0
  12. package/dist/checkbox.js +78 -44
  13. package/dist/checkbox.js.map +1 -1
  14. package/dist/checkbox.mjs +2 -2
  15. package/dist/{chunk-YKJPEUZC.mjs → chunk-A2JXM6CV.mjs} +67 -37
  16. package/dist/chunk-A2JXM6CV.mjs.map +1 -0
  17. package/dist/{chunk-4RRLZHGB.mjs → chunk-AMQ63CU2.mjs} +3 -3
  18. package/dist/{chunk-T4XJ55LG.mjs → chunk-D2MZMI2W.mjs} +3 -3
  19. package/dist/{chunk-LSEGOUL4.mjs → chunk-KRCEAKWH.mjs} +14 -10
  20. package/dist/chunk-KRCEAKWH.mjs.map +1 -0
  21. package/dist/{chunk-LDQSOOV2.mjs → chunk-LF6W4EB7.mjs} +3 -3
  22. package/dist/{chunk-3D6OL2QO.mjs → chunk-PH5Y6VMS.mjs} +1 -1
  23. package/dist/chunk-PH5Y6VMS.mjs.map +1 -0
  24. package/dist/index.js +78 -44
  25. package/dist/index.js.map +1 -1
  26. package/dist/index.mjs +6 -6
  27. package/dist/use-checkbox-group.d.mts +2 -0
  28. package/dist/use-checkbox-group.d.ts +2 -0
  29. package/dist/use-checkbox-group.js.map +1 -1
  30. package/dist/use-checkbox-group.mjs +1 -1
  31. package/dist/use-checkbox.d.mts +51 -1
  32. package/dist/use-checkbox.d.ts +51 -1
  33. package/dist/use-checkbox.js +66 -36
  34. package/dist/use-checkbox.js.map +1 -1
  35. package/dist/use-checkbox.mjs +1 -1
  36. package/package.json +1 -1
  37. package/dist/chunk-3D6OL2QO.mjs.map +0 -1
  38. package/dist/chunk-LSEGOUL4.mjs.map +0 -1
  39. package/dist/chunk-YKJPEUZC.mjs.map +0 -1
  40. /package/dist/{chunk-4RRLZHGB.mjs.map → chunk-AMQ63CU2.mjs.map} +0 -0
  41. /package/dist/{chunk-T4XJ55LG.mjs.map → chunk-D2MZMI2W.mjs.map} +0 -0
  42. /package/dist/{chunk-LDQSOOV2.mjs.map → chunk-LF6W4EB7.mjs.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/use-checkbox.ts"],"sourcesContent":["import type { PropGetter } from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport type { Dict } from \"@yamada-ui/utils\"\nimport type {\n ChangeEvent,\n ChangeEventHandler,\n FocusEventHandler,\n KeyboardEvent,\n SyntheticEvent,\n} from \"react\"\nimport {\n formControlProperties,\n useFormControlProps,\n} from \"@yamada-ui/form-control\"\nimport { trackFocusVisible } from \"@yamada-ui/use-focus-visible\"\nimport {\n dataAttr,\n handlerAll,\n mergeRefs,\n splitObject,\n useCallbackRef,\n useSafeLayoutEffect,\n useUpdateEffect,\n} from \"@yamada-ui/utils\"\nimport { useCallback, useEffect, useId, useRef, useState } from \"react\"\n\nexport interface UseCheckboxProps<Y extends number | string = string>\n extends FormControlOptions {\n /**\n * id assigned to input.\n */\n id?: string\n /**\n * The HTML `name` attribute used for forms.\n */\n name?: string\n /**\n * If `true`, the checkbox will be checked.\n *\n * @default false\n */\n checked?: boolean\n /**\n * If `true`, the checkbox will be initially checked.\n *\n * @default false\n */\n defaultChecked?: boolean\n /**\n * If `true`, the checkbox will be initially checked.\n *\n * @default false\n *\n * @deprecated Use `defaultChecked` instead.\n */\n defaultIsChecked?: boolean\n /**\n * If `true`, the checkbox will be indeterminate.\n *\n * @default false\n */\n indeterminate?: boolean\n /**\n * If `true`, the checkbox will be checked.\n *\n * @default false\n *\n * @deprecated Use `checked` instead.\n */\n isChecked?: boolean\n /**\n * If `true`, the checkbox will be indeterminate.\n *\n * @default false\n *\n * @deprecated Use `indeterminate` instead.\n */\n isIndeterminate?: boolean\n /**\n * If `true`, the checkbox will be selected when the Enter key is pressed.\n *\n * @default false\n */\n selectOnEnter?: boolean\n /**\n * The tab-index property of the underlying input element.\n */\n tabIndex?: number\n /**\n * The value to be used in the checkbox input.\n */\n value?: Y\n /**\n * The callback invoked when the checkbox is blurred.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>\n /**\n * The callback invoked when the checked state changes.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>\n /**\n * The callback invoked when the checkbox is focused.\n */\n onFocus?: FocusEventHandler<HTMLInputElement>\n}\n\nexport const useCheckbox = <\n Y extends number | string = string,\n M extends Dict = Dict,\n>({\n id,\n ...props\n}: M & UseCheckboxProps<Y>) => {\n const uuid = useId()\n\n id ??= uuid\n\n let {\n id: _id,\n name,\n checked: checkedProp,\n defaultChecked,\n defaultIsChecked,\n indeterminate,\n isChecked: isCheckedProp,\n isIndeterminate,\n selectOnEnter,\n tabIndex,\n value,\n onChange: onChangeProp,\n ...computedProps\n } = useFormControlProps({ id, ...props })\n\n checkedProp ??= isCheckedProp\n indeterminate ??= isIndeterminate\n defaultChecked ??= defaultIsChecked\n\n const [\n {\n \"aria-readonly\": _ariaReadonly,\n disabled,\n readOnly,\n required,\n onBlur: onBlurProp,\n onFocus: onFocusProp,\n ...formControlProps\n },\n rest,\n ] = splitObject(computedProps, formControlProperties)\n\n const [focusVisible, setFocusVisible] = useState<boolean>(false)\n const [focused, setFocused] = useState<boolean>(false)\n const [hovered, setHovered] = useState<boolean>(false)\n const [active, setActive] = useState<boolean>(false)\n\n const inputRef = useRef<HTMLInputElement>(null)\n const [label, setLabel] = useState<boolean>(true)\n\n const [isChecked, setIsChecked] = useState<boolean>(!!defaultChecked)\n\n const controlled = checkedProp !== undefined\n const checked = controlled ? (checkedProp as boolean) : isChecked\n\n const onChange = useCallbackRef(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (readOnly || disabled) {\n ev.preventDefault()\n\n return\n }\n\n if (!controlled)\n setIsChecked(!checked || indeterminate ? true : ev.target.checked)\n\n onChangeProp?.(ev)\n },\n [readOnly, disabled, controlled, checked, indeterminate],\n )\n const onFocus = useCallbackRef(onFocusProp)\n const onBlur = useCallbackRef(onBlurProp)\n\n const onKeyDown = useCallback(\n ({ key }: KeyboardEvent) => {\n if (key === \" \") setActive(true)\n\n if (selectOnEnter && key === \"Enter\") inputRef.current?.click()\n },\n [setActive, selectOnEnter],\n )\n\n const onKeyUp = useCallback(\n ({ key }: KeyboardEvent) => {\n if (key === \" \") setActive(false)\n },\n [setActive],\n )\n\n useEffect(() => {\n return trackFocusVisible(setFocusVisible)\n }, [])\n\n useSafeLayoutEffect(() => {\n if (inputRef.current)\n inputRef.current.indeterminate = Boolean(isIndeterminate)\n }, [isIndeterminate])\n\n useUpdateEffect(() => {\n if (disabled) setFocused(false)\n }, [disabled, setFocused])\n\n useSafeLayoutEffect(() => {\n if (!inputRef.current?.form) return\n\n inputRef.current.form.onreset = () => setIsChecked(!!defaultChecked)\n }, [])\n\n useSafeLayoutEffect(() => {\n if (!inputRef.current) return\n\n if (inputRef.current.checked !== checked)\n setIsChecked(inputRef.current.checked)\n }, [inputRef.current])\n\n const getContainerProps: PropGetter<\"label\"> = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n ref: mergeRefs(ref, (el: HTMLElement | undefined) => {\n if (el) setLabel(el.tagName === \"LABEL\")\n }),\n \"data-checked\": dataAttr(checked),\n \"data-focus\": dataAttr(focused),\n \"data-focus-visible\": dataAttr(focused && focusVisible),\n onClick: handlerAll(props.onClick, () => {\n if (label) return\n\n inputRef.current?.click()\n\n requestAnimationFrame(() => inputRef.current?.focus())\n }),\n }),\n [checked, label, focused, focusVisible, formControlProps],\n )\n\n const getIconProps: PropGetter = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n ref,\n \"aria-hidden\": true,\n \"data-active\": dataAttr(active),\n \"data-checked\": dataAttr(checked),\n \"data-focus\": dataAttr(focused),\n \"data-focus-visible\": dataAttr(focused && focusVisible),\n \"data-hover\": dataAttr(hovered),\n \"data-indeterminate\": dataAttr(indeterminate),\n onMouseDown: handlerAll(props.onMouseDown, (ev: React.MouseEvent) => {\n if (focused) ev.preventDefault()\n\n setActive(true)\n }),\n onMouseEnter: handlerAll(props.onMouseEnter, () => setHovered(true)),\n onMouseLeave: handlerAll(props.onMouseLeave, () => setHovered(false)),\n onMouseUp: handlerAll(props.onMouseUp, () => setActive(false)),\n }),\n [\n active,\n checked,\n focused,\n hovered,\n focusVisible,\n indeterminate,\n formControlProps,\n ],\n )\n\n const getInputProps: PropGetter<\"input\"> = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n id,\n ref: mergeRefs(inputRef, ref),\n type: \"checkbox\",\n name,\n style: {\n border: \"0px\",\n clip: \"rect(0px, 0px, 0px, 0px)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0px\",\n position: \"absolute\",\n whiteSpace: \"nowrap\",\n width: \"1px\",\n },\n \"aria-checked\": indeterminate ? \"mixed\" : checked,\n checked,\n disabled,\n readOnly,\n required,\n tabIndex,\n value,\n onBlur: handlerAll(props.onBlur, onBlur, () => setFocused(false)),\n onChange: handlerAll(props.onChange, onChange),\n onFocus: handlerAll(props.onFocus, onFocus, () => setFocused(true)),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n onKeyUp: handlerAll(props.onKeyUp, onKeyUp),\n }),\n [\n indeterminate,\n formControlProps,\n id,\n name,\n value,\n tabIndex,\n required,\n disabled,\n readOnly,\n checked,\n onChange,\n onBlur,\n onFocus,\n onKeyDown,\n onKeyUp,\n ],\n )\n\n const getLabelProps: PropGetter = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n ref,\n \"data-checked\": dataAttr(checked),\n onMouseDown: handlerAll(props.onMouseDown, (ev: SyntheticEvent) => {\n ev.preventDefault()\n ev.stopPropagation()\n }),\n onTouchStart: handlerAll(props.onTouchStart, (ev: SyntheticEvent) => {\n ev.preventDefault()\n ev.stopPropagation()\n }),\n }),\n [checked, formControlProps],\n )\n\n return {\n active,\n checked,\n focused,\n focusVisible,\n hovered,\n indeterminate,\n /**\n * @deprecated Use `active` instead.\n */\n isActive: active,\n /**\n * @deprecated Use `checked` instead.\n */\n isChecked: checked,\n /**\n * @deprecated Use `focused` instead.\n */\n isFocused: focused,\n /**\n * @deprecated Use `focusVisible` instead.\n */\n isFocusVisible: focusVisible,\n /**\n * @deprecated Use `hovered` instead.\n */\n isHovered: hovered,\n /**\n * @deprecated Use `indeterminate` instead.\n */\n isIndeterminate,\n props: rest,\n getContainerProps,\n getIconProps,\n getInputProps,\n getLabelProps,\n }\n}\n\nexport type UseCheckboxReturn = ReturnType<typeof useCheckbox>\n"],"mappings":"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","names":["props","_a"]}
@@ -1,10 +1,10 @@
1
1
  "use client"
2
2
  import {
3
3
  CheckboxCard
4
- } from "./chunk-T4XJ55LG.mjs";
4
+ } from "./chunk-D2MZMI2W.mjs";
5
5
  import {
6
6
  useCheckboxGroup
7
- } from "./chunk-3D6OL2QO.mjs";
7
+ } from "./chunk-PH5Y6VMS.mjs";
8
8
  import {
9
9
  CheckboxCardGroupProvider
10
10
  } from "./chunk-2VDJDPFI.mjs";
@@ -85,4 +85,4 @@ CheckboxCardGroup.__ui__ = "CheckboxCardGroup";
85
85
  export {
86
86
  CheckboxCardGroup
87
87
  };
88
- //# sourceMappingURL=chunk-4RRLZHGB.mjs.map
88
+ //# sourceMappingURL=chunk-AMQ63CU2.mjs.map
@@ -10,10 +10,10 @@ import {
10
10
  } from "./chunk-7QPJ25CW.mjs";
11
11
  import {
12
12
  CheckboxIcon
13
- } from "./chunk-LSEGOUL4.mjs";
13
+ } from "./chunk-KRCEAKWH.mjs";
14
14
  import {
15
15
  useCheckbox
16
- } from "./chunk-YKJPEUZC.mjs";
16
+ } from "./chunk-A2JXM6CV.mjs";
17
17
  import {
18
18
  CheckboxCardProvider,
19
19
  useCheckboxCardGroupContext
@@ -142,4 +142,4 @@ CheckboxCard.__ui__ = "CheckboxCard";
142
142
  export {
143
143
  CheckboxCard
144
144
  };
145
- //# sourceMappingURL=chunk-T4XJ55LG.mjs.map
145
+ //# sourceMappingURL=chunk-D2MZMI2W.mjs.map
@@ -1,7 +1,7 @@
1
1
  "use client"
2
2
  import {
3
3
  useCheckbox
4
- } from "./chunk-YKJPEUZC.mjs";
4
+ } from "./chunk-A2JXM6CV.mjs";
5
5
  import {
6
6
  useCheckboxGroupContext
7
7
  } from "./chunk-2VDJDPFI.mjs";
@@ -40,8 +40,8 @@ var Checkbox = forwardRef(
40
40
  const isCheckedProp = groupValue && computedProps.value ? groupValue.includes(computedProps.value) : computedProps.isChecked;
41
41
  const onChange = groupProps.onChange && computedProps.value ? funcAll(groupProps.onChange, computedProps.onChange) : computedProps.onChange;
42
42
  const {
43
- isChecked,
44
- isIndeterminate,
43
+ checked,
44
+ indeterminate,
45
45
  props: rest,
46
46
  getContainerProps,
47
47
  getIconProps,
@@ -58,15 +58,15 @@ var Checkbox = forwardRef(
58
58
  });
59
59
  const { children: customIcon, ...resolvedIconProps } = { ...iconProps };
60
60
  const icon = cloneElement(customIcon != null ? customIcon : /* @__PURE__ */ jsx(CheckboxIcon, {}), {
61
- isChecked,
61
+ checked,
62
+ indeterminate,
62
63
  isDisabled,
63
- isIndeterminate,
64
64
  isInvalid,
65
65
  isReadOnly,
66
66
  isRequired,
67
67
  __css: {
68
- opacity: isChecked || isIndeterminate ? 1 : 0,
69
- transform: isChecked || isIndeterminate ? "scale(1)" : "scale(0.95)",
68
+ opacity: checked || indeterminate ? 1 : 0,
69
+ transform: checked || indeterminate ? "scale(1)" : "scale(0.95)",
70
70
  transitionDuration: "normal",
71
71
  transitionProperty: "transform"
72
72
  }
@@ -125,6 +125,8 @@ var Checkbox = forwardRef(
125
125
  Checkbox.displayName = "Checkbox";
126
126
  Checkbox.__ui__ = "Checkbox";
127
127
  var CheckboxIcon = ({
128
+ checked,
129
+ indeterminate,
128
130
  isChecked,
129
131
  isDisabled: _isDisabled,
130
132
  isIndeterminate,
@@ -133,7 +135,9 @@ var CheckboxIcon = ({
133
135
  isRequired: _isRequired,
134
136
  ...rest
135
137
  }) => {
136
- return /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: isIndeterminate || isChecked ? /* @__PURE__ */ jsx(
138
+ checked != null ? checked : checked = isChecked;
139
+ indeterminate != null ? indeterminate : indeterminate = isIndeterminate;
140
+ return /* @__PURE__ */ jsx(AnimatePresence, { initial: false, children: indeterminate || checked ? /* @__PURE__ */ jsx(
137
141
  ui.div,
138
142
  {
139
143
  __css: {
@@ -157,7 +161,7 @@ var CheckboxIcon = ({
157
161
  checked: { scale: 1 },
158
162
  unchecked: { scale: 0.5 }
159
163
  },
160
- children: isIndeterminate ? /* @__PURE__ */ jsx(CheckboxIndeterminateIcon, { ...rest }) : /* @__PURE__ */ jsx(CheckboxCheckIcon, { ...rest })
164
+ children: indeterminate ? /* @__PURE__ */ jsx(CheckboxIndeterminateIcon, { ...rest }) : /* @__PURE__ */ jsx(CheckboxCheckIcon, { ...rest })
161
165
  }
162
166
  )
163
167
  }
@@ -228,4 +232,4 @@ export {
228
232
  Checkbox,
229
233
  CheckboxIcon
230
234
  };
231
- //# sourceMappingURL=chunk-LSEGOUL4.mjs.map
235
+ //# sourceMappingURL=chunk-KRCEAKWH.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/checkbox.tsx"],"sourcesContent":["import type {\n ComponentArgs,\n FC,\n HTMLUIProps,\n ThemeProps,\n} from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport type { MotionProps } from \"@yamada-ui/motion\"\nimport type { Merge } from \"@yamada-ui/utils\"\nimport type {\n CSSProperties,\n ForwardedRef,\n InputHTMLAttributes,\n ReactElement,\n ReactNode,\n Ref,\n} from \"react\"\nimport type { UseCheckboxProps } from \"./use-checkbox\"\nimport { omitThemeProps, ui, useComponentMultiStyle } from \"@yamada-ui/core\"\nimport { useFormControl } from \"@yamada-ui/form-control\"\nimport { AnimatePresence, motion } from \"@yamada-ui/motion\"\nimport { cx, funcAll } from \"@yamada-ui/utils\"\nimport { cloneElement, forwardRef } from \"react\"\nimport { useCheckboxGroupContext } from \"./checkbox-context\"\nimport { useCheckbox } from \"./use-checkbox\"\n\ninterface CheckboxOptions {\n /**\n * The label of the checkbox.\n */\n label?: ReactNode\n /**\n * Props for icon component.\n */\n iconProps?: { children: ReactElement } & Omit<HTMLUIProps, \"children\">\n /**\n * Props for input element.\n */\n inputProps?: InputHTMLAttributes<HTMLInputElement>\n /**\n * Props for label element.\n */\n labelProps?: HTMLUIProps<\"span\">\n}\n\nexport interface CheckboxProps<Y extends number | string = string>\n extends Omit<Merge<HTMLUIProps<\"label\">, UseCheckboxProps<Y>>, \"checked\">,\n ThemeProps<\"Checkbox\">,\n CheckboxOptions {}\n\n/**\n * `Checkbox` is a component used for allowing users to select multiple values from multiple options.\n *\n * @see Docs https://yamada-ui.com/components/forms/checkbox\n */\nexport const Checkbox = forwardRef(\n <Y extends number | string = string>(\n props: CheckboxProps<Y>,\n ref: ForwardedRef<HTMLInputElement>,\n ) => {\n const group = useCheckboxGroupContext()\n const { value: groupValue, ...groupProps } = { ...group }\n const control = useFormControl(props)\n const [styles, mergedProps] = useComponentMultiStyle(\"Checkbox\", {\n ...groupProps,\n ...props,\n })\n const {\n className,\n children,\n gap = \"0.5rem\",\n isDisabled = groupProps.isDisabled ?? control.isDisabled,\n isInvalid = groupProps.isInvalid ?? control.isInvalid,\n isReadOnly = groupProps.isReadOnly ?? control.isReadOnly,\n isRequired = groupProps.isRequired ?? control.isRequired,\n label,\n iconProps,\n inputProps,\n labelProps,\n ...computedProps\n } = omitThemeProps(mergedProps)\n\n const isCheckedProp =\n groupValue && computedProps.value\n ? groupValue.includes(computedProps.value)\n : computedProps.isChecked\n const onChange =\n groupProps.onChange && computedProps.value\n ? funcAll(groupProps.onChange, computedProps.onChange)\n : computedProps.onChange\n\n const {\n checked,\n indeterminate,\n props: rest,\n getContainerProps,\n getIconProps,\n getInputProps,\n getLabelProps,\n } = useCheckbox({\n ...computedProps,\n isChecked: isCheckedProp,\n isDisabled,\n isInvalid,\n isReadOnly,\n isRequired,\n onChange,\n })\n\n const { children: customIcon, ...resolvedIconProps } = { ...iconProps }\n const icon = cloneElement(customIcon ?? <CheckboxIcon />, {\n checked,\n indeterminate,\n isDisabled,\n isInvalid,\n isReadOnly,\n isRequired,\n __css: {\n opacity: checked || indeterminate ? 1 : 0,\n transform: checked || indeterminate ? \"scale(1)\" : \"scale(0.95)\",\n transitionDuration: \"normal\",\n transitionProperty: \"transform\",\n },\n })\n\n return (\n <ui.label\n className={cx(\"ui-checkbox\", className)}\n {...getContainerProps()}\n __css={{\n alignItems: \"center\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n gap,\n position: \"relative\",\n verticalAlign: \"top\",\n ...styles.container,\n }}\n {...rest}\n >\n <ui.input\n className=\"ui-checkbox__input\"\n {...getInputProps(inputProps, ref)}\n />\n\n <ui.div\n className=\"ui-checkbox__icon\"\n __css={{\n display: \"inline-block\",\n position: \"relative\",\n userSelect: \"none\",\n ...styles.icon,\n }}\n {...getIconProps(resolvedIconProps)}\n >\n {icon}\n </ui.div>\n\n <ui.span\n className=\"ui-checkbox__label\"\n __css={{ ...styles.label }}\n {...getLabelProps(labelProps)}\n >\n {children ?? label}\n </ui.span>\n </ui.label>\n )\n },\n) as {\n <Y extends number | string = string>(\n props: { ref?: Ref<HTMLInputElement> } & CheckboxProps<Y>,\n ): ReactElement\n} & ComponentArgs\n\nCheckbox.displayName = \"Checkbox\"\nCheckbox.__ui__ = \"Checkbox\"\n\nexport type CheckboxIconProps = {\n /**\n * If `true`, the icon will be checked.\n *\n * @default false\n */\n checked?: boolean\n /**\n * If `true`, the icon will be indeterminate.\n *\n * @default false\n */\n indeterminate?: boolean\n /**\n * If `true`, the icon will be checked.\n *\n * @default false\n *\n * @deprecated Use `checked` instead.\n */\n isChecked?: boolean\n /**\n * If `true`, the icon will be indeterminate.\n *\n * @default false\n *\n * @deprecated Use `indeterminate` instead.\n */\n isIndeterminate?: boolean\n} & FormControlOptions &\n MotionProps<\"svg\">\n\nexport const CheckboxIcon: FC<CheckboxIconProps> = ({\n checked,\n indeterminate,\n isChecked,\n isDisabled: _isDisabled,\n isIndeterminate,\n isInvalid: _isInvalid,\n isReadOnly: _isReadOnly,\n isRequired: _isRequired,\n ...rest\n}) => {\n checked ??= isChecked\n indeterminate ??= isIndeterminate\n\n return (\n <AnimatePresence initial={false}>\n {indeterminate || checked ? (\n <ui.div\n __css={{\n left: \"50%\",\n position: \"absolute\",\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n }}\n >\n <motion.div\n style={\n {\n alignItems: \"center\",\n display: \"flex\",\n justifyContent: \"center\",\n } as CSSProperties\n }\n animate=\"checked\"\n exit=\"unchecked\"\n initial=\"unchecked\"\n variants={{\n checked: { scale: 1 },\n unchecked: { scale: 0.5 },\n }}\n >\n {indeterminate ? (\n <CheckboxIndeterminateIcon {...rest} />\n ) : (\n <CheckboxCheckIcon {...rest} />\n )}\n </motion.div>\n </ui.div>\n ) : null}\n </AnimatePresence>\n )\n}\n\nCheckboxIcon.displayName = \"CheckboxIcon\"\nCheckboxIcon.__ui__ = \"CheckboxIcon\"\n\ninterface CheckboxCheckIconProps extends MotionProps<\"svg\"> {}\n\nconst CheckboxCheckIcon: FC<CheckboxCheckIconProps> = (props) => {\n return (\n <motion.svg\n style={{\n fill: \"none\",\n stroke: \"currentColor\",\n strokeDasharray: 16,\n strokeWidth: 2,\n }}\n variants={{\n checked: {\n opacity: 1,\n strokeDashoffset: 0,\n transition: { duration: 0.2 },\n },\n unchecked: {\n opacity: 0,\n strokeDashoffset: 16,\n },\n }}\n viewBox=\"0 0 12 10\"\n width=\"1.2em\"\n {...props}\n >\n <polyline points=\"1.5 6 4.5 9 10.5 1\" />\n </motion.svg>\n )\n}\n\nCheckboxCheckIcon.displayName = \"CheckboxCheckIcon\"\nCheckboxCheckIcon.__ui__ = \"CheckboxCheckIcon\"\n\ninterface CheckboxIndeterminateIconProps extends MotionProps<\"svg\"> {}\n\nconst CheckboxIndeterminateIcon: FC<CheckboxIndeterminateIconProps> = (\n props,\n) => {\n return (\n <motion.svg\n style={{ stroke: \"currentColor\", strokeWidth: 4 }}\n variants={{\n checked: {\n opacity: 1,\n scaleX: 1,\n transition: {\n opacity: { duration: 0.02 },\n scaleX: { duration: 0 },\n },\n },\n unchecked: {\n opacity: 0,\n scaleX: 0.65,\n },\n }}\n viewBox=\"0 0 24 24\"\n width=\"1.2em\"\n {...props}\n >\n <line x1=\"21\" x2=\"3\" y1=\"12\" y2=\"12\" />\n </motion.svg>\n )\n}\n\nCheckboxIndeterminateIcon.displayName = \"CheckboxIndeterminateIcon\"\nCheckboxIndeterminateIcon.__ui__ = \"CheckboxIndeterminateIcon\"\n"],"mappings":";;;;;;;;;AAkBA,SAAS,gBAAgB,IAAI,8BAA8B;AAC3D,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB,cAAc;AACxC,SAAS,IAAI,eAAe;AAC5B,SAAS,cAAc,kBAAkB;AAwFG,cAgBtC,YAhBsC;AAvDrC,IAAM,WAAW;AAAA,EACtB,CACE,OACA,QACG;AA3DP;AA4DI,UAAM,QAAQ,wBAAwB;AACtC,UAAM,EAAE,OAAO,YAAY,GAAG,WAAW,IAAI,EAAE,GAAG,MAAM;AACxD,UAAM,UAAU,eAAe,KAAK;AACpC,UAAM,CAAC,QAAQ,WAAW,IAAI,uBAAuB,YAAY;AAAA,MAC/D,GAAG;AAAA,MACH,GAAG;AAAA,IACL,CAAC;AACD,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN,cAAa,gBAAW,eAAX,YAAyB,QAAQ;AAAA,MAC9C,aAAY,gBAAW,cAAX,YAAwB,QAAQ;AAAA,MAC5C,cAAa,gBAAW,eAAX,YAAyB,QAAQ;AAAA,MAC9C,cAAa,gBAAW,eAAX,YAAyB,QAAQ;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,IAAI,eAAe,WAAW;AAE9B,UAAM,gBACJ,cAAc,cAAc,QACxB,WAAW,SAAS,cAAc,KAAK,IACvC,cAAc;AACpB,UAAM,WACJ,WAAW,YAAY,cAAc,QACjC,QAAQ,WAAW,UAAU,cAAc,QAAQ,IACnD,cAAc;AAEpB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,YAAY;AAAA,MACd,GAAG;AAAA,MACH,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,EAAE,UAAU,YAAY,GAAG,kBAAkB,IAAI,EAAE,GAAG,UAAU;AACtE,UAAM,OAAO,aAAa,kCAAc,oBAAC,gBAAa,GAAI;AAAA,MACxD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACL,SAAS,WAAW,gBAAgB,IAAI;AAAA,QACxC,WAAW,WAAW,gBAAgB,aAAa;AAAA,QACnD,oBAAoB;AAAA,QACpB,oBAAoB;AAAA,MACtB;AAAA,IACF,CAAC;AAED,WACE;AAAA,MAAC,GAAG;AAAA,MAAH;AAAA,QACC,WAAW,GAAG,eAAe,SAAS;AAAA,QACrC,GAAG,kBAAkB;AAAA,QACtB,OAAO;AAAA,UACL,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,SAAS;AAAA,UACT;AAAA,UACA,UAAU;AAAA,UACV,eAAe;AAAA,UACf,GAAG,OAAO;AAAA,QACZ;AAAA,QACC,GAAG;AAAA,QAEJ;AAAA;AAAA,YAAC,GAAG;AAAA,YAAH;AAAA,cACC,WAAU;AAAA,cACT,GAAG,cAAc,YAAY,GAAG;AAAA;AAAA,UACnC;AAAA,UAEA;AAAA,YAAC,GAAG;AAAA,YAAH;AAAA,cACC,WAAU;AAAA,cACV,OAAO;AAAA,gBACL,SAAS;AAAA,gBACT,UAAU;AAAA,gBACV,YAAY;AAAA,gBACZ,GAAG,OAAO;AAAA,cACZ;AAAA,cACC,GAAG,aAAa,iBAAiB;AAAA,cAEjC;AAAA;AAAA,UACH;AAAA,UAEA;AAAA,YAAC,GAAG;AAAA,YAAH;AAAA,cACC,WAAU;AAAA,cACV,OAAO,EAAE,GAAG,OAAO,MAAM;AAAA,cACxB,GAAG,cAAc,UAAU;AAAA,cAE3B,wCAAY;AAAA;AAAA,UACf;AAAA;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAMA,SAAS,cAAc;AACvB,SAAS,SAAS;AAkCX,IAAM,eAAsC,CAAC;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,GAAG;AACL,MAAM;AACJ,wCAAY;AACZ,0DAAkB;AAElB,SACE,oBAAC,mBAAgB,SAAS,OACvB,2BAAiB,UAChB;AAAA,IAAC,GAAG;AAAA,IAAH;AAAA,MACC,OAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU;AAAA,QACV,KAAK;AAAA,QACL,WAAW;AAAA,MACb;AAAA,MAEA;AAAA,QAAC,OAAO;AAAA,QAAP;AAAA,UACC,OACE;AAAA,YACE,YAAY;AAAA,YACZ,SAAS;AAAA,YACT,gBAAgB;AAAA,UAClB;AAAA,UAEF,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,UAAU;AAAA,YACR,SAAS,EAAE,OAAO,EAAE;AAAA,YACpB,WAAW,EAAE,OAAO,IAAI;AAAA,UAC1B;AAAA,UAEC,0BACC,oBAAC,6BAA2B,GAAG,MAAM,IAErC,oBAAC,qBAAmB,GAAG,MAAM;AAAA;AAAA,MAEjC;AAAA;AAAA,EACF,IACE,MACN;AAEJ;AAEA,aAAa,cAAc;AAC3B,aAAa,SAAS;AAItB,IAAM,oBAAgD,CAAC,UAAU;AAC/D,SACE;AAAA,IAAC,OAAO;AAAA,IAAP;AAAA,MACC,OAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,iBAAiB;AAAA,QACjB,aAAa;AAAA,MACf;AAAA,MACA,UAAU;AAAA,QACR,SAAS;AAAA,UACP,SAAS;AAAA,UACT,kBAAkB;AAAA,UAClB,YAAY,EAAE,UAAU,IAAI;AAAA,QAC9B;AAAA,QACA,WAAW;AAAA,UACT,SAAS;AAAA,UACT,kBAAkB;AAAA,QACpB;AAAA,MACF;AAAA,MACA,SAAQ;AAAA,MACR,OAAM;AAAA,MACL,GAAG;AAAA,MAEJ,8BAAC,cAAS,QAAO,sBAAqB;AAAA;AAAA,EACxC;AAEJ;AAEA,kBAAkB,cAAc;AAChC,kBAAkB,SAAS;AAI3B,IAAM,4BAAgE,CACpE,UACG;AACH,SACE;AAAA,IAAC,OAAO;AAAA,IAAP;AAAA,MACC,OAAO,EAAE,QAAQ,gBAAgB,aAAa,EAAE;AAAA,MAChD,UAAU;AAAA,QACR,SAAS;AAAA,UACP,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,YAAY;AAAA,YACV,SAAS,EAAE,UAAU,KAAK;AAAA,YAC1B,QAAQ,EAAE,UAAU,EAAE;AAAA,UACxB;AAAA,QACF;AAAA,QACA,WAAW;AAAA,UACT,SAAS;AAAA,UACT,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAQ;AAAA,MACR,OAAM;AAAA,MACL,GAAG;AAAA,MAEJ,8BAAC,UAAK,IAAG,MAAK,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK;AAAA;AAAA,EACvC;AAEJ;AAEA,0BAA0B,cAAc;AACxC,0BAA0B,SAAS;","names":[]}
@@ -1,10 +1,10 @@
1
1
  "use client"
2
2
  import {
3
3
  useCheckboxGroup
4
- } from "./chunk-3D6OL2QO.mjs";
4
+ } from "./chunk-PH5Y6VMS.mjs";
5
5
  import {
6
6
  Checkbox
7
- } from "./chunk-LSEGOUL4.mjs";
7
+ } from "./chunk-KRCEAKWH.mjs";
8
8
  import {
9
9
  CheckboxGroupProvider
10
10
  } from "./chunk-2VDJDPFI.mjs";
@@ -77,4 +77,4 @@ CheckboxGroup.__ui__ = "CheckboxGroup";
77
77
  export {
78
78
  CheckboxGroup
79
79
  };
80
- //# sourceMappingURL=chunk-LDQSOOV2.mjs.map
80
+ //# sourceMappingURL=chunk-LF6W4EB7.mjs.map
@@ -59,4 +59,4 @@ var useCheckboxGroup = ({
59
59
  export {
60
60
  useCheckboxGroup
61
61
  };
62
- //# sourceMappingURL=chunk-3D6OL2QO.mjs.map
62
+ //# sourceMappingURL=chunk-PH5Y6VMS.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/use-checkbox-group.ts"],"sourcesContent":["import type { PropGetter } from \"@yamada-ui/core\"\nimport type { Dict } from \"@yamada-ui/utils\"\nimport type { ChangeEvent, ReactNode } from \"react\"\nimport type { CheckboxProps } from \"./checkbox\"\nimport { useControllableState } from \"@yamada-ui/use-controllable-state\"\nimport { isObject, useCallbackRef } from \"@yamada-ui/utils\"\nimport { useCallback } from \"react\"\n\nexport interface CheckboxItem<Y extends number | string = string>\n extends CheckboxProps<Y> {\n label?: ReactNode\n}\n\nconst isEvent = (value: any): value is { target: HTMLInputElement } =>\n value && isObject(value) && isObject(value.target)\n\nexport interface UseCheckboxGroupProps<Y extends number | string = string> {\n /**\n * The initial value of the checkbox group.\n */\n defaultValue?: Y[]\n /**\n * If `true`, input elements will receive `checked` attribute instead of `isChecked`.\n *\n * This assumes, you're using native radio inputs.\n *\n * @default false\n *\n * @deprecated It will be deprecated in version 2.0.\n */\n isNative?: boolean\n /**\n * The value of the checkbox group.\n */\n value?: Y[]\n /**\n * The callback fired when any children checkbox is checked or unchecked.\n */\n onChange?: (value: Y[]) => void\n}\n\nexport const useCheckboxGroup = <\n Y extends number | string,\n M extends Dict = Dict,\n>({\n defaultValue = [],\n isNative,\n value: valueProp,\n onChange: onChangeProp,\n ...props\n}: M & UseCheckboxGroupProps<Y>) => {\n const onChangeRef = useCallbackRef(onChangeProp)\n\n const [value, setValue] = useControllableState({\n defaultValue,\n value: valueProp,\n onChange: onChangeRef,\n })\n\n const onChange = useCallback(\n (evOrValue: ChangeEvent<HTMLInputElement> | Y) => {\n const isChecked = isEvent(evOrValue)\n ? evOrValue.target.checked\n : !value.includes(evOrValue)\n\n const selectedValue = (\n isEvent(evOrValue) ? evOrValue.target.value : evOrValue\n ) as Y\n\n const nextValue = isChecked\n ? [...value, selectedValue]\n : value.filter((v) => String(v) !== String(selectedValue))\n\n setValue(nextValue)\n },\n [value, setValue],\n )\n\n const getContainerProps: PropGetter = useCallback(\n (props = {}, ref = null) => ({\n role: \"group\",\n ...props,\n ref,\n }),\n [],\n )\n\n const getCheckboxProps: PropGetter<\n { value?: Y },\n { checked?: boolean; isChecked?: boolean; value?: Y }\n > = useCallback(\n (props = {}, ref = null) => ({\n ...props,\n ref,\n [isNative ? \"checked\" : \"isChecked\"]: value.some(\n (val) => String(props.value) === String(val),\n ),\n onChange,\n }),\n [onChange, isNative, value],\n )\n\n return {\n props,\n setValue,\n value,\n getCheckboxProps,\n getContainerProps,\n onChange,\n }\n}\n\nexport type UseCheckboxGroupReturn<Y extends number | string = string> =\n ReturnType<typeof useCheckboxGroup<Y>>\n"],"mappings":";;;AAIA,SAAS,4BAA4B;AACrC,SAAS,UAAU,sBAAsB;AACzC,SAAS,mBAAmB;AAO5B,IAAM,UAAU,CAAC,UACf,SAAS,SAAS,KAAK,KAAK,SAAS,MAAM,MAAM;AA2B5C,IAAM,mBAAmB,CAG9B;AAAA,EACA,eAAe,CAAC;AAAA,EAChB;AAAA,EACA,OAAO;AAAA,EACP,UAAU;AAAA,EACV,GAAG;AACL,MAAoC;AAClC,QAAM,cAAc,eAAe,YAAY;AAE/C,QAAM,CAAC,OAAO,QAAQ,IAAI,qBAAqB;AAAA,IAC7C;AAAA,IACA,OAAO;AAAA,IACP,UAAU;AAAA,EACZ,CAAC;AAED,QAAM,WAAW;AAAA,IACf,CAAC,cAAiD;AAChD,YAAM,YAAY,QAAQ,SAAS,IAC/B,UAAU,OAAO,UACjB,CAAC,MAAM,SAAS,SAAS;AAE7B,YAAM,gBACJ,QAAQ,SAAS,IAAI,UAAU,OAAO,QAAQ;AAGhD,YAAM,YAAY,YACd,CAAC,GAAG,OAAO,aAAa,IACxB,MAAM,OAAO,CAAC,MAAM,OAAO,CAAC,MAAM,OAAO,aAAa,CAAC;AAE3D,eAAS,SAAS;AAAA,IACpB;AAAA,IACA,CAAC,OAAO,QAAQ;AAAA,EAClB;AAEA,QAAM,oBAAgC;AAAA,IACpC,CAACA,SAAQ,CAAC,GAAG,MAAM,UAAU;AAAA,MAC3B,MAAM;AAAA,MACN,GAAGA;AAAA,MACH;AAAA,IACF;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,mBAGF;AAAA,IACF,CAACA,SAAQ,CAAC,GAAG,MAAM,UAAU;AAAA,MAC3B,GAAGA;AAAA,MACH;AAAA,MACA,CAAC,WAAW,YAAY,WAAW,GAAG,MAAM;AAAA,QAC1C,CAAC,QAAQ,OAAOA,OAAM,KAAK,MAAM,OAAO,GAAG;AAAA,MAC7C;AAAA,MACA;AAAA,IACF;AAAA,IACA,CAAC,UAAU,UAAU,KAAK;AAAA,EAC5B;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":["props"]}
package/dist/index.js CHANGED
@@ -67,10 +67,13 @@ var useCheckbox = ({
67
67
  }) => {
68
68
  const uuid = (0, import_react.useId)();
69
69
  id != null ? id : id = uuid;
70
- const {
70
+ let {
71
71
  id: _id,
72
72
  name,
73
+ checked: checkedProp,
74
+ defaultChecked,
73
75
  defaultIsChecked,
76
+ indeterminate,
74
77
  isChecked: isCheckedProp,
75
78
  isIndeterminate,
76
79
  selectOnEnter,
@@ -79,6 +82,9 @@ var useCheckbox = ({
79
82
  onChange: onChangeProp,
80
83
  ...computedProps
81
84
  } = (0, import_form_control.useFormControlProps)({ id, ...props });
85
+ checkedProp != null ? checkedProp : checkedProp = isCheckedProp;
86
+ indeterminate != null ? indeterminate : indeterminate = isIndeterminate;
87
+ defaultChecked != null ? defaultChecked : defaultChecked = defaultIsChecked;
82
88
  const [
83
89
  {
84
90
  "aria-readonly": _ariaReadonly,
@@ -91,26 +97,26 @@ var useCheckbox = ({
91
97
  },
92
98
  rest
93
99
  ] = (0, import_utils2.splitObject)(computedProps, import_form_control.formControlProperties);
94
- const [isFocusVisible, setIsFocusVisible] = (0, import_react.useState)(false);
95
- const [isFocused, setFocused] = (0, import_react.useState)(false);
96
- const [isHovered, setHovered] = (0, import_react.useState)(false);
97
- const [isActive, setActive] = (0, import_react.useState)(false);
100
+ const [focusVisible, setFocusVisible] = (0, import_react.useState)(false);
101
+ const [focused, setFocused] = (0, import_react.useState)(false);
102
+ const [hovered, setHovered] = (0, import_react.useState)(false);
103
+ const [active, setActive] = (0, import_react.useState)(false);
98
104
  const inputRef = (0, import_react.useRef)(null);
99
- const [isLabel, setIsLabel] = (0, import_react.useState)(true);
100
- const [isChecked, setIsChecked] = (0, import_react.useState)(!!defaultIsChecked);
101
- const isControlled = isCheckedProp !== void 0;
102
- const checked = isControlled ? isCheckedProp : isChecked;
105
+ const [label, setLabel] = (0, import_react.useState)(true);
106
+ const [isChecked, setIsChecked] = (0, import_react.useState)(!!defaultChecked);
107
+ const controlled = checkedProp !== void 0;
108
+ const checked = controlled ? checkedProp : isChecked;
103
109
  const onChange = (0, import_utils2.useCallbackRef)(
104
110
  (ev) => {
105
111
  if (readOnly || disabled) {
106
112
  ev.preventDefault();
107
113
  return;
108
114
  }
109
- if (!isControlled)
110
- setIsChecked(!checked || isIndeterminate ? true : ev.target.checked);
115
+ if (!controlled)
116
+ setIsChecked(!checked || indeterminate ? true : ev.target.checked);
111
117
  onChangeProp == null ? void 0 : onChangeProp(ev);
112
118
  },
113
- [readOnly, disabled, isControlled, checked, isIndeterminate]
119
+ [readOnly, disabled, controlled, checked, indeterminate]
114
120
  );
115
121
  const onFocus = (0, import_utils2.useCallbackRef)(onFocusProp);
116
122
  const onBlur = (0, import_utils2.useCallbackRef)(onBlurProp);
@@ -129,7 +135,7 @@ var useCheckbox = ({
129
135
  [setActive]
130
136
  );
131
137
  (0, import_react.useEffect)(() => {
132
- return (0, import_use_focus_visible.trackFocusVisible)(setIsFocusVisible);
138
+ return (0, import_use_focus_visible.trackFocusVisible)(setFocusVisible);
133
139
  }, []);
134
140
  (0, import_utils2.useSafeLayoutEffect)(() => {
135
141
  if (inputRef.current)
@@ -141,7 +147,7 @@ var useCheckbox = ({
141
147
  (0, import_utils2.useSafeLayoutEffect)(() => {
142
148
  var _a;
143
149
  if (!((_a = inputRef.current) == null ? void 0 : _a.form)) return;
144
- inputRef.current.form.onreset = () => setIsChecked(!!defaultIsChecked);
150
+ inputRef.current.form.onreset = () => setIsChecked(!!defaultChecked);
145
151
  }, []);
146
152
  (0, import_utils2.useSafeLayoutEffect)(() => {
147
153
  if (!inputRef.current) return;
@@ -153,14 +159,14 @@ var useCheckbox = ({
153
159
  ...formControlProps,
154
160
  ...props2,
155
161
  ref: (0, import_utils2.mergeRefs)(ref, (el) => {
156
- if (el) setIsLabel(el.tagName === "LABEL");
162
+ if (el) setLabel(el.tagName === "LABEL");
157
163
  }),
158
164
  "data-checked": (0, import_utils2.dataAttr)(checked),
159
- "data-focus": (0, import_utils2.dataAttr)(isFocused),
160
- "data-focus-visible": (0, import_utils2.dataAttr)(isFocused && isFocusVisible),
165
+ "data-focus": (0, import_utils2.dataAttr)(focused),
166
+ "data-focus-visible": (0, import_utils2.dataAttr)(focused && focusVisible),
161
167
  onClick: (0, import_utils2.handlerAll)(props2.onClick, () => {
162
168
  var _a;
163
- if (isLabel) return;
169
+ if (label) return;
164
170
  (_a = inputRef.current) == null ? void 0 : _a.click();
165
171
  requestAnimationFrame(() => {
166
172
  var _a2;
@@ -168,7 +174,7 @@ var useCheckbox = ({
168
174
  });
169
175
  })
170
176
  }),
171
- [checked, isLabel, isFocused, isFocusVisible, formControlProps]
177
+ [checked, label, focused, focusVisible, formControlProps]
172
178
  );
173
179
  const getIconProps = (0, import_react.useCallback)(
174
180
  (props2 = {}, ref = null) => ({
@@ -176,14 +182,14 @@ var useCheckbox = ({
176
182
  ...props2,
177
183
  ref,
178
184
  "aria-hidden": true,
179
- "data-active": (0, import_utils2.dataAttr)(isActive),
185
+ "data-active": (0, import_utils2.dataAttr)(active),
180
186
  "data-checked": (0, import_utils2.dataAttr)(checked),
181
- "data-focus": (0, import_utils2.dataAttr)(isFocused),
182
- "data-focus-visible": (0, import_utils2.dataAttr)(isFocused && isFocusVisible),
183
- "data-hover": (0, import_utils2.dataAttr)(isHovered),
184
- "data-indeterminate": (0, import_utils2.dataAttr)(isIndeterminate),
187
+ "data-focus": (0, import_utils2.dataAttr)(focused),
188
+ "data-focus-visible": (0, import_utils2.dataAttr)(focused && focusVisible),
189
+ "data-hover": (0, import_utils2.dataAttr)(hovered),
190
+ "data-indeterminate": (0, import_utils2.dataAttr)(indeterminate),
185
191
  onMouseDown: (0, import_utils2.handlerAll)(props2.onMouseDown, (ev) => {
186
- if (isFocused) ev.preventDefault();
192
+ if (focused) ev.preventDefault();
187
193
  setActive(true);
188
194
  }),
189
195
  onMouseEnter: (0, import_utils2.handlerAll)(props2.onMouseEnter, () => setHovered(true)),
@@ -191,12 +197,12 @@ var useCheckbox = ({
191
197
  onMouseUp: (0, import_utils2.handlerAll)(props2.onMouseUp, () => setActive(false))
192
198
  }),
193
199
  [
194
- isActive,
200
+ active,
195
201
  checked,
196
- isFocused,
197
- isHovered,
198
- isFocusVisible,
199
- isIndeterminate,
202
+ focused,
203
+ hovered,
204
+ focusVisible,
205
+ indeterminate,
200
206
  formControlProps
201
207
  ]
202
208
  );
@@ -219,7 +225,7 @@ var useCheckbox = ({
219
225
  whiteSpace: "nowrap",
220
226
  width: "1px"
221
227
  },
222
- "aria-checked": isIndeterminate ? "mixed" : checked,
228
+ "aria-checked": indeterminate ? "mixed" : checked,
223
229
  checked,
224
230
  disabled,
225
231
  readOnly,
@@ -233,7 +239,7 @@ var useCheckbox = ({
233
239
  onKeyUp: (0, import_utils2.handlerAll)(props2.onKeyUp, onKeyUp)
234
240
  }),
235
241
  [
236
- isIndeterminate,
242
+ indeterminate,
237
243
  formControlProps,
238
244
  id,
239
245
  name,
@@ -268,11 +274,35 @@ var useCheckbox = ({
268
274
  [checked, formControlProps]
269
275
  );
270
276
  return {
271
- isActive,
277
+ active,
278
+ checked,
279
+ focused,
280
+ focusVisible,
281
+ hovered,
282
+ indeterminate,
283
+ /**
284
+ * @deprecated Use `active` instead.
285
+ */
286
+ isActive: active,
287
+ /**
288
+ * @deprecated Use `checked` instead.
289
+ */
272
290
  isChecked: checked,
273
- isFocused,
274
- isFocusVisible,
275
- isHovered,
291
+ /**
292
+ * @deprecated Use `focused` instead.
293
+ */
294
+ isFocused: focused,
295
+ /**
296
+ * @deprecated Use `focusVisible` instead.
297
+ */
298
+ isFocusVisible: focusVisible,
299
+ /**
300
+ * @deprecated Use `hovered` instead.
301
+ */
302
+ isHovered: hovered,
303
+ /**
304
+ * @deprecated Use `indeterminate` instead.
305
+ */
276
306
  isIndeterminate,
277
307
  props: rest,
278
308
  getContainerProps,
@@ -311,8 +341,8 @@ var Checkbox = (0, import_react2.forwardRef)(
311
341
  const isCheckedProp = groupValue && computedProps.value ? groupValue.includes(computedProps.value) : computedProps.isChecked;
312
342
  const onChange = groupProps.onChange && computedProps.value ? (0, import_utils3.funcAll)(groupProps.onChange, computedProps.onChange) : computedProps.onChange;
313
343
  const {
314
- isChecked,
315
- isIndeterminate,
344
+ checked,
345
+ indeterminate,
316
346
  props: rest,
317
347
  getContainerProps,
318
348
  getIconProps,
@@ -329,15 +359,15 @@ var Checkbox = (0, import_react2.forwardRef)(
329
359
  });
330
360
  const { children: customIcon, ...resolvedIconProps } = { ...iconProps };
331
361
  const icon = (0, import_react2.cloneElement)(customIcon != null ? customIcon : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CheckboxIcon, {}), {
332
- isChecked,
362
+ checked,
363
+ indeterminate,
333
364
  isDisabled,
334
- isIndeterminate,
335
365
  isInvalid,
336
366
  isReadOnly,
337
367
  isRequired,
338
368
  __css: {
339
- opacity: isChecked || isIndeterminate ? 1 : 0,
340
- transform: isChecked || isIndeterminate ? "scale(1)" : "scale(0.95)",
369
+ opacity: checked || indeterminate ? 1 : 0,
370
+ transform: checked || indeterminate ? "scale(1)" : "scale(0.95)",
341
371
  transitionDuration: "normal",
342
372
  transitionProperty: "transform"
343
373
  }
@@ -396,6 +426,8 @@ var Checkbox = (0, import_react2.forwardRef)(
396
426
  Checkbox.displayName = "Checkbox";
397
427
  Checkbox.__ui__ = "Checkbox";
398
428
  var CheckboxIcon = ({
429
+ checked,
430
+ indeterminate,
399
431
  isChecked,
400
432
  isDisabled: _isDisabled,
401
433
  isIndeterminate,
@@ -404,7 +436,9 @@ var CheckboxIcon = ({
404
436
  isRequired: _isRequired,
405
437
  ...rest
406
438
  }) => {
407
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_motion.AnimatePresence, { initial: false, children: isIndeterminate || isChecked ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
439
+ checked != null ? checked : checked = isChecked;
440
+ indeterminate != null ? indeterminate : indeterminate = isIndeterminate;
441
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_motion.AnimatePresence, { initial: false, children: indeterminate || checked ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
408
442
  import_core.ui.div,
409
443
  {
410
444
  __css: {
@@ -428,7 +462,7 @@ var CheckboxIcon = ({
428
462
  checked: { scale: 1 },
429
463
  unchecked: { scale: 0.5 }
430
464
  },
431
- children: isIndeterminate ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CheckboxIndeterminateIcon, { ...rest }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CheckboxCheckIcon, { ...rest })
465
+ children: indeterminate ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CheckboxIndeterminateIcon, { ...rest }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CheckboxCheckIcon, { ...rest })
432
466
  }
433
467
  )
434
468
  }