lynote-ui 0.0.7 → 0.0.9
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/dist/accordion/index.js +2 -2
- package/dist/accordion/index.mjs +1 -1
- package/dist/alert/index.js +2 -2
- package/dist/alert/index.mjs +1 -1
- package/dist/alert-dialog/index.js +2 -2
- package/dist/alert-dialog/index.mjs +1 -1
- package/dist/aspect-ratio/index.js +2 -2
- package/dist/aspect-ratio/index.mjs +1 -1
- package/dist/avatar/index.js +2 -2
- package/dist/avatar/index.mjs +1 -1
- package/dist/badge/index.js +2 -2
- package/dist/badge/index.mjs +1 -1
- package/dist/breadcrumb/index.js +2 -2
- package/dist/breadcrumb/index.mjs +1 -1
- package/dist/button/index.js +2 -2
- package/dist/button/index.mjs +1 -1
- package/dist/button-group/index.js +2 -2
- package/dist/button-group/index.mjs +1 -1
- package/dist/calendar/index.js +2 -2
- package/dist/calendar/index.mjs +1 -1
- package/dist/card/index.js +2 -2
- package/dist/card/index.mjs +1 -1
- package/dist/carousel/index.js +2 -2
- package/dist/carousel/index.mjs +1 -1
- package/dist/chart/index.js +2 -2
- package/dist/chart/index.mjs +1 -1
- package/dist/checkbox/index.js +2 -2
- package/dist/checkbox/index.mjs +1 -1
- package/dist/{chunk-CoQrYLCe.js → chunk-8l464Juk.js} +0 -22
- package/dist/collapsible/index.js +1 -1
- package/dist/combobox/index.d.ts +1 -1
- package/dist/combobox/index.js +9 -3
- package/dist/combobox/index.js.map +1 -1
- package/dist/combobox/index.mjs +8 -2
- package/dist/combobox/index.mjs.map +1 -1
- package/dist/command/index.js +2 -2
- package/dist/command/index.mjs +1 -1
- package/dist/context-menu/index.js +8 -6
- package/dist/context-menu/index.js.map +1 -1
- package/dist/context-menu/index.mjs +7 -5
- package/dist/context-menu/index.mjs.map +1 -1
- package/dist/date-picker/index.js +1 -1
- package/dist/dialog/index.js +2 -2
- package/dist/dialog/index.mjs +1 -1
- package/dist/direction/index.js +1 -1
- package/dist/drawer/index.js +2 -2
- package/dist/drawer/index.mjs +1 -1
- package/dist/dropdown-menu/index.js +2 -2
- package/dist/dropdown-menu/index.mjs +1 -1
- package/dist/empty/index.js +2 -2
- package/dist/empty/index.mjs +1 -1
- package/dist/field/index.js +4 -4
- package/dist/field/index.js.map +1 -1
- package/dist/field/index.mjs +3 -3
- package/dist/field/index.mjs.map +1 -1
- package/dist/hover-card/index.js +2 -2
- package/dist/hover-card/index.mjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +19 -25
- package/dist/index.mjs +4 -8
- package/dist/input/index.js +2 -2
- package/dist/input/index.mjs +1 -1
- package/dist/input-group/index.js +2 -2
- package/dist/input-group/index.mjs +1 -1
- package/dist/input-otp/index.js +2 -2
- package/dist/input-otp/index.mjs +1 -1
- package/dist/item/index.js +2 -2
- package/dist/item/index.mjs +1 -1
- package/dist/kbd/index.js +2 -2
- package/dist/kbd/index.mjs +1 -1
- package/dist/label/index.js +2 -2
- package/dist/label/index.mjs +1 -1
- package/dist/menubar/index.js +2 -2
- package/dist/menubar/index.mjs +1 -1
- package/dist/native-select/index.js +2 -2
- package/dist/native-select/index.mjs +1 -1
- package/dist/navigation-menu/index.js +2 -2
- package/dist/navigation-menu/index.mjs +1 -1
- package/dist/pagination/index.js +2 -2
- package/dist/pagination/index.mjs +1 -1
- package/dist/popover/index.js +2 -2
- package/dist/popover/index.mjs +1 -1
- package/dist/progress/index.js +2 -2
- package/dist/progress/index.mjs +1 -1
- package/dist/radio-group/index.js +2 -2
- package/dist/radio-group/index.mjs +1 -1
- package/dist/resizable/index.js +2 -2
- package/dist/resizable/index.mjs +1 -1
- package/dist/scroll-area/index.js +2 -2
- package/dist/scroll-area/index.mjs +1 -1
- package/dist/select/SelectMultipleValue.d.ts +8 -0
- package/dist/select/context.d.ts +4 -0
- package/dist/select/index.d.ts +4 -2
- package/dist/select/index.js +11 -110
- package/dist/select/index.mjs +1 -98
- package/dist/select/type.d.ts +33 -0
- package/dist/select/utils.d.ts +8 -0
- package/dist/select---wbqUEL.js +402 -0
- package/dist/select---wbqUEL.js.map +1 -0
- package/dist/select-DJcPlxTU.mjs +341 -0
- package/dist/select-DJcPlxTU.mjs.map +1 -0
- package/dist/separator/index.js +2 -2
- package/dist/separator/index.mjs +1 -1
- package/dist/sheet/index.js +2 -2
- package/dist/sheet/index.mjs +1 -1
- package/dist/sidebar/index.js +1 -1
- package/dist/sidebar/index.mjs +1 -1
- package/dist/{sidebar-Ddt6hBj_.mjs → sidebar-BO_ns2qp.mjs} +2 -2
- package/dist/{sidebar-Ddt6hBj_.mjs.map → sidebar-BO_ns2qp.mjs.map} +1 -1
- package/dist/{sidebar-E9uledix.js → sidebar-KSjzFqo5.js} +3 -3
- package/dist/{sidebar-E9uledix.js.map → sidebar-KSjzFqo5.js.map} +1 -1
- package/dist/skeleton/index.js +2 -2
- package/dist/skeleton/index.mjs +1 -1
- package/dist/slider/index.js +2 -2
- package/dist/slider/index.mjs +1 -1
- package/dist/sonner/index.js +2 -2
- package/dist/{sonner-BbeMMXzI.js → sonner-6WfFozil.js} +2 -2
- package/dist/{sonner-BbeMMXzI.js.map → sonner-6WfFozil.js.map} +1 -1
- package/dist/spinner/index.js +2 -2
- package/dist/spinner/index.mjs +1 -1
- package/dist/style.css +668 -28
- package/dist/switch/index.js +2 -2
- package/dist/switch/index.mjs +1 -1
- package/dist/table/index.js +2 -2
- package/dist/table/index.mjs +1 -1
- package/dist/tabs/index.js +2 -2
- package/dist/tabs/index.mjs +1 -1
- package/dist/textarea/index.js +2 -2
- package/dist/textarea/index.mjs +1 -1
- package/dist/toggle/index.js +2 -2
- package/dist/toggle/index.mjs +1 -1
- package/dist/toggle-group/index.js +2 -2
- package/dist/toggle-group/index.mjs +1 -1
- package/dist/tooltip/index.js +2 -2
- package/dist/tooltip/index.mjs +1 -1
- package/dist/typography/index.d.ts +14 -0
- package/dist/typography/index.js +120 -0
- package/dist/typography/index.js.map +1 -0
- package/dist/typography/index.mjs +105 -0
- package/dist/typography/index.mjs.map +1 -0
- package/dist/{utils-TtTqRIUX.mjs → utils-Bg4z4cXr.mjs} +1 -1
- package/dist/{utils-TtTqRIUX.mjs.map → utils-Bg4z4cXr.mjs.map} +1 -1
- package/dist/{utils-BGuEr0aP.js → utils-DrngEK1K.js} +2 -2
- package/dist/{utils-BGuEr0aP.js.map → utils-DrngEK1K.js.map} +1 -1
- package/package.json +11 -8
- package/dist/form/components/Form.d.ts +0 -4
- package/dist/form/components/FormControl.d.ts +0 -3
- package/dist/form/components/FormDescription.d.ts +0 -3
- package/dist/form/components/FormField.d.ts +0 -3
- package/dist/form/components/FormItem.d.ts +0 -7
- package/dist/form/components/FormLabel.d.ts +0 -3
- package/dist/form/components/FormMessage.d.ts +0 -4
- package/dist/form/components/variants.d.ts +0 -6
- package/dist/form/context/index.d.ts +0 -4
- package/dist/form/hooks/useFormField.d.ts +0 -14
- package/dist/form/index.d.ts +0 -11
- package/dist/form/index.js +0 -19
- package/dist/form/index.mjs +0 -3
- package/dist/form/type.d.ts +0 -48
- package/dist/form-DLd4sOko.mjs +0 -183
- package/dist/form-DLd4sOko.mjs.map +0 -1
- package/dist/form-h_cJBAwg.js +0 -205
- package/dist/form-h_cJBAwg.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/select/index.js.map +0 -1
- package/dist/select/index.mjs.map +0 -1
package/dist/form/type.d.ts
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { ControllerProps, FieldPath, FieldValues, Message, SubmitHandler, UseFormReturn } from 'react-hook-form';
|
|
3
|
-
export type FormPropsType<TFormValues extends FieldValues> = {
|
|
4
|
-
onSubmit?: SubmitHandler<TFormValues>;
|
|
5
|
-
children?: React.ReactNode;
|
|
6
|
-
className?: string;
|
|
7
|
-
} & UseFormReturn<TFormValues>;
|
|
8
|
-
export type FormFieldContextValue<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> = {
|
|
9
|
-
name: TName;
|
|
10
|
-
};
|
|
11
|
-
export type FormItemContextValue = {
|
|
12
|
-
id: string;
|
|
13
|
-
};
|
|
14
|
-
export type FormMessageProps = React.ComponentProps<"p"> & {
|
|
15
|
-
render?: (message: Message) => React.ReactNode;
|
|
16
|
-
};
|
|
17
|
-
export interface FormItemPropsType<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends Omit<ControllerProps<TFieldValues, TName>, "render"> {
|
|
18
|
-
children?: ReactNode;
|
|
19
|
-
className?: string;
|
|
20
|
-
/** label 标签的文本,当不需要 label 又需要与冒号对齐,可以设为 null */
|
|
21
|
-
label?: ReactNode;
|
|
22
|
-
/**
|
|
23
|
-
* 配合 label 属性使用,表示是否显示 label 后面的冒号
|
|
24
|
-
* @default true
|
|
25
|
-
*/
|
|
26
|
-
colon?: boolean;
|
|
27
|
-
/**
|
|
28
|
-
* 是否显示错误
|
|
29
|
-
* @default true
|
|
30
|
-
*/
|
|
31
|
-
showMessage?: boolean;
|
|
32
|
-
/**
|
|
33
|
-
* 是否为必选字段,不会对表单进行验证,设置为true时会在label的开始位置显示红色的'*'
|
|
34
|
-
* @default false
|
|
35
|
-
*/
|
|
36
|
-
required?: boolean;
|
|
37
|
-
/**
|
|
38
|
-
* 渲染函数,用于渲染表单控件
|
|
39
|
-
*/
|
|
40
|
-
render?: ControllerProps<TFieldValues, TName>["render"];
|
|
41
|
-
/**
|
|
42
|
-
* 是否无样式,不显示 label 和错误信息
|
|
43
|
-
* @default false
|
|
44
|
-
*/
|
|
45
|
-
noStyle?: boolean;
|
|
46
|
-
/** 描述 */
|
|
47
|
-
description?: ReactNode;
|
|
48
|
-
}
|
package/dist/form-DLd4sOko.mjs
DELETED
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import { t as cn } from "./utils-TtTqRIUX.mjs";
|
|
2
|
-
import { Label } from "./label/index.mjs";
|
|
3
|
-
import { cva as cva$1 } from "class-variance-authority";
|
|
4
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
-
import * as React from "react";
|
|
6
|
-
import { createContext, forwardRef, useContext } from "react";
|
|
7
|
-
import { Controller, FormProvider, useFormContext, useFormState } from "react-hook-form";
|
|
8
|
-
import { Slot } from "@radix-ui/react-slot";
|
|
9
|
-
//#region \0rolldown/runtime.js
|
|
10
|
-
var __defProp = Object.defineProperty;
|
|
11
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
12
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
13
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
-
var __exportAll = (all, no_symbols) => {
|
|
15
|
-
let target = {};
|
|
16
|
-
for (var name in all) __defProp(target, name, {
|
|
17
|
-
get: all[name],
|
|
18
|
-
enumerable: true
|
|
19
|
-
});
|
|
20
|
-
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
21
|
-
return target;
|
|
22
|
-
};
|
|
23
|
-
var __copyProps = (to, from, except, desc) => {
|
|
24
|
-
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
25
|
-
key = keys[i];
|
|
26
|
-
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
27
|
-
get: ((k) => from[k]).bind(null, key),
|
|
28
|
-
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
return to;
|
|
32
|
-
};
|
|
33
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
34
|
-
//#endregion
|
|
35
|
-
//#region src/form/components/variants.ts
|
|
36
|
-
var formDescriptionVariants = cva$1("text-muted-foreground text-sm");
|
|
37
|
-
var formItemVariants = cva$1("relative grid gap-2");
|
|
38
|
-
var formItemMesVariants = cva$1("absolute bottom-0 left-0 translate-y-[calc(100%+2px)]");
|
|
39
|
-
var formMessageVariants = cva$1("text-destructive text-sm");
|
|
40
|
-
var formRootVariants = cva$1("w-full space-y-6");
|
|
41
|
-
//#endregion
|
|
42
|
-
//#region src/form/components/Form.tsx
|
|
43
|
-
var FormRoot = ({ onSubmit = () => {}, className, ...props }) => {
|
|
44
|
-
return /* @__PURE__ */ jsx(FormProvider, {
|
|
45
|
-
...props,
|
|
46
|
-
children: /* @__PURE__ */ jsx("form", {
|
|
47
|
-
onSubmit: props.handleSubmit(onSubmit),
|
|
48
|
-
className: cn(formRootVariants({ className })),
|
|
49
|
-
children: props?.children || null
|
|
50
|
-
})
|
|
51
|
-
});
|
|
52
|
-
};
|
|
53
|
-
//#endregion
|
|
54
|
-
//#region src/form/context/index.ts
|
|
55
|
-
var FormFieldContext = createContext({});
|
|
56
|
-
var FormItemContext = createContext({});
|
|
57
|
-
//#endregion
|
|
58
|
-
//#region src/form/hooks/useFormField.ts
|
|
59
|
-
var useFormField = () => {
|
|
60
|
-
const fieldContext = useContext(FormFieldContext);
|
|
61
|
-
const itemContext = useContext(FormItemContext);
|
|
62
|
-
const { getFieldState } = useFormContext();
|
|
63
|
-
const formState = useFormState({ name: fieldContext.name });
|
|
64
|
-
const fieldState = getFieldState(fieldContext.name, formState);
|
|
65
|
-
if (!fieldContext) throw new Error("useFormField should be used within <FormField>");
|
|
66
|
-
const { id } = itemContext;
|
|
67
|
-
return {
|
|
68
|
-
id,
|
|
69
|
-
name: fieldContext.name,
|
|
70
|
-
formItemId: `${id}-form-item`,
|
|
71
|
-
formDescriptionId: `${id}-form-item-description`,
|
|
72
|
-
formMessageId: `${id}-form-item-message`,
|
|
73
|
-
...fieldState
|
|
74
|
-
};
|
|
75
|
-
};
|
|
76
|
-
//#endregion
|
|
77
|
-
//#region src/form/components/FormControl.tsx
|
|
78
|
-
function FormControl({ ...props }) {
|
|
79
|
-
const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
|
|
80
|
-
return /* @__PURE__ */ jsx(Slot, {
|
|
81
|
-
"data-slot": "form-control",
|
|
82
|
-
id: formItemId,
|
|
83
|
-
"aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
|
|
84
|
-
"aria-invalid": !!error,
|
|
85
|
-
...props
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
//#endregion
|
|
89
|
-
//#region src/form/components/FormDescription.tsx
|
|
90
|
-
var FormDescription = forwardRef(({ className, ...props }, ref) => {
|
|
91
|
-
const { formDescriptionId } = useFormField();
|
|
92
|
-
return /* @__PURE__ */ jsx("p", {
|
|
93
|
-
ref,
|
|
94
|
-
"data-slot": "form-description",
|
|
95
|
-
id: formDescriptionId,
|
|
96
|
-
className: cn(formDescriptionVariants({ className })),
|
|
97
|
-
...props
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
//#endregion
|
|
101
|
-
//#region src/form/components/FormField.tsx
|
|
102
|
-
var FormField = ({ ...props }) => {
|
|
103
|
-
return /* @__PURE__ */ jsx(FormFieldContext.Provider, {
|
|
104
|
-
value: { name: props.name },
|
|
105
|
-
children: /* @__PURE__ */ jsx(Controller, { ...props })
|
|
106
|
-
});
|
|
107
|
-
};
|
|
108
|
-
//#endregion
|
|
109
|
-
//#region src/form/components/FormLabel.tsx
|
|
110
|
-
var FormLabel = forwardRef(({ className, ...props }, ref) => {
|
|
111
|
-
const { error, formItemId } = useFormField();
|
|
112
|
-
return /* @__PURE__ */ jsx(Label, {
|
|
113
|
-
ref,
|
|
114
|
-
"data-slot": "form-label",
|
|
115
|
-
"data-error": !!error,
|
|
116
|
-
className: cn(className, "inline gap-0"),
|
|
117
|
-
htmlFor: formItemId,
|
|
118
|
-
...props
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
//#endregion
|
|
122
|
-
//#region src/form/components/FormMessage.tsx
|
|
123
|
-
var FormMessage = forwardRef(({ className, render, ...props }, ref) => {
|
|
124
|
-
const { error, formMessageId } = useFormField();
|
|
125
|
-
const body = String(error?.message ?? "");
|
|
126
|
-
if (!body) return null;
|
|
127
|
-
return render ? render(body) : /* @__PURE__ */ jsx("p", {
|
|
128
|
-
ref,
|
|
129
|
-
"data-slot": "form-message",
|
|
130
|
-
id: formMessageId,
|
|
131
|
-
className: cn(formMessageVariants({ className })),
|
|
132
|
-
...props,
|
|
133
|
-
children: body
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
//#endregion
|
|
137
|
-
//#region src/form/components/FormItem.tsx
|
|
138
|
-
var FormItem = ({ className, children, label, showMessage = true, colon = true, required = false, render, noStyle = false, description, ...controllerProps }, ref) => {
|
|
139
|
-
const id = React.useId();
|
|
140
|
-
const content = /* @__PURE__ */ jsx(Controller, {
|
|
141
|
-
name: controllerProps.name,
|
|
142
|
-
control: controllerProps.control,
|
|
143
|
-
rules: controllerProps.rules,
|
|
144
|
-
shouldUnregister: controllerProps.shouldUnregister,
|
|
145
|
-
defaultValue: controllerProps.defaultValue,
|
|
146
|
-
disabled: controllerProps.disabled,
|
|
147
|
-
exact: controllerProps.exact,
|
|
148
|
-
render: (...res) => {
|
|
149
|
-
return /* @__PURE__ */ jsx(FormControl, { children: render ? render(...res) : React.isValidElement(children) ? React.cloneElement(children, res[0].field) : children });
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
if (noStyle) return content;
|
|
153
|
-
const formItemContent = /* @__PURE__ */ jsxs("div", {
|
|
154
|
-
ref,
|
|
155
|
-
"data-slot": "form-item",
|
|
156
|
-
className: cn(formItemVariants(), className),
|
|
157
|
-
children: [
|
|
158
|
-
label && /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(FormLabel, { children: [
|
|
159
|
-
required && /* @__PURE__ */ jsx("span", {
|
|
160
|
-
className: "mr-1 text-red-500",
|
|
161
|
-
children: "*"
|
|
162
|
-
}),
|
|
163
|
-
label,
|
|
164
|
-
colon && ":"
|
|
165
|
-
] }) }),
|
|
166
|
-
content,
|
|
167
|
-
description && /* @__PURE__ */ jsx(FormDescription, {}),
|
|
168
|
-
showMessage && /* @__PURE__ */ jsx(FormMessage, { className: cn(formItemMesVariants()) })
|
|
169
|
-
]
|
|
170
|
-
});
|
|
171
|
-
return /* @__PURE__ */ jsx(FormItemContext.Provider, {
|
|
172
|
-
value: { id },
|
|
173
|
-
children: /* @__PURE__ */ jsx(FormFieldContext.Provider, {
|
|
174
|
-
value: { name: controllerProps.name },
|
|
175
|
-
children: formItemContent
|
|
176
|
-
})
|
|
177
|
-
});
|
|
178
|
-
};
|
|
179
|
-
var FormItemWithRef = React.forwardRef(FormItem);
|
|
180
|
-
//#endregion
|
|
181
|
-
export { FormDescription as a, FormRoot as c, FormField as i, __exportAll as l, FormMessage as n, FormControl as o, FormLabel as r, useFormField as s, FormItemWithRef as t, __reExport as u };
|
|
182
|
-
|
|
183
|
-
//# sourceMappingURL=form-DLd4sOko.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"form-DLd4sOko.mjs","names":[],"sources":["../src/form/components/variants.ts","../src/form/components/Form.tsx","../src/form/context/index.ts","../src/form/hooks/useFormField.ts","../src/form/components/FormControl.tsx","../src/form/components/FormDescription.tsx","../src/form/components/FormField.tsx","../src/form/components/FormLabel.tsx","../src/form/components/FormMessage.tsx","../src/form/components/FormItem.tsx"],"sourcesContent":["import { cva } from \"../../../lib\";\n\nexport const formDescriptionVariants = cva(\"text-muted-foreground text-sm\");\n\nexport const formItemVariants = cva(\"relative grid gap-2\");\n\nexport const formItemMesVariants = cva(\n \"absolute bottom-0 left-0 translate-y-[calc(100%+2px)]\",\n);\n\nexport const formMessageVariants = cva(\"text-destructive text-sm\");\n\nexport const formRootVariants = cva(\"w-full space-y-6\");\n","import { type FieldValues, FormProvider } from \"react-hook-form\";\nimport { cn } from \"../../../lib\";\nimport type { FormPropsType } from \"../type\";\nimport { formRootVariants } from \"./variants\";\n\nconst FormRoot = <TFormValues extends FieldValues>({\n onSubmit = () => {},\n className,\n ...props\n}: FormPropsType<TFormValues>) => {\n return (\n <FormProvider {...props}>\n <form\n onSubmit={props.handleSubmit(onSubmit)}\n className={cn(formRootVariants({ className }))}\n >\n {props?.children || null}\n </form>\n </FormProvider>\n );\n};\nexport default FormRoot;\n","\"use client\";\n\nimport { createContext } from \"react\";\nimport type { FormFieldContextValue, FormItemContextValue } from \"../type\";\n\nexport const FormFieldContext = createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nexport const FormItemContext = createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n","import { useContext } from \"react\";\nimport { useFormContext, useFormState } from \"react-hook-form\";\nimport { FormFieldContext, FormItemContext } from \"../context\";\n\nconst useFormField = () => {\n const fieldContext = useContext(FormFieldContext);\n const itemContext = useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\nexport default useFormField;\n","import { Slot } from \"@radix-ui/react-slot\";\nimport useFormField from \"../hooks/useFormField\";\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nexport default FormControl;\n","import { ComponentProps, forwardRef } from \"react\";\nimport { cn } from \"../../../lib\";\nimport useFormField from \"../hooks/useFormField\";\nimport { formDescriptionVariants } from \"./variants\";\n\nconst FormDescription = forwardRef<HTMLParagraphElement, ComponentProps<\"p\">>(\n ({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(formDescriptionVariants({ className }))}\n {...props}\n />\n );\n },\n);\n\nexport default FormDescription;\n","import {\n Controller,\n ControllerProps,\n FieldPath,\n FieldValues,\n} from \"react-hook-form\";\nimport { FormFieldContext } from \"../context\";\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nexport default FormField;\n","import { ComponentProps, forwardRef } from \"react\";\nimport { cn } from \"../../../lib\";\nimport { Label } from \"../../label\";\nimport useFormField from \"../hooks/useFormField\";\n\nconst FormLabel = forwardRef<HTMLLabelElement, ComponentProps<typeof Label>>(\n ({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(className, \"inline gap-0\")}\n htmlFor={formItemId}\n {...props}\n />\n );\n },\n);\n\nexport default FormLabel;\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../../lib\";\nimport useFormField from \"../hooks/useFormField\";\nimport type { FormMessageProps } from \"../type\";\nimport { formMessageVariants } from \"./variants\";\n\nconst FormMessage = forwardRef<HTMLParagraphElement, FormMessageProps>(\n ({ className, render, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = String(error?.message ?? \"\");\n\n if (!body) {\n return null;\n }\n\n return render ? (\n render(body)\n ) : (\n <p\n ref={ref}\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(formMessageVariants({ className }))}\n {...props}\n >\n {body}\n </p>\n );\n },\n);\n\nexport default FormMessage;\n","import * as React from \"react\";\nimport { Controller, FieldPath, FieldValues } from \"react-hook-form\";\nimport { cn } from \"../../../lib\";\nimport { FormFieldContext, FormItemContext } from \"../context\";\nimport { FormItemPropsType } from \"../type\";\nimport FormControl from \"./FormControl\";\nimport FormDescription from \"./FormDescription\";\nimport FormLabel from \"./FormLabel\";\nimport FormMessage from \"./FormMessage\";\nimport { formItemMesVariants, formItemVariants } from \"./variants\";\n\nconst FormItem = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(\n {\n className,\n children,\n label,\n showMessage = true,\n colon = true,\n required = false,\n render,\n noStyle = false,\n description,\n ...controllerProps\n }: FormItemPropsType<TFieldValues, TName>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const id = React.useId();\n\n // 如果没有提供render函数,则使用children作为内容\n const content = (\n <Controller\n name={controllerProps.name}\n control={controllerProps.control}\n rules={controllerProps.rules}\n shouldUnregister={controllerProps.shouldUnregister}\n defaultValue={controllerProps.defaultValue}\n disabled={controllerProps.disabled}\n exact={controllerProps.exact}\n render={(...res) => {\n return (\n <FormControl>\n {render\n ? render(...res)\n : React.isValidElement(children)\n ? React.cloneElement(children, res[0].field)\n : children}\n </FormControl>\n );\n }}\n />\n );\n\n if (noStyle) return content;\n\n const formItemContent = (\n <div\n ref={ref}\n data-slot=\"form-item\"\n className={cn(formItemVariants(), className)}\n >\n {label && (\n <div>\n <FormLabel>\n {required && <span className=\"mr-1 text-red-500\">*</span>}\n {label}\n {colon && \":\"}\n </FormLabel>\n </div>\n )}\n\n {content}\n {description && <FormDescription></FormDescription>}\n {showMessage && <FormMessage className={cn(formItemMesVariants())} />}\n </div>\n );\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <FormFieldContext.Provider value={{ name: controllerProps.name }}>\n {formItemContent}\n </FormFieldContext.Provider>\n </FormItemContext.Provider>\n );\n};\n\nconst FormItemWithRef = React.forwardRef(FormItem) as <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(\n props: FormItemPropsType<TFieldValues, TName> & {\n ref?: React.Ref<HTMLDivElement>;\n },\n) => React.ReactElement;\n\nexport default FormItemWithRef;\n"],"mappings":"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"}
|
package/dist/form-h_cJBAwg.js
DELETED
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
const require_chunk = require("./chunk-CoQrYLCe.js");
|
|
2
|
-
const require_utils = require("./utils-BGuEr0aP.js");
|
|
3
|
-
const require_label = require("./label/index.js");
|
|
4
|
-
let react_jsx_runtime = require("react/jsx-runtime");
|
|
5
|
-
let react = require("react");
|
|
6
|
-
react = require_chunk.__toESM(react);
|
|
7
|
-
let react_hook_form = require("react-hook-form");
|
|
8
|
-
let _radix_ui_react_slot = require("@radix-ui/react-slot");
|
|
9
|
-
let class_variance_authority = require("class-variance-authority");
|
|
10
|
-
//#region src/form/components/variants.ts
|
|
11
|
-
var formDescriptionVariants = (0, class_variance_authority.cva)("text-muted-foreground text-sm");
|
|
12
|
-
var formItemVariants = (0, class_variance_authority.cva)("relative grid gap-2");
|
|
13
|
-
var formItemMesVariants = (0, class_variance_authority.cva)("absolute bottom-0 left-0 translate-y-[calc(100%+2px)]");
|
|
14
|
-
var formMessageVariants = (0, class_variance_authority.cva)("text-destructive text-sm");
|
|
15
|
-
var formRootVariants = (0, class_variance_authority.cva)("w-full space-y-6");
|
|
16
|
-
//#endregion
|
|
17
|
-
//#region src/form/components/Form.tsx
|
|
18
|
-
var FormRoot = ({ onSubmit = () => {}, className, ...props }) => {
|
|
19
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_hook_form.FormProvider, {
|
|
20
|
-
...props,
|
|
21
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("form", {
|
|
22
|
-
onSubmit: props.handleSubmit(onSubmit),
|
|
23
|
-
className: require_utils.cn(formRootVariants({ className })),
|
|
24
|
-
children: props?.children || null
|
|
25
|
-
})
|
|
26
|
-
});
|
|
27
|
-
};
|
|
28
|
-
//#endregion
|
|
29
|
-
//#region src/form/context/index.ts
|
|
30
|
-
var FormFieldContext = (0, react.createContext)({});
|
|
31
|
-
var FormItemContext = (0, react.createContext)({});
|
|
32
|
-
//#endregion
|
|
33
|
-
//#region src/form/hooks/useFormField.ts
|
|
34
|
-
var useFormField = () => {
|
|
35
|
-
const fieldContext = (0, react.useContext)(FormFieldContext);
|
|
36
|
-
const itemContext = (0, react.useContext)(FormItemContext);
|
|
37
|
-
const { getFieldState } = (0, react_hook_form.useFormContext)();
|
|
38
|
-
const formState = (0, react_hook_form.useFormState)({ name: fieldContext.name });
|
|
39
|
-
const fieldState = getFieldState(fieldContext.name, formState);
|
|
40
|
-
if (!fieldContext) throw new Error("useFormField should be used within <FormField>");
|
|
41
|
-
const { id } = itemContext;
|
|
42
|
-
return {
|
|
43
|
-
id,
|
|
44
|
-
name: fieldContext.name,
|
|
45
|
-
formItemId: `${id}-form-item`,
|
|
46
|
-
formDescriptionId: `${id}-form-item-description`,
|
|
47
|
-
formMessageId: `${id}-form-item-message`,
|
|
48
|
-
...fieldState
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
//#endregion
|
|
52
|
-
//#region src/form/components/FormControl.tsx
|
|
53
|
-
function FormControl({ ...props }) {
|
|
54
|
-
const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
|
|
55
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_slot.Slot, {
|
|
56
|
-
"data-slot": "form-control",
|
|
57
|
-
id: formItemId,
|
|
58
|
-
"aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
|
|
59
|
-
"aria-invalid": !!error,
|
|
60
|
-
...props
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
//#endregion
|
|
64
|
-
//#region src/form/components/FormDescription.tsx
|
|
65
|
-
var FormDescription = (0, react.forwardRef)(({ className, ...props }, ref) => {
|
|
66
|
-
const { formDescriptionId } = useFormField();
|
|
67
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
68
|
-
ref,
|
|
69
|
-
"data-slot": "form-description",
|
|
70
|
-
id: formDescriptionId,
|
|
71
|
-
className: require_utils.cn(formDescriptionVariants({ className })),
|
|
72
|
-
...props
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
//#endregion
|
|
76
|
-
//#region src/form/components/FormField.tsx
|
|
77
|
-
var FormField = ({ ...props }) => {
|
|
78
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormFieldContext.Provider, {
|
|
79
|
-
value: { name: props.name },
|
|
80
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_hook_form.Controller, { ...props })
|
|
81
|
-
});
|
|
82
|
-
};
|
|
83
|
-
//#endregion
|
|
84
|
-
//#region src/form/components/FormLabel.tsx
|
|
85
|
-
var FormLabel = (0, react.forwardRef)(({ className, ...props }, ref) => {
|
|
86
|
-
const { error, formItemId } = useFormField();
|
|
87
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_label.Label, {
|
|
88
|
-
ref,
|
|
89
|
-
"data-slot": "form-label",
|
|
90
|
-
"data-error": !!error,
|
|
91
|
-
className: require_utils.cn(className, "inline gap-0"),
|
|
92
|
-
htmlFor: formItemId,
|
|
93
|
-
...props
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
//#endregion
|
|
97
|
-
//#region src/form/components/FormMessage.tsx
|
|
98
|
-
var FormMessage = (0, react.forwardRef)(({ className, render, ...props }, ref) => {
|
|
99
|
-
const { error, formMessageId } = useFormField();
|
|
100
|
-
const body = String(error?.message ?? "");
|
|
101
|
-
if (!body) return null;
|
|
102
|
-
return render ? render(body) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
103
|
-
ref,
|
|
104
|
-
"data-slot": "form-message",
|
|
105
|
-
id: formMessageId,
|
|
106
|
-
className: require_utils.cn(formMessageVariants({ className })),
|
|
107
|
-
...props,
|
|
108
|
-
children: body
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
//#endregion
|
|
112
|
-
//#region src/form/components/FormItem.tsx
|
|
113
|
-
var FormItem = ({ className, children, label, showMessage = true, colon = true, required = false, render, noStyle = false, description, ...controllerProps }, ref) => {
|
|
114
|
-
const id = react.useId();
|
|
115
|
-
const content = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_hook_form.Controller, {
|
|
116
|
-
name: controllerProps.name,
|
|
117
|
-
control: controllerProps.control,
|
|
118
|
-
rules: controllerProps.rules,
|
|
119
|
-
shouldUnregister: controllerProps.shouldUnregister,
|
|
120
|
-
defaultValue: controllerProps.defaultValue,
|
|
121
|
-
disabled: controllerProps.disabled,
|
|
122
|
-
exact: controllerProps.exact,
|
|
123
|
-
render: (...res) => {
|
|
124
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormControl, { children: render ? render(...res) : react.isValidElement(children) ? react.cloneElement(children, res[0].field) : children });
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
if (noStyle) return content;
|
|
128
|
-
const formItemContent = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
129
|
-
ref,
|
|
130
|
-
"data-slot": "form-item",
|
|
131
|
-
className: require_utils.cn(formItemVariants(), className),
|
|
132
|
-
children: [
|
|
133
|
-
label && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(FormLabel, { children: [
|
|
134
|
-
required && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
135
|
-
className: "mr-1 text-red-500",
|
|
136
|
-
children: "*"
|
|
137
|
-
}),
|
|
138
|
-
label,
|
|
139
|
-
colon && ":"
|
|
140
|
-
] }) }),
|
|
141
|
-
content,
|
|
142
|
-
description && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormDescription, {}),
|
|
143
|
-
showMessage && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormMessage, { className: require_utils.cn(formItemMesVariants()) })
|
|
144
|
-
]
|
|
145
|
-
});
|
|
146
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormItemContext.Provider, {
|
|
147
|
-
value: { id },
|
|
148
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FormFieldContext.Provider, {
|
|
149
|
-
value: { name: controllerProps.name },
|
|
150
|
-
children: formItemContent
|
|
151
|
-
})
|
|
152
|
-
});
|
|
153
|
-
};
|
|
154
|
-
var FormItemWithRef = react.forwardRef(FormItem);
|
|
155
|
-
//#endregion
|
|
156
|
-
Object.defineProperty(exports, "FormControl", {
|
|
157
|
-
enumerable: true,
|
|
158
|
-
get: function() {
|
|
159
|
-
return FormControl;
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
Object.defineProperty(exports, "FormDescription", {
|
|
163
|
-
enumerable: true,
|
|
164
|
-
get: function() {
|
|
165
|
-
return FormDescription;
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
Object.defineProperty(exports, "FormField", {
|
|
169
|
-
enumerable: true,
|
|
170
|
-
get: function() {
|
|
171
|
-
return FormField;
|
|
172
|
-
}
|
|
173
|
-
});
|
|
174
|
-
Object.defineProperty(exports, "FormItemWithRef", {
|
|
175
|
-
enumerable: true,
|
|
176
|
-
get: function() {
|
|
177
|
-
return FormItemWithRef;
|
|
178
|
-
}
|
|
179
|
-
});
|
|
180
|
-
Object.defineProperty(exports, "FormLabel", {
|
|
181
|
-
enumerable: true,
|
|
182
|
-
get: function() {
|
|
183
|
-
return FormLabel;
|
|
184
|
-
}
|
|
185
|
-
});
|
|
186
|
-
Object.defineProperty(exports, "FormMessage", {
|
|
187
|
-
enumerable: true,
|
|
188
|
-
get: function() {
|
|
189
|
-
return FormMessage;
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
|
-
Object.defineProperty(exports, "FormRoot", {
|
|
193
|
-
enumerable: true,
|
|
194
|
-
get: function() {
|
|
195
|
-
return FormRoot;
|
|
196
|
-
}
|
|
197
|
-
});
|
|
198
|
-
Object.defineProperty(exports, "useFormField", {
|
|
199
|
-
enumerable: true,
|
|
200
|
-
get: function() {
|
|
201
|
-
return useFormField;
|
|
202
|
-
}
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
//# sourceMappingURL=form-h_cJBAwg.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"form-h_cJBAwg.js","names":[],"sources":["../src/form/components/variants.ts","../src/form/components/Form.tsx","../src/form/context/index.ts","../src/form/hooks/useFormField.ts","../src/form/components/FormControl.tsx","../src/form/components/FormDescription.tsx","../src/form/components/FormField.tsx","../src/form/components/FormLabel.tsx","../src/form/components/FormMessage.tsx","../src/form/components/FormItem.tsx"],"sourcesContent":["import { cva } from \"../../../lib\";\n\nexport const formDescriptionVariants = cva(\"text-muted-foreground text-sm\");\n\nexport const formItemVariants = cva(\"relative grid gap-2\");\n\nexport const formItemMesVariants = cva(\n \"absolute bottom-0 left-0 translate-y-[calc(100%+2px)]\",\n);\n\nexport const formMessageVariants = cva(\"text-destructive text-sm\");\n\nexport const formRootVariants = cva(\"w-full space-y-6\");\n","import { type FieldValues, FormProvider } from \"react-hook-form\";\nimport { cn } from \"../../../lib\";\nimport type { FormPropsType } from \"../type\";\nimport { formRootVariants } from \"./variants\";\n\nconst FormRoot = <TFormValues extends FieldValues>({\n onSubmit = () => {},\n className,\n ...props\n}: FormPropsType<TFormValues>) => {\n return (\n <FormProvider {...props}>\n <form\n onSubmit={props.handleSubmit(onSubmit)}\n className={cn(formRootVariants({ className }))}\n >\n {props?.children || null}\n </form>\n </FormProvider>\n );\n};\nexport default FormRoot;\n","\"use client\";\n\nimport { createContext } from \"react\";\nimport type { FormFieldContextValue, FormItemContextValue } from \"../type\";\n\nexport const FormFieldContext = createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nexport const FormItemContext = createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n","import { useContext } from \"react\";\nimport { useFormContext, useFormState } from \"react-hook-form\";\nimport { FormFieldContext, FormItemContext } from \"../context\";\n\nconst useFormField = () => {\n const fieldContext = useContext(FormFieldContext);\n const itemContext = useContext(FormItemContext);\n const { getFieldState } = useFormContext();\n const formState = useFormState({ name: fieldContext.name });\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\");\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\nexport default useFormField;\n","import { Slot } from \"@radix-ui/react-slot\";\nimport useFormField from \"../hooks/useFormField\";\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n}\n\nexport default FormControl;\n","import { ComponentProps, forwardRef } from \"react\";\nimport { cn } from \"../../../lib\";\nimport useFormField from \"../hooks/useFormField\";\nimport { formDescriptionVariants } from \"./variants\";\n\nconst FormDescription = forwardRef<HTMLParagraphElement, ComponentProps<\"p\">>(\n ({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(formDescriptionVariants({ className }))}\n {...props}\n />\n );\n },\n);\n\nexport default FormDescription;\n","import {\n Controller,\n ControllerProps,\n FieldPath,\n FieldValues,\n} from \"react-hook-form\";\nimport { FormFieldContext } from \"../context\";\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nexport default FormField;\n","import { ComponentProps, forwardRef } from \"react\";\nimport { cn } from \"../../../lib\";\nimport { Label } from \"../../label\";\nimport useFormField from \"../hooks/useFormField\";\n\nconst FormLabel = forwardRef<HTMLLabelElement, ComponentProps<typeof Label>>(\n ({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(className, \"inline gap-0\")}\n htmlFor={formItemId}\n {...props}\n />\n );\n },\n);\n\nexport default FormLabel;\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../../lib\";\nimport useFormField from \"../hooks/useFormField\";\nimport type { FormMessageProps } from \"../type\";\nimport { formMessageVariants } from \"./variants\";\n\nconst FormMessage = forwardRef<HTMLParagraphElement, FormMessageProps>(\n ({ className, render, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = String(error?.message ?? \"\");\n\n if (!body) {\n return null;\n }\n\n return render ? (\n render(body)\n ) : (\n <p\n ref={ref}\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(formMessageVariants({ className }))}\n {...props}\n >\n {body}\n </p>\n );\n },\n);\n\nexport default FormMessage;\n","import * as React from \"react\";\nimport { Controller, FieldPath, FieldValues } from \"react-hook-form\";\nimport { cn } from \"../../../lib\";\nimport { FormFieldContext, FormItemContext } from \"../context\";\nimport { FormItemPropsType } from \"../type\";\nimport FormControl from \"./FormControl\";\nimport FormDescription from \"./FormDescription\";\nimport FormLabel from \"./FormLabel\";\nimport FormMessage from \"./FormMessage\";\nimport { formItemMesVariants, formItemVariants } from \"./variants\";\n\nconst FormItem = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(\n {\n className,\n children,\n label,\n showMessage = true,\n colon = true,\n required = false,\n render,\n noStyle = false,\n description,\n ...controllerProps\n }: FormItemPropsType<TFieldValues, TName>,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const id = React.useId();\n\n // 如果没有提供render函数,则使用children作为内容\n const content = (\n <Controller\n name={controllerProps.name}\n control={controllerProps.control}\n rules={controllerProps.rules}\n shouldUnregister={controllerProps.shouldUnregister}\n defaultValue={controllerProps.defaultValue}\n disabled={controllerProps.disabled}\n exact={controllerProps.exact}\n render={(...res) => {\n return (\n <FormControl>\n {render\n ? render(...res)\n : React.isValidElement(children)\n ? React.cloneElement(children, res[0].field)\n : children}\n </FormControl>\n );\n }}\n />\n );\n\n if (noStyle) return content;\n\n const formItemContent = (\n <div\n ref={ref}\n data-slot=\"form-item\"\n className={cn(formItemVariants(), className)}\n >\n {label && (\n <div>\n <FormLabel>\n {required && <span className=\"mr-1 text-red-500\">*</span>}\n {label}\n {colon && \":\"}\n </FormLabel>\n </div>\n )}\n\n {content}\n {description && <FormDescription></FormDescription>}\n {showMessage && <FormMessage className={cn(formItemMesVariants())} />}\n </div>\n );\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <FormFieldContext.Provider value={{ name: controllerProps.name }}>\n {formItemContent}\n </FormFieldContext.Provider>\n </FormItemContext.Provider>\n );\n};\n\nconst FormItemWithRef = React.forwardRef(FormItem) as <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(\n props: FormItemPropsType<TFieldValues, TName> & {\n ref?: React.Ref<HTMLDivElement>;\n },\n) => React.ReactElement;\n\nexport default FormItemWithRef;\n"],"mappings":"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"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["export * from \"./accordion\";\nexport * from \"./alert\";\nexport * from \"./alert-dialog\";\nexport * from \"./aspect-ratio\";\nexport * from \"./avatar\";\nexport * from \"./badge\";\nexport * from \"./breadcrumb\";\nexport * from \"./button\";\nexport * from \"./button-group\";\nexport * from \"./calendar\";\nexport * from \"./card\";\nexport * from \"./carousel\";\nexport * from \"./chart\";\nexport * from \"./checkbox\";\nexport * from \"./collapsible\";\nexport * from \"./combobox\";\nexport * from \"./command\";\nexport * from \"./context-menu\";\nexport * from \"./date-picker\";\nexport * from \"./dialog\";\nexport * from \"./direction\";\nexport * from \"./drawer\";\nexport * from \"./dropdown-menu\";\nexport * from \"./empty\";\nexport {\n Field,\n FieldContent,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLabel,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldTitle,\n} from \"./field\";\nexport * from \"./form\";\nexport * from \"./hover-card\";\nexport * from \"./input\";\nexport * from \"./input-group\";\nexport * from \"./input-otp\";\nexport * from \"./item\";\nexport * from \"./kbd\";\nexport * from \"./label\";\nexport * from \"./menubar\";\nexport * from \"./native-select\";\nexport * from \"./navigation-menu\";\nexport * from \"./pagination\";\nexport * from \"./popover\";\nexport * from \"./progress\";\nexport * from \"./radio-group\";\nexport * from \"./resizable\";\nexport * from \"./scroll-area\";\nexport * from \"./select\";\nexport * from \"./separator\";\nexport * from \"./sheet\";\nexport * from \"./sidebar\";\nexport * from \"./skeleton\";\nexport * from \"./slider\";\nexport * from \"./sonner\";\nexport * from \"./spinner\";\nexport * from \"./switch\";\nexport * from \"./table\";\nexport * from \"./tabs\";\nexport * from \"./textarea\";\nexport * from \"./toggle\";\nexport * from \"./toggle-group\";\nexport * from \"./tooltip\";\n"],"mappings":""}
|
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["export * from \"./accordion\";\nexport * from \"./alert\";\nexport * from \"./alert-dialog\";\nexport * from \"./aspect-ratio\";\nexport * from \"./avatar\";\nexport * from \"./badge\";\nexport * from \"./breadcrumb\";\nexport * from \"./button\";\nexport * from \"./button-group\";\nexport * from \"./calendar\";\nexport * from \"./card\";\nexport * from \"./carousel\";\nexport * from \"./chart\";\nexport * from \"./checkbox\";\nexport * from \"./collapsible\";\nexport * from \"./combobox\";\nexport * from \"./command\";\nexport * from \"./context-menu\";\nexport * from \"./date-picker\";\nexport * from \"./dialog\";\nexport * from \"./direction\";\nexport * from \"./drawer\";\nexport * from \"./dropdown-menu\";\nexport * from \"./empty\";\nexport {\n Field,\n FieldContent,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLabel,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldTitle,\n} from \"./field\";\nexport * from \"./form\";\nexport * from \"./hover-card\";\nexport * from \"./input\";\nexport * from \"./input-group\";\nexport * from \"./input-otp\";\nexport * from \"./item\";\nexport * from \"./kbd\";\nexport * from \"./label\";\nexport * from \"./menubar\";\nexport * from \"./native-select\";\nexport * from \"./navigation-menu\";\nexport * from \"./pagination\";\nexport * from \"./popover\";\nexport * from \"./progress\";\nexport * from \"./radio-group\";\nexport * from \"./resizable\";\nexport * from \"./scroll-area\";\nexport * from \"./select\";\nexport * from \"./separator\";\nexport * from \"./sheet\";\nexport * from \"./sidebar\";\nexport * from \"./skeleton\";\nexport * from \"./slider\";\nexport * from \"./sonner\";\nexport * from \"./spinner\";\nexport * from \"./switch\";\nexport * from \"./table\";\nexport * from \"./tabs\";\nexport * from \"./textarea\";\nexport * from \"./toggle\";\nexport * from \"./toggle-group\";\nexport * from \"./tooltip\";\n"],"mappings":""}
|
package/dist/select/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/select/index.tsx"],"sourcesContent":["\"use client\";\n\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\";\nimport * as React from \"react\";\n\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\nimport { cn } from \"../../lib\";\n\nconst Select = SelectPrimitive.Root;\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\"flex flex-1 text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 flex w-fit select-none items-center justify-between gap-1.5 whitespace-nowrap rounded-lg border bg-transparent py-2 pl-2.5 pr-2 text-sm outline-none transition-colors disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4\" />\n }\n />\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n data-align-trigger={alignItemWithTrigger}\n className={cn(\n \"max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) bg-popover text-popover-foreground ring-foreground/10 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 relative isolate z-50 min-w-36 overflow-y-auto overflow-x-hidden rounded-lg shadow-md ring-1 duration-100 data-[align-trigger=true]:animate-none\",\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-1.5 py-1 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"outline-hidden focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default select-none items-center gap-1.5 rounded-md py-1 pl-1.5 pr-8 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex flex-1 shrink-0 gap-2 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <CheckIcon className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"bg-popover top-0 z-10 flex w-full cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <ChevronUpIcon />\n </SelectPrimitive.ScrollUpArrow>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"bg-popover bottom-0 z-10 flex w-full cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <ChevronDownIcon />\n </SelectPrimitive.ScrollDownArrow>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/select/index.tsx"],"sourcesContent":["\"use client\";\n\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\";\nimport * as React from \"react\";\n\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\nimport { cn } from \"../../lib\";\n\nconst Select = SelectPrimitive.Root;\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\"flex flex-1 text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 flex w-fit select-none items-center justify-between gap-1.5 whitespace-nowrap rounded-lg border bg-transparent py-2 pl-2.5 pr-2 text-sm outline-none transition-colors disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <ChevronDownIcon className=\"text-muted-foreground pointer-events-none size-4\" />\n }\n />\n </SelectPrimitive.Trigger>\n );\n}\n\nfunction SelectContent({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n data-align-trigger={alignItemWithTrigger}\n className={cn(\n \"max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) bg-popover text-popover-foreground ring-foreground/10 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 relative isolate z-50 min-w-36 overflow-y-auto overflow-x-hidden rounded-lg shadow-md ring-1 duration-100 data-[align-trigger=true]:animate-none\",\n className,\n )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-1.5 py-1 text-xs\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"outline-hidden focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default select-none items-center gap-1.5 rounded-md py-1 pl-1.5 pr-8 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex flex-1 shrink-0 gap-2 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={\n <span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />\n }\n >\n <CheckIcon className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"bg-popover top-0 z-10 flex w-full cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <ChevronUpIcon />\n </SelectPrimitive.ScrollUpArrow>\n );\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"bg-popover bottom-0 z-10 flex w-full cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <ChevronDownIcon />\n </SelectPrimitive.ScrollDownArrow>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"mappings":";;;;;;;AAQA,IAAM,SAAS,SAAgB;AAE/B,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;AACzE,QACE,oBAAC,SAAgB,OAAjB;EACE,aAAU;EACV,WAAW,GAAG,mBAAmB,UAAU;EAC3C,GAAI;EACJ,CAAA;;AAIN,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;AACzE,QACE,oBAAC,SAAgB,OAAjB;EACE,aAAU;EACV,WAAW,GAAG,yBAAyB,UAAU;EACjD,GAAI;EACJ,CAAA;;AAIN,SAAS,cAAc,EACrB,WACA,OAAO,WACP,UACA,GAAG,SAGF;AACD,QACE,qBAAC,SAAgB,SAAjB;EACE,aAAU;EACV,aAAW;EACX,WAAW,GACT,u2BACA,UACD;EACD,GAAI;YAPN,CASG,UACD,oBAAC,SAAgB,MAAjB,EACE,QACE,oBAAC,iBAAD,EAAiB,WAAU,oDAAqD,CAAA,EAElF,CAAA,CACsB;;;AAI9B,SAAS,cAAc,EACrB,WACA,UACA,OAAO,UACP,aAAa,GACb,QAAQ,UACR,cAAc,GACd,uBAAuB,MACvB,GAAG,SAKA;AACH,QACE,oBAAC,SAAgB,QAAjB,EAAA,UACE,oBAAC,SAAgB,YAAjB;EACQ;EACM;EACL;EACM;EACS;EACtB,WAAU;YAEV,qBAAC,SAAgB,OAAjB;GACE,aAAU;GACV,sBAAoB;GACpB,WAAW,GACT,gpBACA,UACD;GACD,GAAI;aAPN;IASE,oBAAC,sBAAD,EAAwB,CAAA;IACxB,oBAAC,SAAgB,MAAjB,EAAuB,UAAgC,CAAA;IACvD,oBAAC,wBAAD,EAA0B,CAAA;IACJ;;EACG,CAAA,EACN,CAAA;;AAI7B,SAAS,YAAY,EACnB,WACA,GAAG,SACgC;AACnC,QACE,oBAAC,SAAgB,YAAjB;EACE,aAAU;EACV,WAAW,GAAG,6CAA6C,UAAU;EACrE,GAAI;EACJ,CAAA;;AAIN,SAAS,WAAW,EAClB,WACA,UACA,GAAG,SAC0B;AAC7B,QACE,qBAAC,SAAgB,MAAjB;EACE,aAAU;EACV,WAAW,GACT,sbACA,UACD;EACD,GAAI;YANN,CAQE,oBAAC,SAAgB,UAAjB;GAA0B,WAAU;GACjC;GACwB,CAAA,EAC3B,oBAAC,SAAgB,eAAjB;GACE,QACE,oBAAC,QAAD,EAAM,WAAU,gFAAiF,CAAA;aAGnG,oBAAC,WAAD,EAAW,WAAU,uBAAwB,CAAA;GACf,CAAA,CACX;;;AAI3B,SAAS,gBAAgB,EACvB,WACA,GAAG,SAC+B;AAClC,QACE,oBAAC,SAAgB,WAAjB;EACE,aAAU;EACV,WAAW,GAAG,iDAAiD,UAAU;EACzE,GAAI;EACJ,CAAA;;AAIN,SAAS,qBAAqB,EAC5B,WACA,GAAG,SAC0D;AAC7D,QACE,oBAAC,SAAgB,eAAjB;EACE,aAAU;EACV,WAAW,GACT,0HACA,UACD;EACD,GAAI;YAEJ,oBAAC,eAAD,EAAiB,CAAA;EACa,CAAA;;AAIpC,SAAS,uBAAuB,EAC9B,WACA,GAAG,SAC4D;AAC/D,QACE,oBAAC,SAAgB,iBAAjB;EACE,aAAU;EACV,WAAW,GACT,6HACA,UACD;EACD,GAAI;YAEJ,oBAAC,iBAAD,EAAmB,CAAA;EACa,CAAA"}
|