@seed-design/react-checkbox 0.0.1-rc.0 → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -1,238 +1,190 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/index.ts
21
- var index_exports = {};
22
- __export(index_exports, {
23
- Checkbox: () => Checkbox_namespace_exports,
24
- CheckboxControl: () => CheckboxControl,
25
- CheckboxHiddenInput: () => CheckboxHiddenInput,
26
- CheckboxRoot: () => CheckboxRoot,
27
- useCheckboxContext: () => useCheckboxContext
28
- });
29
- module.exports = __toCommonJS(index_exports);
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { elementProps, dataAttr, inputProps, labelProps, visuallyHidden, mergeProps } from '@seed-design/dom-utils';
3
+ import { Primitive } from '@seed-design/react-primitive';
4
+ import { useState, useRef, useEffect, createContext, useContext, forwardRef } from 'react';
5
+ import { useControllableState } from '@radix-ui/react-use-controllable-state';
6
+ import { composeRefs } from '@radix-ui/react-compose-refs';
30
7
 
31
- // src/Checkbox.tsx
32
- var import_dom_utils2 = require("@seed-design/dom-utils");
33
- var import_react_primitive = require("@seed-design/react-primitive");
34
- var import_react3 = require("react");
35
-
36
- // src/useCheckbox.ts
37
- var import_react_use_controllable_state = require("@radix-ui/react-use-controllable-state");
38
- var import_react = require("react");
39
- var import_dom_utils = require("@seed-design/dom-utils");
40
8
  function useCheckboxState(props) {
41
- var _a;
42
- const [isChecked = false, setIsChecked] = (0, import_react_use_controllable_state.useControllableState)({
43
- prop: props.checked,
44
- defaultProp: props.defaultChecked,
45
- onChange: props.onCheckedChange
46
- });
47
- const [isHovered, setIsHovered] = (0, import_react.useState)(false);
48
- const [isActive, setIsActive] = (0, import_react.useState)(false);
49
- const [isFocused, setIsFocused] = (0, import_react.useState)(false);
50
- const [isFocusVisible, setIsFocusVisible] = (0, import_react.useState)(false);
51
- const inputRef = (0, import_react.useRef)(null);
52
- const initialCheckedRef = (0, import_react.useRef)(isChecked);
53
- (0, import_react.useEffect)(() => {
54
- var _a2;
55
- const form = (_a2 = inputRef.current) == null ? void 0 : _a2.form;
56
- if (form) {
57
- const reset = () => setIsChecked(initialCheckedRef.current);
58
- form.addEventListener("reset", reset);
59
- return () => form.removeEventListener("reset", reset);
60
- }
61
- }, [setIsChecked]);
62
- (0, import_react.useEffect)(() => {
63
- var _a2;
64
- if (!inputRef.current) return;
65
- inputRef.current.indeterminate = (_a2 = props.indeterminate) != null ? _a2 : false;
66
- }, [props.indeterminate]);
67
- return {
68
- refs: { input: inputRef },
69
- isIndeterminate: (_a = props.indeterminate) != null ? _a : false,
70
- isChecked,
71
- setIsChecked,
72
- isHovered,
73
- setIsHovered,
74
- isActive,
75
- setIsActive,
76
- isFocused,
77
- setIsFocused,
78
- isFocusVisible,
79
- setIsFocusVisible
80
- };
9
+ const [isChecked = false, setIsChecked] = useControllableState({
10
+ prop: props.checked,
11
+ defaultProp: props.defaultChecked,
12
+ onChange: props.onCheckedChange
13
+ });
14
+ const [isHovered, setIsHovered] = useState(false);
15
+ const [isActive, setIsActive] = useState(false);
16
+ const [isFocused, setIsFocused] = useState(false);
17
+ const [isFocusVisible, setIsFocusVisible] = useState(false);
18
+ const inputRef = useRef(null);
19
+ const initialCheckedRef = useRef(isChecked);
20
+ useEffect(()=>{
21
+ const form = inputRef.current?.form;
22
+ if (form) {
23
+ const reset = ()=>setIsChecked(initialCheckedRef.current);
24
+ form.addEventListener("reset", reset);
25
+ return ()=>form.removeEventListener("reset", reset);
26
+ }
27
+ }, [
28
+ setIsChecked
29
+ ]);
30
+ useEffect(()=>{
31
+ if (!inputRef.current) return;
32
+ inputRef.current.indeterminate = props.indeterminate ?? false;
33
+ }, [
34
+ props.indeterminate
35
+ ]);
36
+ return {
37
+ refs: {
38
+ input: inputRef
39
+ },
40
+ isIndeterminate: props.indeterminate ?? false,
41
+ isChecked,
42
+ setIsChecked,
43
+ isHovered,
44
+ setIsHovered,
45
+ isActive,
46
+ setIsActive,
47
+ isFocused,
48
+ setIsFocused,
49
+ isFocusVisible,
50
+ setIsFocusVisible
51
+ };
81
52
  }
82
53
  function useCheckbox(props) {
83
- const {
84
- refs,
85
- isIndeterminate,
86
- setIsChecked,
87
- isChecked,
88
- setIsHovered,
89
- isHovered,
90
- setIsActive,
91
- isActive,
92
- setIsFocused,
93
- isFocused,
94
- setIsFocusVisible,
95
- isFocusVisible
96
- } = useCheckboxState(props);
97
- const stateProps = (0, import_dom_utils.elementProps)({
98
- "data-checked": (0, import_dom_utils.dataAttr)(isChecked),
99
- "data-indeterminate": (0, import_dom_utils.dataAttr)(isIndeterminate),
100
- "data-hover": (0, import_dom_utils.dataAttr)(isHovered),
101
- "data-active": (0, import_dom_utils.dataAttr)(isActive),
102
- "data-focus": (0, import_dom_utils.dataAttr)(isFocused),
103
- "data-focus-visible": (0, import_dom_utils.dataAttr)(isFocusVisible),
104
- "data-disabled": (0, import_dom_utils.dataAttr)(props.disabled),
105
- "data-invalid": (0, import_dom_utils.dataAttr)(props.invalid),
106
- "data-required": (0, import_dom_utils.dataAttr)(props.required)
107
- });
108
- const isControlled = props.checked != null;
109
- return {
110
- indeterminate: isIndeterminate,
111
- checked: isChecked,
112
- setChecked: setIsChecked,
113
- focused: isFocused,
114
- setFocused: setIsFocused,
115
- focusVisible: isFocusVisible,
116
- setFocusVisible: setIsFocusVisible,
117
- refs,
118
- stateProps,
119
- rootProps: (0, import_dom_utils.labelProps)({
120
- ...stateProps,
121
- onPointerMove() {
122
- setIsHovered(true);
123
- },
124
- onPointerDown() {
125
- setIsActive(true);
126
- },
127
- onPointerUp() {
128
- setIsActive(false);
129
- },
130
- onPointerLeave() {
131
- setIsHovered(false);
132
- setIsActive(false);
133
- }
134
- }),
135
- controlProps: (0, import_dom_utils.elementProps)({
136
- ...stateProps,
137
- "aria-hidden": true
138
- }),
139
- hiddenInputProps: (0, import_dom_utils.inputProps)({
140
- type: "checkbox",
141
- role: "checkbox",
142
- checked: isControlled ? isChecked : void 0,
143
- defaultChecked: !isControlled ? isChecked : void 0,
144
- disabled: props.disabled,
145
- required: props.required,
146
- "aria-invalid": props.invalid,
147
- style: import_dom_utils.visuallyHidden,
148
- ...stateProps,
149
- onChange(event) {
150
- setIsChecked(event.currentTarget.checked);
151
- setIsFocusVisible(event.target.matches(":focus-visible"));
152
- },
153
- onFocus(event) {
154
- setIsFocused(true);
155
- setIsFocusVisible(event.target.matches(":focus-visible"));
156
- },
157
- onBlur() {
158
- setIsFocused(false);
159
- setIsFocusVisible(false);
160
- },
161
- onKeyDown(event) {
162
- if (event.key === " ") {
163
- setIsActive(true);
164
- }
165
- },
166
- onKeyUp(event) {
167
- if (event.key === " ") {
168
- setIsActive(false);
169
- }
170
- }
171
- })
172
- };
54
+ const { refs, isIndeterminate, setIsChecked, isChecked, setIsHovered, isHovered, setIsActive, isActive, setIsFocused, isFocused, setIsFocusVisible, isFocusVisible } = useCheckboxState(props);
55
+ const stateProps = elementProps({
56
+ "data-checked": dataAttr(isChecked),
57
+ "data-indeterminate": dataAttr(isIndeterminate),
58
+ "data-hover": dataAttr(isHovered),
59
+ "data-active": dataAttr(isActive),
60
+ "data-focus": dataAttr(isFocused),
61
+ "data-focus-visible": dataAttr(isFocusVisible),
62
+ "data-disabled": dataAttr(props.disabled),
63
+ "data-invalid": dataAttr(props.invalid),
64
+ "data-required": dataAttr(props.required)
65
+ });
66
+ const isControlled = props.checked != null;
67
+ return {
68
+ indeterminate: isIndeterminate,
69
+ checked: isChecked,
70
+ setChecked: setIsChecked,
71
+ focused: isFocused,
72
+ setFocused: setIsFocused,
73
+ focusVisible: isFocusVisible,
74
+ setFocusVisible: setIsFocusVisible,
75
+ refs,
76
+ stateProps,
77
+ rootProps: labelProps({
78
+ ...stateProps,
79
+ onPointerMove () {
80
+ setIsHovered(true);
81
+ },
82
+ onPointerDown () {
83
+ setIsActive(true);
84
+ },
85
+ onPointerUp () {
86
+ setIsActive(false);
87
+ },
88
+ onPointerLeave () {
89
+ setIsHovered(false);
90
+ setIsActive(false);
91
+ }
92
+ }),
93
+ controlProps: elementProps({
94
+ ...stateProps,
95
+ "aria-hidden": true
96
+ }),
97
+ hiddenInputProps: inputProps({
98
+ type: "checkbox",
99
+ role: "checkbox",
100
+ checked: isControlled ? isChecked : undefined,
101
+ defaultChecked: !isControlled ? isChecked : undefined,
102
+ disabled: props.disabled,
103
+ required: props.required,
104
+ "aria-invalid": props.invalid,
105
+ style: visuallyHidden,
106
+ ...stateProps,
107
+ onChange (event) {
108
+ setIsChecked(event.currentTarget.checked);
109
+ setIsFocusVisible(event.target.matches(":focus-visible"));
110
+ },
111
+ onFocus (event) {
112
+ setIsFocused(true);
113
+ setIsFocusVisible(event.target.matches(":focus-visible"));
114
+ },
115
+ onBlur () {
116
+ setIsFocused(false);
117
+ setIsFocusVisible(false);
118
+ },
119
+ onKeyDown (event) {
120
+ if (event.key === " ") {
121
+ setIsActive(true);
122
+ }
123
+ },
124
+ onKeyUp (event) {
125
+ if (event.key === " ") {
126
+ setIsActive(false);
127
+ }
128
+ }
129
+ })
130
+ };
173
131
  }
174
132
 
175
- // src/useCheckboxContext.tsx
176
- var import_react2 = require("react");
177
- var CheckboxContext = (0, import_react2.createContext)(null);
178
- var CheckboxProvider = CheckboxContext.Provider;
179
- function useCheckboxContext({
180
- strict = true
181
- } = {}) {
182
- const context = (0, import_react2.useContext)(CheckboxContext);
183
- if (!context && strict) {
184
- throw new Error("useCheckboxContext must be used within a Checkbox");
185
- }
186
- return context;
133
+ const CheckboxContext = /*#__PURE__*/ createContext(null);
134
+ const CheckboxProvider = CheckboxContext.Provider;
135
+ function useCheckboxContext({ strict = true } = {}) {
136
+ const context = useContext(CheckboxContext);
137
+ if (!context && strict) {
138
+ throw new Error("useCheckboxContext must be used within a Checkbox");
139
+ }
140
+ return context;
187
141
  }
188
142
 
189
- // src/Checkbox.tsx
190
- var import_react_compose_refs = require("@radix-ui/react-compose-refs");
191
- var import_jsx_runtime = require("react/jsx-runtime");
192
- var CheckboxRoot = (0, import_react3.forwardRef)((props, ref) => {
193
- const {
194
- checked,
195
- defaultChecked,
196
- onCheckedChange,
197
- indeterminate,
198
- disabled,
199
- invalid,
200
- required,
201
- ...otherProps
202
- } = props;
203
- const api = useCheckbox({
204
- checked,
205
- defaultChecked,
206
- onCheckedChange,
207
- indeterminate,
208
- disabled,
209
- invalid,
210
- required
211
- });
212
- const mergedProps = (0, import_dom_utils2.mergeProps)(api.rootProps, otherProps);
213
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CheckboxProvider, { value: api, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_primitive.Primitive.label, { ref, ...mergedProps }) });
143
+ const CheckboxRoot = /*#__PURE__*/ forwardRef((props, ref)=>{
144
+ const { checked, defaultChecked, onCheckedChange, indeterminate, disabled, invalid, required, ...otherProps } = props;
145
+ const api = useCheckbox({
146
+ checked,
147
+ defaultChecked,
148
+ onCheckedChange,
149
+ indeterminate,
150
+ disabled,
151
+ invalid,
152
+ required
153
+ });
154
+ const mergedProps = mergeProps(api.rootProps, otherProps);
155
+ return /*#__PURE__*/ jsx(CheckboxProvider, {
156
+ value: api,
157
+ children: /*#__PURE__*/ jsx(Primitive.label, {
158
+ ref: ref,
159
+ ...mergedProps
160
+ })
161
+ });
214
162
  });
215
163
  CheckboxRoot.displayName = "CheckboxRoot";
216
- var CheckboxControl = (0, import_react3.forwardRef)((props, ref) => {
217
- const { controlProps } = useCheckboxContext();
218
- const mergedProps = (0, import_dom_utils2.mergeProps)(controlProps, props);
219
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_primitive.Primitive.div, { ref, ...mergedProps });
164
+ const CheckboxControl = /*#__PURE__*/ forwardRef((props, ref)=>{
165
+ const { controlProps } = useCheckboxContext();
166
+ const mergedProps = mergeProps(controlProps, props);
167
+ return /*#__PURE__*/ jsx(Primitive.div, {
168
+ ref: ref,
169
+ ...mergedProps
170
+ });
220
171
  });
221
172
  CheckboxControl.displayName = "CheckboxControl";
222
- var CheckboxHiddenInput = (0, import_react3.forwardRef)(
223
- (props, ref) => {
173
+ const CheckboxHiddenInput = /*#__PURE__*/ forwardRef((props, ref)=>{
224
174
  const { refs, hiddenInputProps } = useCheckboxContext();
225
- const mergedProps = (0, import_dom_utils2.mergeProps)(hiddenInputProps, props);
226
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_primitive.Primitive.input, { ref: (0, import_react_compose_refs.composeRefs)(refs.input, ref), ...mergedProps });
227
- }
228
- );
175
+ const mergedProps = mergeProps(hiddenInputProps, props);
176
+ return /*#__PURE__*/ jsx(Primitive.input, {
177
+ ref: composeRefs(refs.input, ref),
178
+ ...mergedProps
179
+ });
180
+ });
229
181
  CheckboxHiddenInput.displayName = "CheckboxHiddenInput";
230
182
 
231
- // src/Checkbox.namespace.ts
232
- var Checkbox_namespace_exports = {};
233
- __export(Checkbox_namespace_exports, {
234
- Control: () => CheckboxControl,
235
- HiddenInput: () => CheckboxHiddenInput,
236
- Root: () => CheckboxRoot
237
- });
238
- //# sourceMappingURL=index.js.map
183
+ var Checkbox_namespace = {
184
+ __proto__: null,
185
+ Control: CheckboxControl,
186
+ HiddenInput: CheckboxHiddenInput,
187
+ Root: CheckboxRoot
188
+ };
189
+
190
+ export { Checkbox_namespace as Checkbox, CheckboxControl, CheckboxHiddenInput, CheckboxRoot, useCheckboxContext };
package/package.json CHANGED
@@ -1,34 +1,39 @@
1
1
  {
2
2
  "name": "@seed-design/react-checkbox",
3
- "version": "0.0.1-rc.0",
3
+ "version": "0.0.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/daangn/seed-design.git",
7
7
  "directory": "packages/react-headless/checkbox"
8
8
  },
9
9
  "sideEffects": false,
10
+ "type": "module",
10
11
  "exports": {
11
12
  ".": {
12
13
  "types": "./lib/index.d.ts",
13
- "require": "./lib/index.js",
14
- "import": "./lib/index.mjs"
14
+ "import": "./lib/index.js",
15
+ "require": "./lib/index.cjs"
15
16
  },
16
17
  "./package.json": "./package.json"
17
18
  },
18
- "main": "./lib/index.js",
19
+ "main": "./lib/index.cjs",
19
20
  "files": [
20
21
  "lib",
21
22
  "src"
22
23
  ],
23
24
  "scripts": {
24
25
  "clean": "rm -rf lib",
25
- "build": "bun build.mjs && tsc"
26
+ "build": "bunchee",
27
+ "lint:publish": "bun publint"
26
28
  },
27
29
  "dependencies": {
28
30
  "@radix-ui/react-compose-refs": "^1.1.1",
29
31
  "@radix-ui/react-use-controllable-state": "1.1.0",
30
- "@seed-design/dom-utils": "0.0.1-rc.0",
31
- "@seed-design/react-primitive": "0.0.1-rc.0"
32
+ "@seed-design/dom-utils": "0.0.1",
33
+ "@seed-design/react-primitive": "0.0.1"
34
+ },
35
+ "devDependencies": {
36
+ "@types/react": "^18.3.5"
32
37
  },
33
38
  "peerDependencies": {
34
39
  "react": ">=18.0.0",
@@ -36,14 +41,5 @@
36
41
  },
37
42
  "publishConfig": {
38
43
  "access": "public"
39
- },
40
- "ultra": {
41
- "concurrent": [
42
- "dev",
43
- "build"
44
- ]
45
- },
46
- "devDependencies": {
47
- "esbuild": "^0.25.0"
48
44
  }
49
45
  }
package/lib/Checkbox.d.ts DELETED
@@ -1,12 +0,0 @@
1
- import { type PrimitiveProps } from "@seed-design/react-primitive";
2
- import type * as React from "react";
3
- import { type UseCheckboxProps } from "./useCheckbox";
4
- export interface CheckboxRootProps extends UseCheckboxProps, PrimitiveProps, React.HTMLAttributes<HTMLLabelElement> {
5
- }
6
- export declare const CheckboxRoot: React.ForwardRefExoticComponent<CheckboxRootProps & React.RefAttributes<HTMLLabelElement>>;
7
- export interface CheckboxControlProps extends PrimitiveProps, React.HTMLAttributes<HTMLDivElement> {
8
- }
9
- export declare const CheckboxControl: React.ForwardRefExoticComponent<CheckboxControlProps & React.RefAttributes<HTMLDivElement>>;
10
- export interface CheckboxHiddenInputProps extends PrimitiveProps, React.InputHTMLAttributes<HTMLInputElement> {
11
- }
12
- export declare const CheckboxHiddenInput: React.ForwardRefExoticComponent<CheckboxHiddenInputProps & React.RefAttributes<HTMLInputElement>>;
@@ -1 +0,0 @@
1
- export { CheckboxRoot as Root, CheckboxControl as Control, CheckboxHiddenInput as HiddenInput, type CheckboxRootProps as RootProps, type CheckboxControlProps as ControlProps, type CheckboxHiddenInputProps as HiddenInputProps, } from "./Checkbox";
package/lib/index.js.map DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/index.ts", "../src/Checkbox.tsx", "../src/useCheckbox.ts", "../src/useCheckboxContext.tsx", "../src/Checkbox.namespace.ts"],
4
- "sourcesContent": ["export {\n CheckboxRoot,\n CheckboxControl,\n CheckboxHiddenInput,\n type CheckboxRootProps,\n type CheckboxControlProps,\n type CheckboxHiddenInputProps,\n} from \"./Checkbox\";\n\nexport { useCheckboxContext, type UseCheckboxContext } from \"./useCheckboxContext\";\n\nexport * as Checkbox from \"./Checkbox.namespace\";\n", "import { mergeProps } from \"@seed-design/dom-utils\";\nimport { Primitive, type PrimitiveProps } from \"@seed-design/react-primitive\";\nimport type * as React from \"react\";\nimport { forwardRef } from \"react\";\nimport { useCheckbox, type UseCheckboxProps } from \"./useCheckbox\";\nimport { CheckboxProvider, useCheckboxContext } from \"./useCheckboxContext\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\n\nexport interface CheckboxRootProps\n extends UseCheckboxProps,\n PrimitiveProps,\n React.HTMLAttributes<HTMLLabelElement> {}\n\nexport const CheckboxRoot = forwardRef<HTMLLabelElement, CheckboxRootProps>((props, ref) => {\n const {\n checked,\n defaultChecked,\n onCheckedChange,\n indeterminate,\n disabled,\n invalid,\n required,\n ...otherProps\n } = props;\n\n const api = useCheckbox({\n checked,\n defaultChecked,\n onCheckedChange,\n indeterminate,\n disabled,\n invalid,\n required,\n });\n const mergedProps = mergeProps(api.rootProps, otherProps);\n\n return (\n <CheckboxProvider value={api}>\n <Primitive.label ref={ref} {...mergedProps} />\n </CheckboxProvider>\n );\n});\nCheckboxRoot.displayName = \"CheckboxRoot\";\n\nexport interface CheckboxControlProps\n extends PrimitiveProps,\n React.HTMLAttributes<HTMLDivElement> {}\n\nexport const CheckboxControl = forwardRef<HTMLDivElement, CheckboxControlProps>((props, ref) => {\n const { controlProps } = useCheckboxContext();\n const mergedProps = mergeProps(controlProps, props);\n return <Primitive.div ref={ref} {...mergedProps} />;\n});\nCheckboxControl.displayName = \"CheckboxControl\";\n\nexport interface CheckboxHiddenInputProps\n extends PrimitiveProps,\n React.InputHTMLAttributes<HTMLInputElement> {}\n\nexport const CheckboxHiddenInput = forwardRef<HTMLInputElement, CheckboxHiddenInputProps>(\n (props, ref) => {\n const { refs, hiddenInputProps } = useCheckboxContext();\n const mergedProps = mergeProps(hiddenInputProps, props);\n return <Primitive.input ref={composeRefs(refs.input, ref)} {...mergedProps} />;\n },\n);\nCheckboxHiddenInput.displayName = \"CheckboxHiddenInput\";\n", "import { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useEffect, useRef, useState } from \"react\";\n\nimport {\n dataAttr,\n elementProps,\n inputProps,\n labelProps,\n visuallyHidden,\n} from \"@seed-design/dom-utils\";\n\ninterface UseCheckboxStateProps {\n checked?: boolean;\n\n defaultChecked?: boolean;\n\n onCheckedChange?: (checked: boolean) => void;\n\n indeterminate?: boolean;\n}\n\nfunction useCheckboxState(props: UseCheckboxStateProps) {\n const [isChecked = false, setIsChecked] = useControllableState({\n prop: props.checked,\n defaultProp: props.defaultChecked,\n onChange: props.onCheckedChange,\n });\n const [isHovered, setIsHovered] = useState(false);\n const [isActive, setIsActive] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const [isFocusVisible, setIsFocusVisible] = useState(false);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const initialCheckedRef = useRef(isChecked);\n\n useEffect(() => {\n const form = inputRef.current?.form;\n if (form) {\n const reset = () => setIsChecked(initialCheckedRef.current);\n form.addEventListener(\"reset\", reset);\n return () => form.removeEventListener(\"reset\", reset);\n }\n }, [setIsChecked]);\n\n useEffect(() => {\n if (!inputRef.current) return;\n inputRef.current.indeterminate = props.indeterminate ?? false;\n }, [props.indeterminate]);\n\n return {\n refs: { input: inputRef },\n isIndeterminate: props.indeterminate ?? false,\n isChecked,\n setIsChecked,\n isHovered,\n setIsHovered,\n isActive,\n setIsActive,\n isFocused,\n setIsFocused,\n isFocusVisible,\n setIsFocusVisible,\n };\n}\n\nexport interface UseCheckboxProps extends UseCheckboxStateProps {\n disabled?: boolean;\n\n invalid?: boolean;\n\n required?: boolean;\n}\n\nexport type UseCheckboxReturn = ReturnType<typeof useCheckbox>;\n\nexport function useCheckbox(props: UseCheckboxProps) {\n const {\n refs,\n isIndeterminate,\n setIsChecked,\n isChecked,\n setIsHovered,\n isHovered,\n setIsActive,\n isActive,\n setIsFocused,\n isFocused,\n setIsFocusVisible,\n isFocusVisible,\n } = useCheckboxState(props);\n\n const stateProps = elementProps({\n \"data-checked\": dataAttr(isChecked),\n \"data-indeterminate\": dataAttr(isIndeterminate),\n \"data-hover\": dataAttr(isHovered),\n \"data-active\": dataAttr(isActive),\n \"data-focus\": dataAttr(isFocused),\n \"data-focus-visible\": dataAttr(isFocusVisible),\n \"data-disabled\": dataAttr(props.disabled),\n \"data-invalid\": dataAttr(props.invalid),\n \"data-required\": dataAttr(props.required),\n });\n\n const isControlled = props.checked != null;\n\n return {\n indeterminate: isIndeterminate,\n checked: isChecked,\n setChecked: setIsChecked,\n focused: isFocused,\n setFocused: setIsFocused,\n focusVisible: isFocusVisible,\n setFocusVisible: setIsFocusVisible,\n\n refs,\n stateProps,\n rootProps: labelProps({\n ...stateProps,\n onPointerMove() {\n setIsHovered(true);\n },\n onPointerDown() {\n setIsActive(true);\n },\n onPointerUp() {\n setIsActive(false);\n },\n onPointerLeave() {\n setIsHovered(false);\n setIsActive(false);\n },\n }),\n\n controlProps: elementProps({\n ...stateProps,\n \"aria-hidden\": true,\n }),\n\n hiddenInputProps: inputProps({\n type: \"checkbox\",\n role: \"checkbox\",\n checked: isControlled ? isChecked : undefined,\n defaultChecked: !isControlled ? isChecked : undefined,\n disabled: props.disabled,\n required: props.required,\n \"aria-invalid\": props.invalid,\n style: visuallyHidden,\n ...stateProps,\n onChange(event) {\n setIsChecked(event.currentTarget.checked);\n setIsFocusVisible(event.target.matches(\":focus-visible\"));\n },\n onFocus(event) {\n setIsFocused(true);\n setIsFocusVisible(event.target.matches(\":focus-visible\"));\n },\n onBlur() {\n setIsFocused(false);\n setIsFocusVisible(false);\n },\n onKeyDown(event) {\n if (event.key === \" \") {\n setIsActive(true);\n }\n },\n onKeyUp(event) {\n if (event.key === \" \") {\n setIsActive(false);\n }\n },\n }),\n };\n}\n", "import { createContext, useContext } from \"react\";\nimport type { UseCheckboxReturn } from \"./useCheckbox\";\n\nexport interface UseCheckboxContext extends UseCheckboxReturn {}\n\nconst CheckboxContext = createContext<UseCheckboxContext | null>(null);\n\nexport const CheckboxProvider = CheckboxContext.Provider;\n\nexport function useCheckboxContext<T extends boolean | undefined = true>({\n strict = true,\n}: { strict?: T } = {}): T extends false ? UseCheckboxContext | null : UseCheckboxContext {\n const context = useContext(CheckboxContext);\n if (!context && strict) {\n throw new Error(\"useCheckboxContext must be used within a Checkbox\");\n }\n\n return context as UseCheckboxContext;\n}\n", "export {\n CheckboxRoot as Root,\n CheckboxControl as Control,\n CheckboxHiddenInput as HiddenInput,\n type CheckboxRootProps as RootProps,\n type CheckboxControlProps as ControlProps,\n type CheckboxHiddenInputProps as HiddenInputProps,\n} from \"./Checkbox\";\n"],
5
- "mappings": "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",
6
- "names": ["import_dom_utils", "import_react", "_a", "import_react"]
7
- }