@seed-design/react-checkbox 0.0.1-rc.0 → 0.0.2
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.cjs +194 -0
- package/lib/index.d.ts +1163 -3
- package/lib/index.js +175 -223
- package/package.json +16 -18
- package/lib/Checkbox.d.ts +0 -12
- package/lib/Checkbox.namespace.d.ts +0 -1
- package/lib/index.js.map +0 -7
- package/lib/index.mjs +0 -227
- package/lib/index.mjs.map +0 -7
- package/lib/useCheckbox.d.ts +0 -1129
- package/lib/useCheckboxContext.d.ts +0 -7
package/lib/index.js
CHANGED
|
@@ -1,238 +1,190 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
}
|
|
182
|
-
|
|
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
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
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
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
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
|
-
|
|
223
|
-
(props, ref) => {
|
|
173
|
+
const CheckboxHiddenInput = /*#__PURE__*/ forwardRef((props, ref)=>{
|
|
224
174
|
const { refs, hiddenInputProps } = useCheckboxContext();
|
|
225
|
-
const mergedProps =
|
|
226
|
-
return
|
|
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
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
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,41 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seed-design/react-checkbox",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
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
|
-
"
|
|
14
|
-
"
|
|
14
|
+
"import": "./lib/index.js",
|
|
15
|
+
"require": "./lib/index.cjs"
|
|
15
16
|
},
|
|
16
17
|
"./package.json": "./package.json"
|
|
17
18
|
},
|
|
18
|
-
"main": "./lib/index.
|
|
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": "
|
|
26
|
+
"build": "bunchee",
|
|
27
|
+
"lint:publish": "bun publint"
|
|
26
28
|
},
|
|
27
29
|
"dependencies": {
|
|
28
|
-
"@radix-ui/react-compose-refs": "^1.1.
|
|
29
|
-
"@radix-ui/react-use-controllable-state": "1.
|
|
30
|
-
"@seed-design/dom-utils": "0.0.
|
|
31
|
-
"@seed-design/react-primitive": "0.0.
|
|
30
|
+
"@radix-ui/react-compose-refs": "^1.1.2",
|
|
31
|
+
"@radix-ui/react-use-controllable-state": "1.2.2",
|
|
32
|
+
"@seed-design/dom-utils": "0.0.2",
|
|
33
|
+
"@seed-design/react-primitive": "0.0.2"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@types/react": "^18.3.20",
|
|
37
|
+
"react": "^18.3.1",
|
|
38
|
+
"react-dom": "^18.3.1"
|
|
32
39
|
},
|
|
33
40
|
"peerDependencies": {
|
|
34
41
|
"react": ">=18.0.0",
|
|
@@ -36,14 +43,5 @@
|
|
|
36
43
|
},
|
|
37
44
|
"publishConfig": {
|
|
38
45
|
"access": "public"
|
|
39
|
-
},
|
|
40
|
-
"ultra": {
|
|
41
|
-
"concurrent": [
|
|
42
|
-
"dev",
|
|
43
|
-
"build"
|
|
44
|
-
]
|
|
45
|
-
},
|
|
46
|
-
"devDependencies": {
|
|
47
|
-
"esbuild": "^0.25.0"
|
|
48
46
|
}
|
|
49
47
|
}
|
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
|
-
}
|