@seed-design/react-field 1.0.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.
package/lib/index.js ADDED
@@ -0,0 +1,12 @@
1
+ import { F as FieldDescription, a as FieldErrorMessage, b as FieldLabel, c as FieldRoot } from './Field-12s-C77so-rw.js';
2
+ export { u as useFieldContext } from './Field-12s-C77so-rw.js';
3
+
4
+ var Field_namespace = {
5
+ __proto__: null,
6
+ Description: FieldDescription,
7
+ ErrorMessage: FieldErrorMessage,
8
+ Label: FieldLabel,
9
+ Root: FieldRoot
10
+ };
11
+
12
+ export { Field_namespace as Field, FieldDescription, FieldErrorMessage, FieldLabel, FieldRoot };
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@seed-design/react-field",
3
+ "version": "1.0.0",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "git+https://github.com/daangn/seed-design.git",
7
+ "directory": "packages/react-headless/field"
8
+ },
9
+ "sideEffects": false,
10
+ "type": "module",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./lib/index.d.ts",
14
+ "import": "./lib/index.js",
15
+ "require": "./lib/index.cjs"
16
+ },
17
+ "./package.json": "./package.json"
18
+ },
19
+ "main": "./lib/index.cjs",
20
+ "files": [
21
+ "lib",
22
+ "src"
23
+ ],
24
+ "scripts": {
25
+ "clean": "rm -rf lib",
26
+ "build": "bunchee",
27
+ "lint:publish": "bun publint"
28
+ },
29
+ "dependencies": {
30
+ "@radix-ui/react-compose-refs": "^1.1.2",
31
+ "@seed-design/dom-utils": "1.0.0",
32
+ "@seed-design/react-primitive": "1.0.0"
33
+ },
34
+ "devDependencies": {
35
+ "@types/react": "^19.1.6",
36
+ "react": "^19.1.0",
37
+ "react-dom": "^19.1.0"
38
+ },
39
+ "peerDependencies": {
40
+ "react": ">=18.0.0",
41
+ "react-dom": ">=18.0.0"
42
+ },
43
+ "publishConfig": {
44
+ "access": "public"
45
+ }
46
+ }
@@ -0,0 +1,10 @@
1
+ export {
2
+ FieldRoot as Root,
3
+ FieldLabel as Label,
4
+ FieldDescription as Description,
5
+ FieldErrorMessage as ErrorMessage,
6
+ type FieldRootProps as RootProps,
7
+ type FieldLabelProps as LabelProps,
8
+ type FieldDescriptionProps as DescriptionProps,
9
+ type FieldErrorMessageProps as ErrorMessageProps,
10
+ } from "./Field";
package/src/Field.tsx ADDED
@@ -0,0 +1,68 @@
1
+ "use client";
2
+
3
+ import { composeRefs } from "@radix-ui/react-compose-refs";
4
+ import { mergeProps } from "@seed-design/dom-utils";
5
+ import { Primitive, type PrimitiveProps } from "@seed-design/react-primitive";
6
+ import type * as React from "react";
7
+ import { forwardRef } from "react";
8
+ import { useField, type UseFieldProps } from "./useField";
9
+ import { FieldProvider, useFieldContext } from "./useFieldContext";
10
+
11
+ export interface FieldRootProps
12
+ extends UseFieldProps,
13
+ PrimitiveProps,
14
+ React.HTMLAttributes<HTMLDivElement> {}
15
+
16
+ export const FieldRoot = forwardRef<HTMLDivElement, FieldRootProps>((props, ref) => {
17
+ const { readOnly, disabled, invalid, required, name, ...otherProps } = props;
18
+
19
+ const api = useField({
20
+ disabled,
21
+ invalid,
22
+ required,
23
+ readOnly,
24
+ name,
25
+ });
26
+ const mergedProps = mergeProps(api.rootProps, otherProps);
27
+
28
+ return (
29
+ <FieldProvider value={api}>
30
+ <Primitive.div ref={ref} {...mergedProps} />
31
+ </FieldProvider>
32
+ );
33
+ });
34
+ FieldRoot.displayName = "FieldRoot";
35
+
36
+ export interface FieldLabelProps extends PrimitiveProps, React.HTMLAttributes<HTMLLabelElement> {}
37
+
38
+ export const FieldLabel = forwardRef<HTMLLabelElement, FieldLabelProps>((props, ref) => {
39
+ const { refs, labelProps } = useFieldContext();
40
+ const mergedProps = mergeProps(labelProps, props);
41
+ return <Primitive.label ref={composeRefs(refs.label, ref)} {...mergedProps} />;
42
+ });
43
+ FieldLabel.displayName = "FieldLabel";
44
+
45
+ export interface FieldDescriptionProps
46
+ extends PrimitiveProps,
47
+ React.HTMLAttributes<HTMLSpanElement> {}
48
+
49
+ export const FieldDescription = forwardRef<HTMLSpanElement, FieldDescriptionProps>((props, ref) => {
50
+ const { refs, descriptionProps } = useFieldContext();
51
+ const mergedProps = mergeProps(descriptionProps, props);
52
+
53
+ return <Primitive.span ref={composeRefs(refs.description, ref)} {...mergedProps} />;
54
+ });
55
+ FieldDescription.displayName = "FieldDescription";
56
+
57
+ export interface FieldErrorMessageProps
58
+ extends PrimitiveProps,
59
+ React.HTMLAttributes<HTMLDivElement> {}
60
+
61
+ export const FieldErrorMessage = forwardRef<HTMLDivElement, FieldErrorMessageProps>(
62
+ (props, ref) => {
63
+ const { refs, errorMessageProps } = useFieldContext();
64
+ const mergedProps = mergeProps(errorMessageProps, props);
65
+ return <Primitive.div ref={composeRefs(refs.errorMessage, ref)} {...mergedProps} />;
66
+ },
67
+ );
68
+ FieldErrorMessage.displayName = "FieldErrorMessage";
package/src/dom.ts ADDED
@@ -0,0 +1,4 @@
1
+ export const getLabelId = (id: string) => `field:${id}:label`;
2
+ export const getInputId = (id: string) => `field:${id}:input`;
3
+ export const getDescriptionId = (id: string) => `field:${id}:description`;
4
+ export const getErrorMessageId = (id: string) => `field:${id}:error-message`;
package/src/index.ts ADDED
@@ -0,0 +1,14 @@
1
+ export {
2
+ FieldRoot,
3
+ FieldLabel,
4
+ FieldDescription,
5
+ FieldErrorMessage,
6
+ type FieldRootProps,
7
+ type FieldLabelProps,
8
+ type FieldDescriptionProps,
9
+ type FieldErrorMessageProps,
10
+ } from "./Field";
11
+
12
+ export { useFieldContext, type UseFieldContext } from "./useFieldContext";
13
+
14
+ export * as Field from "./Field.namespace";