@zayne-labs/ui-react 0.9.19 → 0.9.21

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/css/theme.css CHANGED
@@ -1,3 +1,9 @@
1
1
  @theme {
2
- --color-shadcn-muted-foreground: hsl(215.4, 16.3%, 46.9%);
2
+ --color-shadcn-muted-foreground: oklch(0.556 0 0);
3
+ --color-shadcn-destructive: oklch(0.577 0.245 27.325);
4
+ }
5
+
6
+ :where(.dark, [data-theme="dark"]) {
7
+ --color-shadcn-muted-foreground: oklch(0.708 0 0);
8
+ --color-shadcn-destructive: oklch(0.704 0.191 22.216);
3
9
  }
@@ -0,0 +1,95 @@
1
+ import { __export } from "./chunk-Cl8Af3a2.js";
2
+ import { SlotRoot } from "./slot-RXTKo4L7.js";
3
+ import { cnMerge } from "./cn-_FbtIrlZ.js";
4
+ import "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+
7
+ //#region src/components/ui/card/card.tsx
8
+ function CardRoot(props) {
9
+ const { as: Element = "article",...restOfProps } = props;
10
+ return /* @__PURE__ */ jsx(Element, {
11
+ "data-scope": "card",
12
+ "data-part": "root",
13
+ "data-slot": "card-root",
14
+ className: "flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
15
+ ...restOfProps
16
+ });
17
+ }
18
+ function CardHeader(props) {
19
+ const { as: Element = "header",...restOfProps } = props;
20
+ return /* @__PURE__ */ jsx(Element, {
21
+ "data-scope": "card",
22
+ "data-part": "header",
23
+ "data-slot": "card-header",
24
+ className: "@container/card-header has-data-[slot=card-action]:grid-cols-[1fr_auto] grid\n auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6",
25
+ ...restOfProps
26
+ });
27
+ }
28
+ function CardTitle(props) {
29
+ const { as: Element = "h3", className,...restOfProps } = props;
30
+ return /* @__PURE__ */ jsx(Element, {
31
+ "data-scope": "card",
32
+ "data-part": "title",
33
+ "data-slot": "card-title",
34
+ className: cnMerge("font-semibold leading-none", className),
35
+ ...restOfProps
36
+ });
37
+ }
38
+ function CardDescription(props) {
39
+ const { as: Element = "p", className,...restOfProps } = props;
40
+ return /* @__PURE__ */ jsx(Element, {
41
+ "data-scope": "card",
42
+ "data-part": "description",
43
+ "data-slot": "card-description",
44
+ className: cnMerge("text-shadcn-muted-foreground text-sm", className),
45
+ ...restOfProps
46
+ });
47
+ }
48
+ function CardContent(props) {
49
+ const { as: Element = "div", className,...restOfProps } = props;
50
+ return /* @__PURE__ */ jsx(Element, {
51
+ "data-scope": "card",
52
+ "data-part": "content",
53
+ "data-slot": "card-content",
54
+ className: cnMerge("px-6", className),
55
+ ...restOfProps
56
+ });
57
+ }
58
+ function CardAction(props) {
59
+ const { as: Element = "div", className,...restOfProps } = props;
60
+ return /* @__PURE__ */ jsx(Element, {
61
+ "data-scope": "card",
62
+ "data-part": "action",
63
+ "data-slot": "card-action",
64
+ className: cnMerge("col-start-2 row-span-2 row-start-1 self-start justify-self-end", className),
65
+ ...restOfProps
66
+ });
67
+ }
68
+ function CardFooter(props) {
69
+ const { as: Element = "footer", asChild, className,...restOfProps } = props;
70
+ const Component$1 = asChild ? SlotRoot : Element;
71
+ return /* @__PURE__ */ jsx(Component$1, {
72
+ "data-scope": "card",
73
+ "data-part": "footer",
74
+ "data-slot": "card-footer",
75
+ className: cnMerge("px-6", className),
76
+ ...restOfProps
77
+ });
78
+ }
79
+
80
+ //#endregion
81
+ //#region src/components/ui/card/card-parts.ts
82
+ var card_parts_exports = {};
83
+ __export(card_parts_exports, {
84
+ Action: () => CardAction,
85
+ Content: () => CardContent,
86
+ Description: () => CardDescription,
87
+ Footer: () => CardFooter,
88
+ Header: () => CardHeader,
89
+ Root: () => CardRoot,
90
+ Title: () => CardTitle
91
+ });
92
+
93
+ //#endregion
94
+ export { CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle, card_parts_exports };
95
+ //# sourceMappingURL=card-jkLXbuiw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-jkLXbuiw.js","names":["props: PolymorphicProps<TElement>","props: PolymorphicProps<TElement, { asChild?: boolean }>","Component"],"sources":["../../src/components/ui/card/card.tsx","../../src/components/ui/card/card-parts.ts"],"sourcesContent":["import type { PolymorphicProps } from \"@zayne-labs/toolkit-react/utils\";\nimport * as React from \"react\";\nimport { Slot } from \"@/components/common/slot\";\nimport { cnMerge } from \"@/lib/utils/cn\";\n\nexport function CardRoot<TElement extends React.ElementType = \"article\">(\n\tprops: PolymorphicProps<TElement>\n) {\n\tconst { as: Element = \"article\", ...restOfProps } = props;\n\n\treturn (\n\t\t<Element\n\t\t\tdata-scope=\"card\"\n\t\t\tdata-part=\"root\"\n\t\t\tdata-slot=\"card-root\"\n\t\t\tclassName=\"flex flex-col gap-6 rounded-xl border py-6 shadow-sm\"\n\t\t\t{...restOfProps}\n\t\t/>\n\t);\n}\n\nexport function CardHeader<TElement extends React.ElementType = \"header\">(\n\tprops: PolymorphicProps<TElement>\n) {\n\tconst { as: Element = \"header\", ...restOfProps } = props;\n\n\treturn (\n\t\t<Element\n\t\t\tdata-scope=\"card\"\n\t\t\tdata-part=\"header\"\n\t\t\tdata-slot=\"card-header\"\n\t\t\tclassName=\"@container/card-header has-data-[slot=card-action]:grid-cols-[1fr_auto] grid\n\t\t\t\tauto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6\"\n\t\t\t{...restOfProps}\n\t\t/>\n\t);\n}\n\nexport function CardTitle<TElement extends React.ElementType = \"h3\">(props: PolymorphicProps<TElement>) {\n\tconst { as: Element = \"h3\", className, ...restOfProps } = props;\n\n\treturn (\n\t\t<Element\n\t\t\tdata-scope=\"card\"\n\t\t\tdata-part=\"title\"\n\t\t\tdata-slot=\"card-title\"\n\t\t\tclassName={cnMerge(\"font-semibold leading-none\", className)}\n\t\t\t{...restOfProps}\n\t\t/>\n\t);\n}\n\nexport function CardDescription<TElement extends React.ElementType = \"p\">(\n\tprops: PolymorphicProps<TElement>\n) {\n\tconst { as: Element = \"p\", className, ...restOfProps } = props;\n\n\treturn (\n\t\t<Element\n\t\t\tdata-scope=\"card\"\n\t\t\tdata-part=\"description\"\n\t\t\tdata-slot=\"card-description\"\n\t\t\tclassName={cnMerge(\"text-shadcn-muted-foreground text-sm\", className)}\n\t\t\t{...restOfProps}\n\t\t/>\n\t);\n}\n\nexport function CardContent<TElement extends React.ElementType = \"div\">(\n\tprops: PolymorphicProps<TElement>\n) {\n\tconst { as: Element = \"div\", className, ...restOfProps } = props;\n\n\treturn (\n\t\t<Element\n\t\t\tdata-scope=\"card\"\n\t\t\tdata-part=\"content\"\n\t\t\tdata-slot=\"card-content\"\n\t\t\tclassName={cnMerge(\"px-6\", className)}\n\t\t\t{...restOfProps}\n\t\t/>\n\t);\n}\n\nexport function CardAction<TElement extends React.ElementType = \"div\">(props: PolymorphicProps<TElement>) {\n\tconst { as: Element = \"div\", className, ...restOfProps } = props;\n\n\treturn (\n\t\t<Element\n\t\t\tdata-scope=\"card\"\n\t\t\tdata-part=\"action\"\n\t\t\tdata-slot=\"card-action\"\n\t\t\tclassName={cnMerge(\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\", className)}\n\t\t\t{...restOfProps}\n\t\t/>\n\t);\n}\n\nexport function CardFooter<TElement extends React.ElementType = \"footer\">(\n\tprops: PolymorphicProps<TElement, { asChild?: boolean }>\n) {\n\tconst { as: Element = \"footer\", asChild, className, ...restOfProps } = props;\n\n\tconst Component = asChild ? Slot.Root : Element;\n\n\treturn (\n\t\t<Component\n\t\t\tdata-scope=\"card\"\n\t\t\tdata-part=\"footer\"\n\t\t\tdata-slot=\"card-footer\"\n\t\t\tclassName={cnMerge(\"px-6\", className)}\n\t\t\t{...restOfProps}\n\t\t/>\n\t);\n}\n","export {\n\tCardContent as Content,\n\tCardDescription as Description,\n\tCardFooter as Footer,\n\tCardHeader as Header,\n\tCardAction as Action,\n\tCardRoot as Root,\n\tCardTitle as Title,\n} from \"./card\";\n"],"mappings":";;;;;;;AAKA,SAAgB,SACfA,OACC;CACD,MAAM,EAAE,IAAI,UAAU,UAAW,GAAG,aAAa,GAAG;AAEpD,wBACC,IAAC;EACA,cAAW;EACX,aAAU;EACV,aAAU;EACV,WAAU;EACV,GAAI;GACH;AAEH;AAED,SAAgB,WACfA,OACC;CACD,MAAM,EAAE,IAAI,UAAU,SAAU,GAAG,aAAa,GAAG;AAEnD,wBACC,IAAC;EACA,cAAW;EACX,aAAU;EACV,aAAU;EACV,WAAU;EAEV,GAAI;GACH;AAEH;AAED,SAAgB,UAAqDA,OAAmC;CACvG,MAAM,EAAE,IAAI,UAAU,MAAM,UAAW,GAAG,aAAa,GAAG;AAE1D,wBACC,IAAC;EACA,cAAW;EACX,aAAU;EACV,aAAU;EACV,WAAW,QAAQ,8BAA8B,UAAU;EAC3D,GAAI;GACH;AAEH;AAED,SAAgB,gBACfA,OACC;CACD,MAAM,EAAE,IAAI,UAAU,KAAK,UAAW,GAAG,aAAa,GAAG;AAEzD,wBACC,IAAC;EACA,cAAW;EACX,aAAU;EACV,aAAU;EACV,WAAW,QAAQ,wCAAwC,UAAU;EACrE,GAAI;GACH;AAEH;AAED,SAAgB,YACfA,OACC;CACD,MAAM,EAAE,IAAI,UAAU,OAAO,UAAW,GAAG,aAAa,GAAG;AAE3D,wBACC,IAAC;EACA,cAAW;EACX,aAAU;EACV,aAAU;EACV,WAAW,QAAQ,QAAQ,UAAU;EACrC,GAAI;GACH;AAEH;AAED,SAAgB,WAAuDA,OAAmC;CACzG,MAAM,EAAE,IAAI,UAAU,OAAO,UAAW,GAAG,aAAa,GAAG;AAE3D,wBACC,IAAC;EACA,cAAW;EACX,aAAU;EACV,aAAU;EACV,WAAW,QAAQ,kEAAkE,UAAU;EAC/F,GAAI;GACH;AAEH;AAED,SAAgB,WACfC,OACC;CACD,MAAM,EAAE,IAAI,UAAU,UAAU,SAAS,UAAW,GAAG,aAAa,GAAG;CAEvE,MAAMC,cAAY,qBAAsB;AAExC,wBACC,IAACA;EACA,cAAW;EACX,aAAU;EACV,aAAU;EACV,WAAW,QAAQ,QAAQ,UAAU;EACrC,GAAI;GACH;AAEH"}
@@ -1,5 +1,5 @@
1
1
  import "../../../getSlotMap-DZlQN8--.js";
2
- import "../../../index-DeBZiR6B.js";
2
+ import "../../../index-DRiwJkJC.js";
3
3
  import "../../../index-BsjcsNQh.js";
4
4
  import "../../../index-CFNg1R-m.js";
5
5
  import { AwaitError, AwaitPending, AwaitRoot, AwaitSuccess, await_parts_d_exports, useAwaitContext } from "../../../index-YFi-sIuR.js";
@@ -1,5 +1,5 @@
1
1
  import "../../getSlotMap-DZlQN8--.js";
2
- import "../../index-DeBZiR6B.js";
2
+ import "../../index-DRiwJkJC.js";
3
3
  import { ErrorBoundary } from "../../index-BsjcsNQh.js";
4
4
  import { SuspenseWithBoundary } from "../../index-CFNg1R-m.js";
5
5
  import { await_parts_d_exports } from "../../index-YFi-sIuR.js";
@@ -1,2 +1,2 @@
1
- import { CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle, card_parts_d_exports } from "../../../index-BMcv7ELE.js";
2
- export { card_parts_d_exports as Card, CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle };
1
+ import { CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle, card_parts_d_exports } from "../../../index-XYFc-mmy.js";
2
+ export { card_parts_d_exports as Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle };
@@ -1,5 +1,5 @@
1
1
  import "../../../slot-RXTKo4L7.js";
2
2
  import "../../../cn-_FbtIrlZ.js";
3
- import { CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle, card_parts_exports } from "../../../card-DRjs-vtv.js";
3
+ import { CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle, card_parts_exports } from "../../../card-jkLXbuiw.js";
4
4
 
5
- export { card_parts_exports as Card, CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle };
5
+ export { card_parts_exports as Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle };
@@ -5,6 +5,6 @@ import "../../../getSlot-D1_uG-Ym.js";
5
5
  import "../../../slot-RXTKo4L7.js";
6
6
  import "../../../for-aTw1TgJo.js";
7
7
  import "../../../cn-_FbtIrlZ.js";
8
- import { FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldControlledField, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormSelect, FormSelectPrimitive, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextArea, FormTextAreaPrimitive, form_parts_exports, useFormRootContext, useStrictFormFieldContext } from "../../../form-CUlTG3KI.js";
8
+ import { FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldControlledField, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormSelect, FormSelectPrimitive, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextArea, FormTextAreaPrimitive, form_parts_exports, useFormRootContext, useStrictFormFieldContext } from "../../../form-6RV0u4YT.js";
9
9
 
10
10
  export { form_parts_exports as Form, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldControlledField, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormSelect, FormSelectPrimitive, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextArea, FormTextAreaPrimitive, useStrictFormFieldContext as useFormFieldContext, useFormRootContext };
@@ -1,5 +1,5 @@
1
1
  import "../../getSlotMap-DZlQN8--.js";
2
- import { card_parts_d_exports } from "../../index-BMcv7ELE.js";
2
+ import { card_parts_d_exports } from "../../index-XYFc-mmy.js";
3
3
  import { carousel_parts_d_exports } from "../../index-DT8F8QKc.js";
4
4
  import { useDragScroll } from "../../index-gT9tVHv1.js";
5
5
  import { drop_zone_parts_d_exports, useDropZone } from "../../index-BilTdK_M.js";
@@ -10,10 +10,10 @@ import "../../switch-B2gKl94R.js";
10
10
  import "../../teleport-dlSjWj_t.js";
11
11
  import "../../common-BYWy8Q78.js";
12
12
  import "../../cn-_FbtIrlZ.js";
13
- import { card_parts_exports } from "../../card-DRjs-vtv.js";
13
+ import { card_parts_exports } from "../../card-jkLXbuiw.js";
14
14
  import { carousel_parts_exports } from "../../carousel-Dvp-qURP.js";
15
15
  import { useDragScroll } from "../../drag-scroll-BLjij7aI.js";
16
16
  import { drop_zone_parts_exports, useDropZone } from "../../drop-zone-Beip1k4x.js";
17
- import { form_parts_exports } from "../../form-CUlTG3KI.js";
17
+ import { form_parts_exports } from "../../form-6RV0u4YT.js";
18
18
 
19
19
  export { card_parts_exports as Card, carousel_parts_exports as Carousel, drop_zone_parts_exports as DropZone, form_parts_exports as Form, useDragScroll, useDropZone };
@@ -147,7 +147,7 @@ function FormField(props) {
147
147
  }), [name, uniqueId]);
148
148
  const WrapperElement = withWrapper ? "div" : Fragment;
149
149
  const wrapperElementProps = withWrapper && {
150
- className: cnMerge("flex flex-col", className),
150
+ className: cnMerge("flex flex-col gap-2", className),
151
151
  "data-part": "field",
152
152
  "data-scope": "form",
153
153
  "data-slot": "form-field",
@@ -517,7 +517,7 @@ function FormErrorMessage(props) {
517
517
  type,
518
518
  render: ({ props: renderProps, state }) => /* @__PURE__ */ jsx("p", {
519
519
  ...renderProps,
520
- className: cnMerge("text-[13px] text-red-600", "data-[index=0]:mt-1", renderProps.className, className),
520
+ className: cnMerge("text-shadcn-destructive text-[13px]", "data-[index=0]:mt-1", renderProps.className, className),
521
521
  children: state.errorMessage
522
522
  }, state.errorMessage)
523
523
  });
@@ -587,4 +587,4 @@ __export(form_parts_exports, {
587
587
 
588
588
  //#endregion
589
589
  export { FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldControlledField, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormSelect, FormSelectPrimitive, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextArea, FormTextAreaPrimitive, form_parts_exports, useFormRootContext, useStrictFormFieldContext };
590
- //# sourceMappingURL=form-CUlTG3KI.js.map
590
+ //# sourceMappingURL=form-6RV0u4YT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-6RV0u4YT.js","names":["props: React.SVGProps<SVGSVGElement>","options: {\n\terrors: FieldErrors | undefined;\n\tfieldName: string | undefined;\n\ttype: FormErrorMessagePrimitiveProps<FieldValues>[\"type\"];\n}","errorMessage","options: {\n\tclassNames: FormInputProps[\"classNames\"];\n\ticonType: \"closed\" | \"open\";\n\trenderIconProps: RenderIconProps;\n\twithEyeIcon: FormRootContext[\"withEyeIcon\"];\n}","options: { strict?: TStrict }","options?: FieldStateOptions","props: FormRootProps<TValues>","HookFormProvider","props: FormFieldProps<TControl, TFieldValues>","ReactFragment","props: FormFieldControllerProps","props: ControllerProps<TFieldValues>","props: FormFieldContextProps","props: InferProps<\"label\">","props: InferProps<\"div\">","props: PolymorphicProps<TElement, FormSideItemProps>","props: FormInputPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }","props: FormTextAreaPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }","props: FormSelectPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }","props: CombinedFormInputProps & { rules?: RegisterOptions }","props: FormTextAreaProps","props: FormSelectProps","props: InferProps<\"p\">","FormErrorMessagePrimitive: FormErrorMessagePrimitiveType","options: { index: number }","options: { errorMessage: string; index: number }","props: FormErrorMessageProps<TControl, TFieldValues>","props: PolymorphicProps<TElement, FormSubmitProps>","Component","props: FormSubscribeToFieldValueProps<TFieldValues, TFieldPathOrPaths>","props: FormSubscribeToFormStateProps<TFieldValues>"],"sources":["../../src/components/ui/form/icons.tsx","../../src/components/ui/form/utils.ts","../../src/components/ui/form/form-context.ts","../../src/components/ui/form/form.tsx","../../src/components/ui/form/form-parts.ts"],"sourcesContent":["import * as React from \"react\";\n\nexport const EyeIconClosed = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t<path\n\t\t\tfill=\"currentColor\"\n\t\t\td=\"M15.175 8.325q.725.725 1.063 1.65t.237 1.9q0 .375-.275.638t-.65.262t-.638-.262t-.262-.638q.125-.65-.075-1.25T13.95 9.6t-1.025-.65t-1.275-.1q-.375 0-.638-.275t-.262-.65t.263-.637t.637-.263q.95-.1 1.875.238t1.65 1.062M12 6q-.475 0-.925.037t-.9.138q-.425.075-.763-.125t-.462-.6t.088-.775t.612-.45q.575-.125 1.163-.175T12 4q3.425 0 6.263 1.8t4.337 4.85q.1.2.15.413t.05.437t-.038.438t-.137.412q-.45 1-1.112 1.875t-1.463 1.6q-.3.275-.7.225t-.65-.4t-.212-.763t.337-.687q.6-.575 1.1-1.25t.875-1.45q-1.25-2.525-3.613-4.012T12 6m0 13q-3.35 0-6.125-1.812T1.5 12.425q-.125-.2-.187-.437T1.25 11.5t.05-.475t.175-.45q.5-1 1.163-1.912T4.15 7L2.075 4.9q-.275-.3-.262-.712T2.1 3.5t.7-.275t.7.275l17 17q.275.275.288.688t-.288.712q-.275.275-.7.275t-.7-.275l-3.5-3.45q-.875.275-1.775.413T12 19M5.55 8.4q-.725.65-1.325 1.425T3.2 11.5q1.25 2.525 3.613 4.013T12 17q.5 0 .975-.062t.975-.138l-.9-.95q-.275.075-.525.113T12 16q-1.875 0-3.188-1.312T7.5 11.5q0-.275.038-.525t.112-.525zm4.2 4.2\"\n\t\t/>\n\t</svg>\n);\n\nexport const EyeIconOpen = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t<path\n\t\t\tfill=\"currentColor\"\n\t\t\td=\"M12 16q1.875 0 3.188-1.312T16.5 11.5t-1.312-3.187T12 7T8.813 8.313T7.5 11.5t1.313 3.188T12 16m0-1.8q-1.125 0-1.912-.788T9.3 11.5t.788-1.912T12 8.8t1.913.788t.787 1.912t-.787 1.913T12 14.2m0 4.8q-3.35 0-6.113-1.8t-4.362-4.75q-.125-.225-.187-.462t-.063-.488t.063-.488t.187-.462q1.6-2.95 4.363-4.75T12 4t6.113 1.8t4.362 4.75q.125.225.188.463t.062.487t-.062.488t-.188.462q-1.6 2.95-4.362 4.75T12 19m0-2q2.825 0 5.188-1.487T20.8 11.5q-1.25-2.525-3.613-4.012T12 6T6.813 7.488T3.2 11.5q1.25 2.525 3.613 4.013T12 17\"\n\t\t/>\n\t</svg>\n);\n","import { cnMerge } from \"@/lib/utils/cn\";\nimport { isObject } from \"@zayne-labs/toolkit-type-helpers\";\nimport { createElement } from \"react\";\nimport type { FieldErrors, FieldValues } from \"react-hook-form\";\nimport type { FormErrorMessagePrimitiveProps, FormInputProps } from \"./form\";\nimport type { FormRootContext, RenderIconProps } from \"./form-context\";\nimport { EyeIconClosed, EyeIconOpen } from \"./icons\";\n\nexport const getFieldErrorMessage = (options: {\n\terrors: FieldErrors | undefined;\n\tfieldName: string | undefined;\n\ttype: FormErrorMessagePrimitiveProps<FieldValues>[\"type\"];\n}): string | string[] | null | undefined => {\n\tconst { errors, fieldName, type } = options;\n\n\tif (!fieldName || !errors || Object.keys(errors).length === 0) return;\n\n\tif (type === \"root\") {\n\t\treturn errors.root?.[fieldName]?.message;\n\t}\n\n\t// == Handle nested paths like `notifications.0`\n\tconst pathParts = fieldName.includes(\".\") ? fieldName.split(\".\") : null;\n\n\t// == If there are no path parts, return the error message\n\tif (!pathParts) {\n\t\tconst errorMessage = errors[fieldName]?.message;\n\n\t\treturn errorMessage as string | string[];\n\t}\n\n\tlet extractedError = errors;\n\n\tfor (const part of pathParts) {\n\t\tconst currentError = extractedError[part];\n\n\t\tif (!isObject(currentError)) break;\n\n\t\textractedError = currentError as never;\n\t}\n\n\tconst errorMessage = extractedError.message as unknown as string | string[];\n\n\treturn errorMessage;\n};\n\nexport const getEyeIcon = (options: {\n\tclassNames: FormInputProps[\"classNames\"];\n\ticonType: \"closed\" | \"open\";\n\trenderIconProps: RenderIconProps;\n\twithEyeIcon: FormRootContext[\"withEyeIcon\"];\n}) => {\n\tconst { classNames, iconType, renderIconProps, withEyeIcon } = options;\n\n\tif (!withEyeIcon) {\n\t\treturn null;\n\t}\n\n\tif (withEyeIcon === true) {\n\t\tconst defaultIconMap = {\n\t\t\tclosed: createElement(EyeIconClosed, {\n\t\t\t\tclassName: cnMerge(\"size-full\", classNames?.eyeIcon),\n\t\t\t}),\n\n\t\t\topen: createElement(EyeIconOpen, {\n\t\t\t\tclassName: cnMerge(\"size-full\", classNames?.eyeIcon),\n\t\t\t}),\n\t\t};\n\n\t\treturn defaultIconMap[iconType];\n\t}\n\n\tif (withEyeIcon.renderIcon) {\n\t\treturn withEyeIcon.renderIcon(renderIconProps);\n\t}\n\n\tif (withEyeIcon[iconType]) {\n\t\treturn withEyeIcon[iconType];\n\t}\n\n\treturn null;\n};\n","import { ContextError, createCustomContext } from \"@zayne-labs/toolkit-react\";\nimport type { DiscriminatedRenderProps } from \"@zayne-labs/toolkit-react/utils\";\nimport type { UnionDiscriminator } from \"@zayne-labs/toolkit-type-helpers\";\nimport {\n\ttype Control,\n\ttype UseFormReturn,\n\ttype UseFormStateReturn,\n\tuseFormState,\n\tuseFormContext as useHookFormContext,\n} from \"react-hook-form\";\nimport type { FieldValues, FormInputProps } from \"./form\";\nimport { getFieldErrorMessage } from \"./utils\";\n\ntype UseFormRootContextResult<TStrict extends boolean = true> = TStrict extends true\n\t? UseFormReturn<FieldValues> & { withEyeIcon?: FormInputProps[\"withEyeIcon\"] }\n\t: (UseFormReturn<FieldValues> & { withEyeIcon?: FormInputProps[\"withEyeIcon\"] }) | null;\n\nexport const useFormMethodsContext = <TStrict extends boolean = true>(\n\toptions: { strict?: TStrict } = {}\n): UseFormRootContextResult<TStrict> => {\n\tconst { strict = true } = options;\n\tconst formContext = useHookFormContext();\n\n\tif (strict && !(formContext as unknown)) {\n\t\tthrow new ContextError(\n\t\t\t`useFormRootContext returned \"null\". Did you forget to wrap the necessary components within FormRoot?`\n\t\t);\n\t}\n\n\treturn formContext;\n};\n\nexport type RenderIconProps = {\n\tisPasswordVisible: boolean;\n};\n\ntype EyeIconObject = UnionDiscriminator<\n\t[\n\t\t{ closed: React.ReactNode; open: React.ReactNode },\n\t\t{ renderIcon: (props: RenderIconProps) => React.ReactNode },\n\t]\n>;\n\nexport type FormRootContext = {\n\twithEyeIcon: boolean | EyeIconObject | undefined;\n};\n\nexport const [LaxFormRootProvider, useLaxFormRootContext] = createCustomContext<FormRootContext, false>({\n\thookName: \"useLaxFormRootContext\",\n\tname: \"LaxFormRootContext\",\n\tproviderName: \"FormRoot\",\n\tstrict: false,\n});\n\n// export const useStrictGetFieldState = () => {\n// \tconst { name } = useStrictFormFieldContext();\n\n// \tconst { getFieldState } = useFormRootContext();\n\n// \tconst fieldState = getFieldState(name);\n\n// \treturn fieldState;\n// };\n\nexport type FieldContextValue = {\n\tformDescriptionId: `${string}-(${string})-form-item-description`;\n\tformItemId: `${string}-(${string})-form-item`;\n\tformMessageId: `${string}-(${string})-form-item-message`;\n\tname: string;\n};\n\nexport type FormFieldContextProps = DiscriminatedRenderProps<\n\t(contextValue: FieldContextValue) => React.ReactNode\n>;\n\nexport const [StrictFormFieldProvider, useStrictFormFieldContext] = createCustomContext<FieldContextValue>(\n\t{\n\t\thookName: \"useFormFieldContext\",\n\t\tname: \"StrictFormFieldContext\",\n\t\tproviderName: \"FormField\",\n\t}\n);\n\nexport const [LaxFormFieldProvider, useLaxFormFieldContext] = createCustomContext<\n\tFieldContextValue,\n\tfalse\n>({\n\thookName: \"useLaxFormFieldContext\",\n\tname: \"LaxFormFieldContext\",\n\tproviderName: \"FormField\",\n\tstrict: false,\n});\n\nexport type FieldState = {\n\terrors?: UseFormStateReturn<FieldValues>[\"errors\"];\n\tisDisabled?: boolean;\n\tisInvalid?: boolean;\n};\n\n// eslint-disable-next-line ts-eslint/no-explicit-any -- any is used here for type compatibility\nexport type AnyControl = Control<any>;\n\ntype FieldStateOptions =\n\t| {\n\t\t\tcontrol: AnyControl | undefined;\n\t\t\tname?: string;\n\t }\n\t| {\n\t\t\tcontrol?: AnyControl;\n\t\t\tname: string | undefined;\n\t };\n\nexport const useLaxFormFieldState = (options?: FieldStateOptions): FieldState => {\n\tconst { control = options?.control } = useFormMethodsContext({ strict: false }) ?? {};\n\tconst { name = options?.name } = useLaxFormFieldContext() ?? {};\n\n\tconst getFormState = control ? useFormState : () => ({}) as Partial<ReturnType<typeof useFormState>>;\n\n\tconst { disabled, errors } = getFormState({ control, name });\n\n\tconst errorMessage = getFieldErrorMessage({ errors, fieldName: name, type: \"regular\" });\n\n\treturn {\n\t\terrors,\n\t\tisDisabled: disabled,\n\t\tisInvalid: Boolean(errorMessage),\n\t};\n};\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { getElementList } from \"@/components/common/for\";\nimport { Slot } from \"@/components/common/slot\";\nimport { cnMerge } from \"@/lib/utils/cn\";\nimport { getMultipleSlots } from \"@/lib/utils/getSlot\";\nimport { dataAttr, on, toArray } from \"@zayne-labs/toolkit-core\";\nimport { useCallbackRef, useToggle } from \"@zayne-labs/toolkit-react\";\nimport {\n\ttype DiscriminatedRenderProps,\n\ttype InferProps,\n\ttype PolymorphicProps,\n\tcomposeRefs,\n\tcomposeTwoEventHandlers,\n} from \"@zayne-labs/toolkit-react/utils\";\nimport { type AnyString, defineEnum } from \"@zayne-labs/toolkit-type-helpers\";\nimport { Fragment as ReactFragment, useEffect, useId, useMemo, useRef } from \"react\";\nimport {\n\ttype Control,\n\tController,\n\ttype ControllerFieldState,\n\ttype ControllerProps,\n\ttype ControllerRenderProps,\n\ttype FieldPath,\n\ttype FieldPathValue,\n\ttype FieldPathValues,\n\tFormProvider as HookFormProvider,\n\ttype RegisterOptions,\n\ttype UseFormReturn,\n\ttype UseFormStateReturn,\n\tuseFormState,\n\tuseWatch,\n} from \"react-hook-form\";\nimport {\n\ttype FieldContextValue,\n\ttype FieldState,\n\ttype FormFieldContextProps,\n\ttype FormRootContext,\n\tLaxFormFieldProvider,\n\tLaxFormRootProvider,\n\tStrictFormFieldProvider,\n\tuseFormMethodsContext,\n\tuseLaxFormFieldContext,\n\tuseLaxFormFieldState,\n\tuseLaxFormRootContext,\n\tuseStrictFormFieldContext,\n} from \"./form-context\";\nimport { getEyeIcon, getFieldErrorMessage } from \"./utils\";\n\nexport type FieldValues = Record<string, unknown>;\n\ntype FormRootProps<TFieldValues extends FieldValues> = Partial<FormRootContext>\n\t& React.ComponentPropsWithoutRef<\"form\"> & {\n\t\tchildren: React.ReactNode;\n\t\tmethods: UseFormReturn<TFieldValues>;\n\t};\n\nexport function FormRoot<TValues extends FieldValues>(props: FormRootProps<TValues>) {\n\tconst { children, className, methods, withEyeIcon, ...restOfProps } = props;\n\n\tconst formContextValue = useMemo(() => ({ withEyeIcon }), [withEyeIcon]);\n\n\treturn (\n\t\t<HookFormProvider {...methods}>\n\t\t\t<LaxFormRootProvider value={formContextValue}>\n\t\t\t\t<form\n\t\t\t\t\tclassName={cnMerge(\"flex flex-col\", className)}\n\t\t\t\t\t{...restOfProps}\n\t\t\t\t\tdata-scope=\"form\"\n\t\t\t\t\tdata-part=\"root\"\n\t\t\t\t\tdata-slot=\"form-root\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</form>\n\t\t\t</LaxFormRootProvider>\n\t\t</HookFormProvider>\n\t);\n}\n\ntype FormFieldProps<TControl, TFieldValues extends FieldValues> = (TControl extends Control<infer TValues>\n\t? {\n\t\t\tcontrol?: never;\n\t\t\tname: FieldPath<TValues>;\n\t\t}\n\t: {\n\t\t\tcontrol?: Control<TFieldValues>;\n\t\t\tname: FieldPath<TFieldValues>;\n\t\t})\n\t& (\n\t\t| (InferProps<\"div\"> & {\n\t\t\t\twithWrapper?: true;\n\t\t })\n\t\t| { children: React.ReactNode; className?: never; withWrapper: false }\n\t);\n\nexport function FormField<TControl, TFieldValues extends FieldValues = FieldValues>(\n\tprops: FormFieldProps<TControl, TFieldValues>\n) {\n\tconst { children, className, name, withWrapper = true } = props;\n\n\tconst { isDisabled, isInvalid } = useLaxFormFieldState({ name });\n\n\tconst uniqueId = useId();\n\n\tconst fieldContextValue = useMemo(\n\t\t() =>\n\t\t\t({\n\t\t\t\tformDescriptionId: `${name}-(${uniqueId})-form-item-description`,\n\t\t\t\tformItemId: `${name}-(${uniqueId})-form-item`,\n\t\t\t\tformMessageId: `${name}-(${uniqueId})-form-item-message`,\n\t\t\t\tname,\n\t\t\t}) satisfies FieldContextValue,\n\t\t[name, uniqueId]\n\t);\n\n\tconst WrapperElement = withWrapper ? \"div\" : ReactFragment;\n\n\tconst wrapperElementProps = withWrapper && {\n\t\tclassName: cnMerge(\"flex flex-col gap-2\", className),\n\t\t\"data-part\": \"field\",\n\t\t\"data-scope\": \"form\",\n\t\t\"data-slot\": \"form-field\",\n\t\t/* eslint-disable perfectionist/sort-objects -- order of attributes does not matter */\n\t\t\"data-disabled\": dataAttr(isDisabled),\n\t\t\"data-invalid\": dataAttr(isInvalid),\n\t\t/* eslint-enable perfectionist/sort-objects -- order of attributes does not matter */\n\t};\n\treturn (\n\t\t<StrictFormFieldProvider value={fieldContextValue}>\n\t\t\t<LaxFormFieldProvider value={fieldContextValue}>\n\t\t\t\t<WrapperElement {...wrapperElementProps}>{children}</WrapperElement>\n\t\t\t</LaxFormFieldProvider>\n\t\t</StrictFormFieldProvider>\n\t);\n}\n\ntype FormFieldControllerRenderFn = (props: {\n\tfield: Omit<ControllerRenderProps, \"value\"> & {\n\t\tvalue: never;\n\t};\n\tfieldState: ControllerFieldState;\n\tformState: UseFormStateReturn<never>;\n}) => React.ReactElement;\n\ntype FormFieldControllerProps = Omit<\n\tControllerProps<FieldValues, FieldPath<FieldValues>>,\n\t\"control\" | \"name\" | \"render\"\n> & {\n\trender: FormFieldControllerRenderFn;\n};\n\nexport function FormFieldController(props: FormFieldControllerProps) {\n\tconst { control } = useFormMethodsContext();\n\tconst { name } = useStrictFormFieldContext();\n\tconst { render, ...restOfProps } = props;\n\n\treturn <Controller name={name} control={control} render={render as never} {...restOfProps} />;\n}\n\nexport function FormFieldControlledField<TFieldValues extends FieldValues>(\n\tprops: ControllerProps<TFieldValues>\n) {\n\tconst { name } = props;\n\n\tconst uniqueId = useId();\n\n\tconst fieldContextValue = useMemo(\n\t\t() =>\n\t\t\t({\n\t\t\t\tformDescriptionId: `${name}-(${uniqueId})-form-item-description`,\n\t\t\t\tformItemId: `${name}-(${uniqueId})-form-item`,\n\t\t\t\tformMessageId: `${name}-(${uniqueId})-form-item-message`,\n\t\t\t\tname,\n\t\t\t}) satisfies FieldContextValue,\n\t\t[name, uniqueId]\n\t);\n\n\treturn (\n\t\t<StrictFormFieldProvider value={fieldContextValue}>\n\t\t\t<LaxFormFieldProvider value={fieldContextValue}>\n\t\t\t\t<Controller {...props} />\n\t\t\t</LaxFormFieldProvider>\n\t\t</StrictFormFieldProvider>\n\t);\n}\n\nexport function FormFieldContext(props: FormFieldContextProps) {\n\tconst { children, render } = props;\n\tconst fieldContextValues = useStrictFormFieldContext();\n\n\tif (typeof children === \"function\") {\n\t\treturn children(fieldContextValues);\n\t}\n\n\treturn render(fieldContextValues);\n}\n\nexport function FormLabel(props: InferProps<\"label\">) {\n\tconst { formItemId, name } = useStrictFormFieldContext();\n\tconst { children, className, ...restOfProps } = props;\n\n\tconst { isDisabled, isInvalid } = useLaxFormFieldState({ name });\n\n\treturn (\n\t\t<label\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"label\"\n\t\t\tdata-slot=\"form-label\"\n\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\thtmlFor={formItemId}\n\t\t\tclassName={className}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{children}\n\t\t</label>\n\t);\n}\n\nexport function FormInputGroup(props: InferProps<\"div\">) {\n\tconst { children, className, ...restOfProps } = props;\n\n\tconst { isDisabled, isInvalid } = useLaxFormFieldState();\n\n\tconst {\n\t\tregularChildren,\n\t\tslots: [leftItemSlot, rightItemSlot],\n\t} = getMultipleSlots(children, [FormInputLeftItem, FormInputRightItem]);\n\n\treturn (\n\t\t<div\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"input-group\"\n\t\t\tdata-slot=\"form-input-group\"\n\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\tclassName={cnMerge(\"flex items-center justify-between gap-2\", className)}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{leftItemSlot}\n\t\t\t{regularChildren}\n\t\t\t{rightItemSlot}\n\t\t</div>\n\t);\n}\n\ntype FormSideItemProps = {\n\tchildren?: React.ReactNode;\n\tclassName?: string;\n};\n\nexport function FormInputLeftItem<TElement extends React.ElementType = \"span\">(\n\tprops: PolymorphicProps<TElement, FormSideItemProps>\n) {\n\tconst { as: Element = \"span\", children, className, ...restOfProps } = props;\n\n\treturn (\n\t\t<Element\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"left-item\"\n\t\t\tdata-slot=\"form-left-item\"\n\t\t\tclassName={cnMerge(\"inline-flex items-center justify-center\", className)}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{children}\n\t\t</Element>\n\t);\n}\nFormInputLeftItem.slotSymbol = Symbol(\"input-left-item\");\n\nexport function FormInputRightItem<TElement extends React.ElementType = \"span\">(\n\tprops: PolymorphicProps<TElement, FormSideItemProps>\n) {\n\tconst { as: Element = \"span\", children, className, ...restOfProps } = props;\n\n\treturn (\n\t\t<Element\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"right-item\"\n\t\t\tdata-slot=\"form-right-item\"\n\t\t\tclassName={cnMerge(\"inline-flex items-center justify-center\", className)}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{children}\n\t\t</Element>\n\t);\n}\nFormInputRightItem.slotSymbol = Symbol(\"input-right-item\");\n\ntype FormInputPrimitiveProps<TFieldValues extends FieldValues = FieldValues> = Omit<\n\tReact.ComponentPropsWithRef<\"input\">,\n\t\"children\"\n> & {\n\tclassNames?: { error?: string; eyeIcon?: string; input?: string; inputGroup?: string };\n\tcontrol?: Control<TFieldValues>;\n\tfieldState?: FieldState;\n\tname?: FieldPath<TFieldValues>;\n\twithEyeIcon?: FormRootContext[\"withEyeIcon\"];\n};\n\ntype FormTextAreaPrimitiveProps<TFieldValues extends FieldValues = FieldValues> =\n\tReact.ComponentPropsWithRef<\"textarea\"> & {\n\t\tclassNames?: { base?: string; error?: string };\n\t\tcontrol?: Control<TFieldValues>;\n\t\tfieldState?: FieldState;\n\t\tname?: FieldPath<TFieldValues>;\n\t};\n\ntype FormSelectPrimitiveProps<TFieldValues extends FieldValues = FieldValues> =\n\tReact.ComponentPropsWithRef<\"select\"> & {\n\t\tclassNames?: { base?: string; error?: string };\n\t\tcontrol?: Control<TFieldValues>;\n\t\tfieldState?: FieldState;\n\t\tname?: FieldPath<TFieldValues>;\n\t};\n\nconst inputTypesWithoutFullWith = new Set<React.HTMLInputTypeAttribute>([\"checkbox\", \"radio\"]);\n\nexport function FormInputPrimitive<TFieldValues extends FieldValues>(\n\tprops: FormInputPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst formRootContextValues = useLaxFormRootContext();\n\n\tconst {\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol,\n\t\tfieldState,\n\t\tid = fieldContextValues?.formItemId,\n\t\tname = fieldContextValues?.name,\n\t\trules,\n\t\ttype = \"text\",\n\t\twithEyeIcon = formRootContextValues?.withEyeIcon ?? true,\n\t\t...restOfProps\n\t} = props;\n\n\tconst fieldStateFromLaxFormField = useLaxFormFieldState({ control, name });\n\n\tconst { isDisabled, isInvalid } = fieldState ?? fieldStateFromLaxFormField;\n\n\tconst [isPasswordVisible, toggleVisibility] = useToggle(false);\n\n\tconst shouldHaveEyeIcon = withEyeIcon && type === \"password\";\n\n\tconst WrapperElement = shouldHaveEyeIcon ? FormInputGroup : ReactFragment;\n\n\tconst wrapperElementProps = shouldHaveEyeIcon && {\n\t\tclassName: cnMerge(\"w-full\", classNames?.inputGroup, isInvalid && classNames?.error),\n\t};\n\n\tconst { register } = useFormMethodsContext({ strict: false }) ?? {};\n\n\tconst eyeIcon = getEyeIcon({\n\t\tclassNames,\n\t\ticonType: isPasswordVisible ? \"closed\" : \"open\",\n\t\trenderIconProps: { isPasswordVisible },\n\t\twithEyeIcon,\n\t});\n\n\treturn (\n\t\t<WrapperElement {...wrapperElementProps}>\n\t\t\t<input\n\t\t\t\tdata-scope=\"form\"\n\t\t\t\tdata-part=\"input\"\n\t\t\t\tdata-slot=\"form-input\"\n\t\t\t\taria-describedby={\n\t\t\t\t\t!isInvalid\n\t\t\t\t\t\t? fieldContextValues?.formDescriptionId\n\t\t\t\t\t\t: `${fieldContextValues?.formDescriptionId} ${fieldContextValues?.formMessageId}`\n\t\t\t\t}\n\t\t\t\taria-invalid={dataAttr(isInvalid)}\n\t\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\t\tid={id}\n\t\t\t\tname={name}\n\t\t\t\ttype={type === \"password\" && isPasswordVisible ? \"text\" : type}\n\t\t\t\tclassName={cnMerge(\n\t\t\t\t\t!inputTypesWithoutFullWith.has(type) && \"flex w-full\",\n\t\t\t\t\t`focus-visible:outline-hidden placeholder:text-shadcn-muted-foreground bg-transparent\n\t\t\t\t\ttext-sm file:border-0 file:bg-transparent disabled:cursor-not-allowed disabled:opacity-50`,\n\t\t\t\t\tclassName,\n\t\t\t\t\tclassNames?.input,\n\t\t\t\t\ttype !== \"password\" && isInvalid && classNames?.error\n\t\t\t\t)}\n\t\t\t\t{...(Boolean(name) && register?.(name, rules))}\n\t\t\t\t{...restOfProps}\n\t\t\t/>\n\n\t\t\t{shouldHaveEyeIcon && (\n\t\t\t\t<FormInputRightItem\n\t\t\t\t\tas=\"button\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={toggleVisibility}\n\t\t\t\t\tclassName=\"size-5 shrink-0 lg:size-6\"\n\t\t\t\t>\n\t\t\t\t\t{eyeIcon}\n\t\t\t\t</FormInputRightItem>\n\t\t\t)}\n\t\t</WrapperElement>\n\t);\n}\n\nexport function FormTextAreaPrimitive<TFieldValues extends FieldValues>(\n\tprops: FormTextAreaPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst {\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol,\n\t\tfieldState,\n\t\tid = fieldContextValues?.formItemId,\n\t\tname = fieldContextValues?.name,\n\t\trules,\n\t\t...restOfProps\n\t} = props;\n\n\tconst fieldStateFromLaxFormField = useLaxFormFieldState({ control, name });\n\n\tconst { isDisabled, isInvalid } = fieldState ?? fieldStateFromLaxFormField;\n\n\tconst { register } = useFormMethodsContext({ strict: false }) ?? {};\n\n\treturn (\n\t\t<textarea\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"textarea\"\n\t\t\tdata-slot=\"form-textarea\"\n\t\t\taria-describedby={\n\t\t\t\t!isInvalid\n\t\t\t\t\t? fieldContextValues?.formDescriptionId\n\t\t\t\t\t: `${fieldContextValues?.formDescriptionId} ${fieldContextValues?.formMessageId}`\n\t\t\t}\n\t\t\taria-invalid={dataAttr(isInvalid)}\n\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\tid={id}\n\t\t\tname={name}\n\t\t\tclassName={cnMerge(\n\t\t\t\t`placeholder:text-shadcn-muted-foreground focus-visible:outline-hidden w-full bg-transparent\n\t\t\t\ttext-sm disabled:cursor-not-allowed disabled:opacity-50`,\n\t\t\t\tclassName,\n\t\t\t\tclassNames?.base,\n\t\t\t\tisInvalid && classNames?.error\n\t\t\t)}\n\t\t\t{...(Boolean(name) && register?.(name, rules))}\n\t\t\t{...restOfProps}\n\t\t/>\n\t);\n}\nexport function FormSelectPrimitive<TFieldValues extends FieldValues>(\n\tprops: FormSelectPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst {\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol,\n\t\tfieldState,\n\t\tid = fieldContextValues?.formItemId,\n\t\tname = fieldContextValues?.name,\n\t\trules,\n\t\t...restOfProps\n\t} = props;\n\n\tconst fieldStateFromLaxFormField = useLaxFormFieldState({ control, name });\n\n\tconst { isDisabled, isInvalid } = fieldState ?? fieldStateFromLaxFormField;\n\n\tconst { register } = useFormMethodsContext({ strict: false }) ?? {};\n\n\treturn (\n\t\t<select\n\t\t\tdefaultValue=\"\"\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"select\"\n\t\t\tdata-slot=\"form-select\"\n\t\t\taria-describedby={\n\t\t\t\t!isInvalid\n\t\t\t\t\t? fieldContextValues?.formDescriptionId\n\t\t\t\t\t: `${fieldContextValues?.formDescriptionId} ${fieldContextValues?.formMessageId}`\n\t\t\t}\n\t\t\taria-invalid={dataAttr(isInvalid)}\n\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\tid={id}\n\t\t\tname={name}\n\t\t\tclassName={cnMerge(\n\t\t\t\t`placeholder:text-shadcn-muted-foreground focus-visible:outline-hidden w-full bg-transparent\n\t\t\t\ttext-sm disabled:cursor-not-allowed disabled:opacity-50`,\n\t\t\t\tclassName,\n\t\t\t\tclassNames?.base,\n\t\t\t\tisInvalid && classNames?.error\n\t\t\t)}\n\t\t\t{...(Boolean(name) && register?.(name, rules))}\n\t\t\t{...restOfProps}\n\t\t/>\n\t);\n}\n\ntype PrimitivePropsToOmit = \"control\" | \"formState\" | \"name\";\n\nexport type FormInputProps = Omit<FormInputPrimitiveProps, PrimitivePropsToOmit> & {\n\trules?: RegisterOptions;\n};\n\nexport type FormTextAreaProps = Omit<FormTextAreaPrimitiveProps, PrimitivePropsToOmit> & {\n\trules?: RegisterOptions;\n};\n\nexport type FormSelectProps = Omit<FormSelectPrimitiveProps, PrimitivePropsToOmit> & {\n\trules?: RegisterOptions;\n};\n\ntype CombinedFormInputProps =\n\t| (FormSelectProps & { type: \"select\" })\n\t| (FormTextAreaProps & { type: \"textarea\" })\n\t| FormInputProps;\n\nconst InputTypeMap = defineEnum({\n\tselect: FormSelectPrimitive,\n\ttextarea: FormTextAreaPrimitive,\n});\n\nexport function FormInput(props: CombinedFormInputProps & { rules?: RegisterOptions }) {\n\tconst { onBlur, onChange, ref, rules, type, ...restOfProps } = props;\n\n\tconst { name } = useStrictFormFieldContext();\n\tconst { register } = useFormMethodsContext();\n\n\tconst SelectedInput =\n\t\ttype === \"textarea\" || type === \"select\"\n\t\t\t? InputTypeMap[type as Exclude<typeof type, AnyString>]\n\t\t\t: FormInputPrimitive;\n\n\tconst registerProps = name ? register(name, rules) : null;\n\n\treturn (\n\t\t<SelectedInput\n\t\t\ttype={type as never}\n\t\t\tname={name}\n\t\t\t{...registerProps}\n\t\t\t{...(restOfProps as NonNullable<unknown>)}\n\t\t\tref={composeRefs(registerProps?.ref, ref)}\n\t\t\tonChange={composeTwoEventHandlers(registerProps?.onChange, onChange)}\n\t\t\tonBlur={composeTwoEventHandlers(registerProps?.onBlur, onBlur)}\n\t\t/>\n\t);\n}\n\nexport function FormTextArea(props: FormTextAreaProps) {\n\treturn <FormInput {...props} type=\"textarea\" />;\n}\n\nexport function FormSelect(props: FormSelectProps) {\n\treturn <FormInput {...props} type=\"select\" />;\n}\n\nexport function FormDescription(props: InferProps<\"p\">) {\n\tconst { className, ...restOfProps } = props;\n\n\tconst { formDescriptionId } = useLaxFormFieldContext() ?? {};\n\n\treturn <p id={formDescriptionId} className={cnMerge(\"text-[12px]\", className)} {...restOfProps} />;\n}\n\ntype ErrorMessageRenderProps = {\n\tclassName: string;\n\t\"data-index\": number;\n\t\"data-part\": \"error-message\";\n\t\"data-scope\": \"form\";\n\t\"data-slot\": \"form-error-message\";\n\tid: string | undefined;\n\tref: React.RefCallback<HTMLElement>;\n};\n\ntype ErrorMessageRenderState = { errorMessage: string; errorMessageArray: string[]; index: number };\n\ntype ErrorMessageRenderFn = (context: {\n\tprops: ErrorMessageRenderProps;\n\tstate: ErrorMessageRenderState;\n}) => React.ReactNode;\n\nexport type FormErrorMessagePrimitiveProps<TFieldValues extends FieldValues> =\n\tDiscriminatedRenderProps<ErrorMessageRenderFn> & {\n\t\tclassName?: string;\n\t\tclassNames?: {\n\t\t\tcontainer?: string;\n\t\t\terrorMessage?: string;\n\t\t\terrorMessageAnimation?: string;\n\t\t};\n\t\tcontrol?: Control<TFieldValues>; // == Here for type inference of errorField prop\n\t\tdisableErrorAnimation?: boolean;\n\t\tdisableScrollToErrorField?: boolean;\n\t} & (\n\t\t\t| {\n\t\t\t\t\tfieldName: FieldPath<TFieldValues>;\n\t\t\t\t\ttype?: \"regular\";\n\t\t\t }\n\t\t\t| {\n\t\t\t\t\tfieldName: string;\n\t\t\t\t\ttype: \"root\";\n\t\t\t }\n\t\t);\n\ntype FormErrorMessagePrimitiveType = {\n\t<TFieldValues extends FieldValues>(\n\t\tprops: Extract<FormErrorMessagePrimitiveProps<TFieldValues>, { type?: \"regular\" }>\n\t): React.ReactNode;\n\t<TFieldValues extends FieldValues>(\n\t\t// eslint-disable-next-line ts-eslint/unified-signatures -- Using overloads are better because it gives better error messages\n\t\tprops: Extract<FormErrorMessagePrimitiveProps<TFieldValues>, { type: \"root\" }>\n\t): React.ReactNode;\n};\n\nexport const FormErrorMessagePrimitive: FormErrorMessagePrimitiveType = (props) => {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\tconst rootContextValues = useFormMethodsContext({ strict: false });\n\n\tconst {\n\t\tchildren,\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol = rootContextValues?.control,\n\t\tdisableErrorAnimation = false,\n\t\tdisableScrollToErrorField = false,\n\t\tfieldName = fieldContextValues?.name,\n\t\trender,\n\t\ttype = \"regular\",\n\t} = props;\n\n\tconst { errors } = useLaxFormFieldState({ control, name: fieldName });\n\n\tconst { formMessageId } = useLaxFormFieldContext() ?? {};\n\n\tconst errorParagraphRef = useRef<HTMLElement>(null);\n\n\tconst wrapperRef = useRef<HTMLDivElement>(null);\n\n\tconst errorAnimationClass = classNames?.errorMessageAnimation ?? \"animate-shake\";\n\n\tconst getErrorElements = useCallbackRef(\n\t\t() => wrapperRef.current?.children ?? [errorParagraphRef.current]\n\t);\n\n\tuseEffect(() => {\n\t\tif (disableErrorAnimation) return;\n\n\t\tif (!errors || Object.keys(errors).length === 0) return;\n\n\t\tconst errorMessageElements = getErrorElements();\n\n\t\tif (errorMessageElements.length === 0) return;\n\n\t\tfor (const element of errorMessageElements) {\n\t\t\tif (!element) continue;\n\n\t\t\telement.classList.add(errorAnimationClass);\n\n\t\t\tconst onAnimationEnd = () => element.classList.remove(errorAnimationClass);\n\n\t\t\ton(\"animationend\", element, onAnimationEnd, { once: true });\n\t\t}\n\t}, [disableErrorAnimation, errorAnimationClass, errors, getErrorElements]);\n\n\tuseEffect(() => {\n\t\tif (disableScrollToErrorField) return;\n\n\t\tif (!errors || Object.keys(errors).length === 0) return;\n\n\t\tconst errorMessageElements = getErrorElements();\n\n\t\tconst firstErrorElement = errorMessageElements[0];\n\n\t\tif (!firstErrorElement) return;\n\n\t\t// == Find the input field associated with this error\n\t\tconst inputField = document.querySelector(`[name='${fieldName}']`);\n\t\tconst isFocusableInput = inputField?.matches(\n\t\t\t\":is(input, select, textarea, [contenteditable='true'])\"\n\t\t);\n\n\t\t// == Return early if the input field is focusable (Only scrollIntoView for non-focusable fields)\n\t\tif (isFocusableInput) return;\n\n\t\t// == Schedule the scroll to next frame to ensure DOM is ready\n\t\trequestAnimationFrame(() => {\n\t\t\t// == Get the element's position and scroll in one frame\n\t\t\tconst rect = firstErrorElement.getBoundingClientRect();\n\t\t\tconst topWithOffset = rect.top - 100;\n\n\t\t\twindow.scrollTo({\n\t\t\t\tbehavior: \"smooth\",\n\t\t\t\ttop: window.scrollY + topWithOffset,\n\t\t\t});\n\t\t});\n\t}, [disableScrollToErrorField, fieldName, errors, getErrorElements]);\n\n\tconst fieldErrorMessage = getFieldErrorMessage({ errors, fieldName, type });\n\n\tif (!fieldErrorMessage) {\n\t\treturn null;\n\t}\n\n\tconst errorMessageArray = toArray(fieldErrorMessage);\n\n\tif (errorMessageArray.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst getRenderProps = (options: { index: number }): ErrorMessageRenderProps => {\n\t\tconst { index } = options;\n\n\t\treturn {\n\t\t\tclassName: cnMerge(className, classNames?.errorMessage),\n\t\t\t\"data-index\": index,\n\t\t\t\"data-part\": \"error-message\",\n\t\t\t\"data-scope\": \"form\",\n\t\t\t\"data-slot\": \"form-error-message\",\n\t\t\tid: formMessageId,\n\t\t\tref: (node) => {\n\t\t\t\tif (!node || errorParagraphRef.current) return;\n\n\t\t\t\terrorParagraphRef.current = node;\n\t\t\t},\n\t\t};\n\t};\n\n\tconst getRenderState = (options: { errorMessage: string; index: number }): ErrorMessageRenderState => {\n\t\tconst { errorMessage, index } = options;\n\n\t\treturn {\n\t\t\terrorMessage,\n\t\t\terrorMessageArray,\n\t\t\tindex,\n\t\t};\n\t};\n\n\tconst [ErrorMessageList] = getElementList(\"base\");\n\n\tconst WrapperComponent = \"div\";\n\n\tconst wrapperComponentProps = errorMessageArray.length > 1 && {\n\t\tclassName: cnMerge(\"flex flex-col\", classNames?.container),\n\t\t\"data-part\": \"error-message-container\",\n\t\t\"data-scope\": \"form\",\n\t\t\"data-slot\": \"form-error-message-container\",\n\t\tref: wrapperRef,\n\t};\n\n\tconst selectedChildren = typeof children === \"function\" ? children : render;\n\n\treturn (\n\t\t<WrapperComponent {...wrapperComponentProps}>\n\t\t\t<ErrorMessageList\n\t\t\t\teach={errorMessageArray}\n\t\t\t\trender={(errorMessage, index) => {\n\t\t\t\t\treturn selectedChildren({\n\t\t\t\t\t\tprops: getRenderProps({ index }),\n\t\t\t\t\t\tstate: getRenderState({ errorMessage, index }),\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t</WrapperComponent>\n\t);\n};\n\ntype FormErrorMessageProps<TControl, TFieldValues extends FieldValues> =\n\t| (TControl extends Control<infer TValues>\n\t\t\t? {\n\t\t\t\t\tclassName?: string;\n\t\t\t\t\tcontrol?: never;\n\t\t\t\t\terrorField?: FieldPath<TValues>;\n\t\t\t\t\ttype?: \"regular\";\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\tclassName?: string;\n\t\t\t\t\tcontrol?: Control<TFieldValues>; // == Here for type inference of errorField prop\n\t\t\t\t\terrorField?: FieldPath<TFieldValues>;\n\t\t\t\t\ttype?: \"regular\";\n\t\t\t\t})\n\t| {\n\t\t\tclassName?: string;\n\t\t\tcontrol?: never;\n\t\t\terrorField: string;\n\t\t\ttype: \"root\";\n\t };\n\nexport function FormErrorMessage<TControl, TFieldValues extends FieldValues = FieldValues>(\n\tprops: FormErrorMessageProps<TControl, TFieldValues>\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst { className, errorField = fieldContextValues?.name, type = \"regular\" } = props;\n\n\tconst { control } = useFormMethodsContext();\n\n\treturn (\n\t\t<FormErrorMessagePrimitive\n\t\t\tcontrol={control}\n\t\t\tfieldName={errorField as NonNullable<typeof errorField>}\n\t\t\ttype={type as \"root\"}\n\t\t\trender={({ props: renderProps, state }) => (\n\t\t\t\t<p\n\t\t\t\t\tkey={state.errorMessage}\n\t\t\t\t\t{...renderProps}\n\t\t\t\t\tclassName={cnMerge(\n\t\t\t\t\t\t\"text-shadcn-destructive text-[13px]\",\n\t\t\t\t\t\t\"data-[index=0]:mt-1\",\n\t\t\t\t\t\trenderProps.className,\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{state.errorMessage}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t/>\n\t);\n}\n\ntype FormSubmitProps = InferProps<\"button\"> & { asChild?: boolean };\n\nexport function FormSubmit<TElement extends React.ElementType = \"button\">(\n\tprops: PolymorphicProps<TElement, FormSubmitProps>\n) {\n\tconst { as: Element = \"button\", asChild, children, type = \"submit\", ...restOfProps } = props;\n\n\tconst Component = asChild ? Slot.Root : Element;\n\n\treturn (\n\t\t<Component data-part=\"submit\" data-scope=\"form\" data-slot=\"form-submit\" type={type} {...restOfProps}>\n\t\t\t{children}\n\t\t</Component>\n\t);\n}\n\ntype GetFieldValue<TFieldPathOrPaths, TFieldValues extends FieldValues> =\n\tTFieldPathOrPaths extends Array<FieldPath<TFieldValues>>\n\t\t? FieldPathValues<TFieldValues, TFieldPathOrPaths>\n\t\t: TFieldPathOrPaths extends FieldPath<TFieldValues>\n\t\t\t? FieldPathValue<TFieldValues, TFieldPathOrPaths>\n\t\t\t: unknown;\n\ntype FormSubscribeToFieldValueRenderFn<TFieldValues extends FieldValues, TFieldPathOrPaths> = (props: {\n\tvalue: GetFieldValue<TFieldPathOrPaths, TFieldValues>;\n}) => React.ReactNode;\n\ntype FormSubscribeToFieldValueProps<\n\tTFieldValues extends FieldValues,\n\tTFieldPathOrPaths,\n> = DiscriminatedRenderProps<FormSubscribeToFieldValueRenderFn<TFieldValues, TFieldPathOrPaths>> & {\n\tcontrol: Control<TFieldValues>;\n\tname?: TFieldPathOrPaths;\n};\n\nexport function FormSubscribeToFieldValue<\n\tTFieldValues extends FieldValues,\n\tconst TFieldPathOrPaths extends Array<FieldPath<TFieldValues>> | FieldPath<TFieldValues>,\n>(props: FormSubscribeToFieldValueProps<TFieldValues, TFieldPathOrPaths>) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst { children, name = fieldContextValues?.name, render } = props;\n\n\tconst { control } = useFormMethodsContext();\n\n\tconst formValue = useWatch({ control, name: name as string });\n\n\tconst fieldProps = { value: formValue };\n\n\tconst selectedChildren = typeof children === \"function\" ? children : render;\n\n\tconst resolvedChildren = selectedChildren(fieldProps as never);\n\n\treturn resolvedChildren;\n}\n\ntype FormSubscribeToFormStateRenderFn<TFieldValues extends FieldValues> = (\n\tprops: UseFormStateReturn<TFieldValues>\n) => React.ReactNode;\n\ntype FormSubscribeToFormStateProps<TFieldValues extends FieldValues> = DiscriminatedRenderProps<\n\tFormSubscribeToFormStateRenderFn<TFieldValues>\n> & {\n\tcontrol?: Control<TFieldValues>;\n\tname?: Array<FieldPath<TFieldValues>> | FieldPath<TFieldValues>;\n};\n\nexport function FormSubscribeToFormState<TFieldValues extends FieldValues = FieldValues>(\n\tprops: FormSubscribeToFormStateProps<TFieldValues>\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst { children, control, name = fieldContextValues?.name, render } = props;\n\n\tconst formState = useFormState({ control, name: name as FieldPath<TFieldValues> });\n\n\tconst selectedChildren = typeof children === \"function\" ? children : render;\n\n\tconst resolvedChildren = selectedChildren(formState as never);\n\n\treturn resolvedChildren;\n}\n","export {\n\tFormDescription as Description,\n\tFormErrorMessage as ErrorMessage,\n\tFormErrorMessagePrimitive as ErrorMessagePrimitive,\n\tFormField as Field,\n\tFormFieldContext as FieldContext,\n\tFormFieldController as FieldController,\n\tFormFieldControlledField as ControlledField,\n\tFormInput as Input,\n\tFormInputGroup as InputGroup,\n\tFormInputLeftItem as InputLeftItem,\n\tFormInputPrimitive as InputPrimitive,\n\tFormInputRightItem as InputRightItem,\n\tFormLabel as Label,\n\tFormRoot as Root,\n\tFormSelect as Select,\n\tFormSubmit as Submit,\n\tFormSubscribeToFieldValue as SubscribeToFieldValue,\n\tFormSubscribeToFormState as SubscribeToFormState,\n\tFormTextArea as TextArea,\n\tFormTextAreaPrimitive as TextAreaPrimitive,\n} from \"./form\";\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import * as react8 from "react";
1
+ import * as react7 from "react";
2
2
  import { Prettify, UnknownObject } from "@zayne-labs/toolkit-type-helpers";
3
3
 
4
4
  //#region src/lib/utils/getSlot/getSlot.d.ts
@@ -28,7 +28,7 @@ type SlotOptions = {
28
28
  *
29
29
  * @throws { AssertionError } when throwOnMultipleSlotMatch is true and multiple slots are found
30
30
  */
31
- declare const getSingleSlot: (children: React.ReactNode, SlotComponent: FunctionalComponent, options?: SlotOptions) => react8.ReactNode;
31
+ declare const getSingleSlot: (children: React.ReactNode, SlotComponent: FunctionalComponent, options?: SlotOptions) => react7.ReactNode;
32
32
  type MultipleSlotsOptions = {
33
33
  /**
34
34
  * @description The error message to throw when multiple slots are found for a given slot component
@@ -54,7 +54,7 @@ declare const getMultipleSlots: <const TSlotComponents extends FunctionalCompone
54
54
  /**
55
55
  * @description Returns all children that are not slot elements (i.e., don't match any of the provided slot components)
56
56
  */
57
- declare const getRegularChildren: (children: React.ReactNode, SlotComponentOrComponents: FunctionalComponent | FunctionalComponent[]) => react8.ReactNode[];
57
+ declare const getRegularChildren: (children: React.ReactNode, SlotComponentOrComponents: FunctionalComponent | FunctionalComponent[]) => react7.ReactNode[];
58
58
  //#endregion
59
59
  export { FunctionalComponent, getMultipleSlots, getRegularChildren, getSingleSlot, matchesAnySlotComponent, matchesSlotComponent };
60
- //# sourceMappingURL=index-DeBZiR6B.d.ts.map
60
+ //# sourceMappingURL=index-DRiwJkJC.d.ts.map
@@ -8,12 +8,13 @@ declare function CardHeader<TElement extends React.ElementType = "header">(props
8
8
  declare function CardTitle<TElement extends React.ElementType = "h3">(props: PolymorphicProps<TElement>): React.JSX.Element;
9
9
  declare function CardDescription<TElement extends React.ElementType = "p">(props: PolymorphicProps<TElement>): React.JSX.Element;
10
10
  declare function CardContent<TElement extends React.ElementType = "div">(props: PolymorphicProps<TElement>): React.JSX.Element;
11
+ declare function CardAction<TElement extends React.ElementType = "div">(props: PolymorphicProps<TElement>): React.JSX.Element;
11
12
  declare function CardFooter<TElement extends React.ElementType = "footer">(props: PolymorphicProps<TElement, {
12
13
  asChild?: boolean;
13
14
  }>): React.JSX.Element;
14
15
  declare namespace card_parts_d_exports {
15
- export { CardContent as Content, CardDescription as Description, CardFooter as Footer, CardHeader as Header, CardRoot as Root, CardTitle as Title };
16
+ export { CardAction as Action, CardContent as Content, CardDescription as Description, CardFooter as Footer, CardHeader as Header, CardRoot as Root, CardTitle as Title };
16
17
  }
17
18
  //#endregion
18
- export { CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle, card_parts_d_exports };
19
- //# sourceMappingURL=index-BMcv7ELE.d.ts.map
19
+ export { CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle, card_parts_d_exports };
20
+ //# sourceMappingURL=index-XYFc-mmy.d.ts.map
@@ -1,3 +1,3 @@
1
1
  import { GetSlotComponentProps, GetSlotMapResult, createSlotComponent, getSlotMap, slotComponentSymbol, withSlotNameAndSymbol } from "../../getSlotMap-DZlQN8--.js";
2
- import { FunctionalComponent, getMultipleSlots, getRegularChildren, getSingleSlot, matchesAnySlotComponent, matchesSlotComponent } from "../../index-DeBZiR6B.js";
2
+ import { FunctionalComponent, getMultipleSlots, getRegularChildren, getSingleSlot, matchesAnySlotComponent, matchesSlotComponent } from "../../index-DRiwJkJC.js";
3
3
  export { FunctionalComponent, GetSlotComponentProps, GetSlotMapResult, createSlotComponent, getMultipleSlots, getRegularChildren, getSingleSlot, getSlotMap, matchesAnySlotComponent, matchesSlotComponent, slotComponentSymbol, withSlotNameAndSymbol };
package/dist/style.css CHANGED
@@ -7,16 +7,17 @@
7
7
  "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
8
8
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
9
9
  "Courier New", monospace;
10
- --color-red-600: oklch(57.7% 0.245 27.325);
11
10
  --spacing: 0.25rem;
12
11
  --text-sm: 0.875rem;
13
12
  --text-sm--line-height: calc(1.25 / 0.875);
14
13
  --font-weight-semibold: 600;
14
+ --radius-xl: 0.75rem;
15
15
  --default-transition-duration: 150ms;
16
16
  --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
17
17
  --default-font-family: var(--font-sans);
18
18
  --default-mono-font-family: var(--font-mono);
19
- --color-shadcn-muted-foreground: hsl(215.4, 16.3%, 46.9%);
19
+ --color-shadcn-muted-foreground: oklch(0.556 0 0);
20
+ --color-shadcn-destructive: oklch(0.577 0.245 27.325);
20
21
  --animate-shake: shake 0.2s ease-in-out 0s 3;
21
22
  }
22
23
  }
@@ -166,6 +167,10 @@
166
167
  }
167
168
  }
168
169
  @layer utilities {
170
+ .\@container\/card-header {
171
+ container-type: inline-size;
172
+ container-name: card-header;
173
+ }
169
174
  .absolute {
170
175
  position: absolute;
171
176
  }
@@ -196,6 +201,15 @@
196
201
  .z-\[100\] {
197
202
  z-index: 100;
198
203
  }
204
+ .col-start-2 {
205
+ grid-column-start: 2;
206
+ }
207
+ .row-span-2 {
208
+ grid-row: span 2 / span 2;
209
+ }
210
+ .row-start-1 {
211
+ grid-row-start: 1;
212
+ }
199
213
  .container {
200
214
  width: 100%;
201
215
  @media (width >= 40rem) {
@@ -226,6 +240,9 @@
226
240
  .flex {
227
241
  display: flex;
228
242
  }
243
+ .grid {
244
+ display: grid;
245
+ }
229
246
  .hidden {
230
247
  display: none;
231
248
  }
@@ -286,6 +303,12 @@
286
303
  .snap-always {
287
304
  scroll-snap-stop: always;
288
305
  }
306
+ .auto-rows-min {
307
+ grid-auto-rows: min-content;
308
+ }
309
+ .grid-rows-\[auto_auto\] {
310
+ grid-template-rows: auto auto;
311
+ }
289
312
  .flex-col {
290
313
  flex-direction: column;
291
314
  }
@@ -295,6 +318,9 @@
295
318
  .items-center {
296
319
  align-items: center;
297
320
  }
321
+ .items-start {
322
+ align-items: flex-start;
323
+ }
298
324
  .justify-between {
299
325
  justify-content: space-between;
300
326
  }
@@ -307,12 +333,24 @@
307
333
  .justify-start {
308
334
  justify-content: flex-start;
309
335
  }
336
+ .gap-1\.5 {
337
+ gap: calc(var(--spacing) * 1.5);
338
+ }
310
339
  .gap-2 {
311
340
  gap: calc(var(--spacing) * 2);
312
341
  }
342
+ .gap-6 {
343
+ gap: calc(var(--spacing) * 6);
344
+ }
313
345
  .gap-\[15px\] {
314
346
  gap: 15px;
315
347
  }
348
+ .self-start {
349
+ align-self: flex-start;
350
+ }
351
+ .justify-self-end {
352
+ justify-self: flex-end;
353
+ }
316
354
  .overflow-x-scroll {
317
355
  overflow-x: scroll;
318
356
  }
@@ -325,9 +363,22 @@
325
363
  .rounded-\[50\%\] {
326
364
  border-radius: 50%;
327
365
  }
366
+ .rounded-xl {
367
+ border-radius: var(--radius-xl);
368
+ }
369
+ .border {
370
+ border-style: var(--tw-border-style);
371
+ border-width: 1px;
372
+ }
328
373
  .bg-transparent {
329
374
  background-color: transparent;
330
375
  }
376
+ .px-6 {
377
+ padding-inline: calc(var(--spacing) * 6);
378
+ }
379
+ .py-6 {
380
+ padding-block: calc(var(--spacing) * 6);
381
+ }
331
382
  .text-sm {
332
383
  font-size: var(--text-sm);
333
384
  line-height: var(--tw-leading, var(--text-sm--line-height));
@@ -338,12 +389,16 @@
338
389
  .text-\[13px\] {
339
390
  font-size: 13px;
340
391
  }
392
+ .leading-none {
393
+ --tw-leading: 1;
394
+ line-height: 1;
395
+ }
341
396
  .font-semibold {
342
397
  --tw-font-weight: var(--font-weight-semibold);
343
398
  font-weight: var(--font-weight-semibold);
344
399
  }
345
- .text-red-600 {
346
- color: var(--color-red-600);
400
+ .text-shadcn-destructive {
401
+ color: var(--color-shadcn-destructive);
347
402
  }
348
403
  .text-shadcn-muted-foreground {
349
404
  color: var(--color-shadcn-muted-foreground);
@@ -357,6 +412,10 @@
357
412
  .opacity-60 {
358
413
  opacity: 60%;
359
414
  }
415
+ .shadow-sm {
416
+ --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
417
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
418
+ }
360
419
  .transition-transform {
361
420
  transition-property: transform, translate, scale, rotate;
362
421
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -413,6 +472,11 @@
413
472
  opacity: 50%;
414
473
  }
415
474
  }
475
+ .has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\] {
476
+ &:has(*[data-slot="card-action"]) {
477
+ grid-template-columns: 1fr auto;
478
+ }
479
+ }
416
480
  .data-\[index\=0\]\:mt-1 {
417
481
  &[data-index="0"] {
418
482
  margin-top: calc(var(--spacing) * 1);
@@ -450,19 +514,92 @@
450
514
  }
451
515
  }
452
516
  }
517
+ :where(.dark, [data-theme="dark"]) {
518
+ --color-shadcn-muted-foreground: oklch(0.708 0 0);
519
+ --color-shadcn-destructive: oklch(0.704 0.191 22.216);
520
+ }
453
521
  @property --tw-scroll-snap-strictness {
454
522
  syntax: "*";
455
523
  inherits: false;
456
524
  initial-value: proximity;
457
525
  }
526
+ @property --tw-border-style {
527
+ syntax: "*";
528
+ inherits: false;
529
+ initial-value: solid;
530
+ }
531
+ @property --tw-leading {
532
+ syntax: "*";
533
+ inherits: false;
534
+ }
458
535
  @property --tw-font-weight {
459
536
  syntax: "*";
460
537
  inherits: false;
461
538
  }
462
- @property --tw-border-style {
539
+ @property --tw-shadow {
463
540
  syntax: "*";
464
541
  inherits: false;
465
- initial-value: solid;
542
+ initial-value: 0 0 #0000;
543
+ }
544
+ @property --tw-shadow-color {
545
+ syntax: "*";
546
+ inherits: false;
547
+ }
548
+ @property --tw-shadow-alpha {
549
+ syntax: "<percentage>";
550
+ inherits: false;
551
+ initial-value: 100%;
552
+ }
553
+ @property --tw-inset-shadow {
554
+ syntax: "*";
555
+ inherits: false;
556
+ initial-value: 0 0 #0000;
557
+ }
558
+ @property --tw-inset-shadow-color {
559
+ syntax: "*";
560
+ inherits: false;
561
+ }
562
+ @property --tw-inset-shadow-alpha {
563
+ syntax: "<percentage>";
564
+ inherits: false;
565
+ initial-value: 100%;
566
+ }
567
+ @property --tw-ring-color {
568
+ syntax: "*";
569
+ inherits: false;
570
+ }
571
+ @property --tw-ring-shadow {
572
+ syntax: "*";
573
+ inherits: false;
574
+ initial-value: 0 0 #0000;
575
+ }
576
+ @property --tw-inset-ring-color {
577
+ syntax: "*";
578
+ inherits: false;
579
+ }
580
+ @property --tw-inset-ring-shadow {
581
+ syntax: "*";
582
+ inherits: false;
583
+ initial-value: 0 0 #0000;
584
+ }
585
+ @property --tw-ring-inset {
586
+ syntax: "*";
587
+ inherits: false;
588
+ }
589
+ @property --tw-ring-offset-width {
590
+ syntax: "<length>";
591
+ inherits: false;
592
+ initial-value: 0px;
593
+ }
594
+ @property --tw-ring-offset-color {
595
+ syntax: "*";
596
+ inherits: false;
597
+ initial-value: #fff;
598
+ }
599
+ @property --tw-ring-offset-shadow {
600
+ syntax: "*";
601
+ inherits: false;
602
+ initial-value: 0 0 #0000;
466
603
  }
467
604
  @keyframes shake {
468
605
  0%, 100% {
@@ -479,8 +616,23 @@
479
616
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
480
617
  *, ::before, ::after, ::backdrop {
481
618
  --tw-scroll-snap-strictness: proximity;
482
- --tw-font-weight: initial;
483
619
  --tw-border-style: solid;
620
+ --tw-leading: initial;
621
+ --tw-font-weight: initial;
622
+ --tw-shadow: 0 0 #0000;
623
+ --tw-shadow-color: initial;
624
+ --tw-shadow-alpha: 100%;
625
+ --tw-inset-shadow: 0 0 #0000;
626
+ --tw-inset-shadow-color: initial;
627
+ --tw-inset-shadow-alpha: 100%;
628
+ --tw-ring-color: initial;
629
+ --tw-ring-shadow: 0 0 #0000;
630
+ --tw-inset-ring-color: initial;
631
+ --tw-inset-ring-shadow: 0 0 #0000;
632
+ --tw-ring-inset: initial;
633
+ --tw-ring-offset-width: 0px;
634
+ --tw-ring-offset-color: #fff;
635
+ --tw-ring-offset-shadow: 0 0 #0000;
484
636
  }
485
637
  }
486
638
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@zayne-labs/ui-react",
3
3
  "type": "module",
4
- "version": "0.9.19",
4
+ "version": "0.9.21",
5
5
  "description": "A composable UI/UI-utilities components library. ",
6
6
  "author": "Ryan Zayne",
7
7
  "license": "MIT",
@@ -1,54 +0,0 @@
1
- import { __export } from "./chunk-Cl8Af3a2.js";
2
- import { SlotRoot } from "./slot-RXTKo4L7.js";
3
- import { cnMerge } from "./cn-_FbtIrlZ.js";
4
- import "react";
5
- import { jsx } from "react/jsx-runtime";
6
-
7
- //#region src/components/ui/card/card.tsx
8
- function CardRoot(props) {
9
- const { as: Element = "article",...restOfProps } = props;
10
- return /* @__PURE__ */ jsx(Element, { ...restOfProps });
11
- }
12
- function CardHeader(props) {
13
- const { as: Element = "header",...restOfProps } = props;
14
- return /* @__PURE__ */ jsx(Element, { ...restOfProps });
15
- }
16
- function CardTitle(props) {
17
- const { as: Element = "h3", className,...restOfProps } = props;
18
- return /* @__PURE__ */ jsx(Element, {
19
- className: cnMerge("font-semibold", className),
20
- ...restOfProps
21
- });
22
- }
23
- function CardDescription(props) {
24
- const { as: Element = "p", className,...restOfProps } = props;
25
- return /* @__PURE__ */ jsx(Element, {
26
- className: cnMerge("text-shadcn-muted-foreground text-sm", className),
27
- ...restOfProps
28
- });
29
- }
30
- function CardContent(props) {
31
- const { as: Element = "div",...restOfProps } = props;
32
- return /* @__PURE__ */ jsx(Element, { ...restOfProps });
33
- }
34
- function CardFooter(props) {
35
- const { as: Element = "footer", asChild,...restOfProps } = props;
36
- const Component$1 = asChild ? SlotRoot : Element;
37
- return /* @__PURE__ */ jsx(Component$1, { ...restOfProps });
38
- }
39
-
40
- //#endregion
41
- //#region src/components/ui/card/card-parts.ts
42
- var card_parts_exports = {};
43
- __export(card_parts_exports, {
44
- Content: () => CardContent,
45
- Description: () => CardDescription,
46
- Footer: () => CardFooter,
47
- Header: () => CardHeader,
48
- Root: () => CardRoot,
49
- Title: () => CardTitle
50
- });
51
-
52
- //#endregion
53
- export { CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle, card_parts_exports };
54
- //# sourceMappingURL=card-DRjs-vtv.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"card-DRjs-vtv.js","names":["props: PolymorphicProps<TElement>","props: PolymorphicProps<TElement, { asChild?: boolean }>","Component"],"sources":["../../src/components/ui/card/card.tsx","../../src/components/ui/card/card-parts.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport { Slot } from \"@/components/common/slot\";\nimport { cnMerge } from \"@/lib/utils/cn\";\nimport type { PolymorphicProps } from \"@zayne-labs/toolkit-react/utils\";\n\nexport function CardRoot<TElement extends React.ElementType = \"article\">(\n\tprops: PolymorphicProps<TElement>\n) {\n\tconst { as: Element = \"article\", ...restOfProps } = props;\n\n\treturn <Element {...restOfProps} />;\n}\n\nexport function CardHeader<TElement extends React.ElementType = \"header\">(\n\tprops: PolymorphicProps<TElement>\n) {\n\tconst { as: Element = \"header\", ...restOfProps } = props;\n\n\treturn <Element {...restOfProps} />;\n}\n\nexport function CardTitle<TElement extends React.ElementType = \"h3\">(props: PolymorphicProps<TElement>) {\n\tconst { as: Element = \"h3\", className, ...restOfProps } = props;\n\n\treturn <Element className={cnMerge(\"font-semibold\", className)} {...restOfProps} />;\n}\n\nexport function CardDescription<TElement extends React.ElementType = \"p\">(\n\tprops: PolymorphicProps<TElement>\n) {\n\tconst { as: Element = \"p\", className, ...restOfProps } = props;\n\n\treturn (\n\t\t<Element className={cnMerge(\"text-shadcn-muted-foreground text-sm\", className)} {...restOfProps} />\n\t);\n}\n\nexport function CardContent<TElement extends React.ElementType = \"div\">(\n\tprops: PolymorphicProps<TElement>\n) {\n\tconst { as: Element = \"div\", ...restOfProps } = props;\n\n\treturn <Element {...restOfProps} />;\n}\n\nexport function CardFooter<TElement extends React.ElementType = \"footer\">(\n\tprops: PolymorphicProps<TElement, { asChild?: boolean }>\n) {\n\tconst { as: Element = \"footer\", asChild, ...restOfProps } = props;\n\n\tconst Component = asChild ? Slot.Root : Element;\n\n\treturn <Component {...restOfProps} />;\n}\n","export {\n\tCardContent as Content,\n\tCardDescription as Description,\n\tCardFooter as Footer,\n\tCardHeader as Header,\n\tCardRoot as Root,\n\tCardTitle as Title,\n} from \"./card\";\n"],"mappings":";;;;;;;AAMA,SAAgB,SACfA,OACC;CACD,MAAM,EAAE,IAAI,UAAU,UAAW,GAAG,aAAa,GAAG;AAEpD,wBAAO,IAAC,WAAQ,GAAI,cAAe;AACnC;AAED,SAAgB,WACfA,OACC;CACD,MAAM,EAAE,IAAI,UAAU,SAAU,GAAG,aAAa,GAAG;AAEnD,wBAAO,IAAC,WAAQ,GAAI,cAAe;AACnC;AAED,SAAgB,UAAqDA,OAAmC;CACvG,MAAM,EAAE,IAAI,UAAU,MAAM,UAAW,GAAG,aAAa,GAAG;AAE1D,wBAAO,IAAC;EAAQ,WAAW,QAAQ,iBAAiB,UAAU;EAAE,GAAI;GAAe;AACnF;AAED,SAAgB,gBACfA,OACC;CACD,MAAM,EAAE,IAAI,UAAU,KAAK,UAAW,GAAG,aAAa,GAAG;AAEzD,wBACC,IAAC;EAAQ,WAAW,QAAQ,wCAAwC,UAAU;EAAE,GAAI;GAAe;AAEpG;AAED,SAAgB,YACfA,OACC;CACD,MAAM,EAAE,IAAI,UAAU,MAAO,GAAG,aAAa,GAAG;AAEhD,wBAAO,IAAC,WAAQ,GAAI,cAAe;AACnC;AAED,SAAgB,WACfC,OACC;CACD,MAAM,EAAE,IAAI,UAAU,UAAU,QAAS,GAAG,aAAa,GAAG;CAE5D,MAAMC,cAAY,qBAAsB;AAExC,wBAAO,IAACA,eAAU,GAAI,cAAe;AACrC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"form-CUlTG3KI.js","names":["props: React.SVGProps<SVGSVGElement>","options: {\n\terrors: FieldErrors | undefined;\n\tfieldName: string | undefined;\n\ttype: FormErrorMessagePrimitiveProps<FieldValues>[\"type\"];\n}","errorMessage","options: {\n\tclassNames: FormInputProps[\"classNames\"];\n\ticonType: \"closed\" | \"open\";\n\trenderIconProps: RenderIconProps;\n\twithEyeIcon: FormRootContext[\"withEyeIcon\"];\n}","options: { strict?: TStrict }","options?: FieldStateOptions","props: FormRootProps<TValues>","HookFormProvider","props: FormFieldProps<TControl, TFieldValues>","ReactFragment","props: FormFieldControllerProps","props: ControllerProps<TFieldValues>","props: FormFieldContextProps","props: InferProps<\"label\">","props: InferProps<\"div\">","props: PolymorphicProps<TElement, FormSideItemProps>","props: FormInputPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }","props: FormTextAreaPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }","props: FormSelectPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }","props: CombinedFormInputProps & { rules?: RegisterOptions }","props: FormTextAreaProps","props: FormSelectProps","props: InferProps<\"p\">","FormErrorMessagePrimitive: FormErrorMessagePrimitiveType","options: { index: number }","options: { errorMessage: string; index: number }","props: FormErrorMessageProps<TControl, TFieldValues>","props: PolymorphicProps<TElement, FormSubmitProps>","Component","props: FormSubscribeToFieldValueProps<TFieldValues, TFieldPathOrPaths>","props: FormSubscribeToFormStateProps<TFieldValues>"],"sources":["../../src/components/ui/form/icons.tsx","../../src/components/ui/form/utils.ts","../../src/components/ui/form/form-context.ts","../../src/components/ui/form/form.tsx","../../src/components/ui/form/form-parts.ts"],"sourcesContent":["import * as React from \"react\";\n\nexport const EyeIconClosed = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t<path\n\t\t\tfill=\"currentColor\"\n\t\t\td=\"M15.175 8.325q.725.725 1.063 1.65t.237 1.9q0 .375-.275.638t-.65.262t-.638-.262t-.262-.638q.125-.65-.075-1.25T13.95 9.6t-1.025-.65t-1.275-.1q-.375 0-.638-.275t-.262-.65t.263-.637t.637-.263q.95-.1 1.875.238t1.65 1.062M12 6q-.475 0-.925.037t-.9.138q-.425.075-.763-.125t-.462-.6t.088-.775t.612-.45q.575-.125 1.163-.175T12 4q3.425 0 6.263 1.8t4.337 4.85q.1.2.15.413t.05.437t-.038.438t-.137.412q-.45 1-1.112 1.875t-1.463 1.6q-.3.275-.7.225t-.65-.4t-.212-.763t.337-.687q.6-.575 1.1-1.25t.875-1.45q-1.25-2.525-3.613-4.012T12 6m0 13q-3.35 0-6.125-1.812T1.5 12.425q-.125-.2-.187-.437T1.25 11.5t.05-.475t.175-.45q.5-1 1.163-1.912T4.15 7L2.075 4.9q-.275-.3-.262-.712T2.1 3.5t.7-.275t.7.275l17 17q.275.275.288.688t-.288.712q-.275.275-.7.275t-.7-.275l-3.5-3.45q-.875.275-1.775.413T12 19M5.55 8.4q-.725.65-1.325 1.425T3.2 11.5q1.25 2.525 3.613 4.013T12 17q.5 0 .975-.062t.975-.138l-.9-.95q-.275.075-.525.113T12 16q-1.875 0-3.188-1.312T7.5 11.5q0-.275.038-.525t.112-.525zm4.2 4.2\"\n\t\t/>\n\t</svg>\n);\n\nexport const EyeIconOpen = (props: React.SVGProps<SVGSVGElement>) => (\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n\t\t<path\n\t\t\tfill=\"currentColor\"\n\t\t\td=\"M12 16q1.875 0 3.188-1.312T16.5 11.5t-1.312-3.187T12 7T8.813 8.313T7.5 11.5t1.313 3.188T12 16m0-1.8q-1.125 0-1.912-.788T9.3 11.5t.788-1.912T12 8.8t1.913.788t.787 1.912t-.787 1.913T12 14.2m0 4.8q-3.35 0-6.113-1.8t-4.362-4.75q-.125-.225-.187-.462t-.063-.488t.063-.488t.187-.462q1.6-2.95 4.363-4.75T12 4t6.113 1.8t4.362 4.75q.125.225.188.463t.062.487t-.062.488t-.188.462q-1.6 2.95-4.362 4.75T12 19m0-2q2.825 0 5.188-1.487T20.8 11.5q-1.25-2.525-3.613-4.012T12 6T6.813 7.488T3.2 11.5q1.25 2.525 3.613 4.013T12 17\"\n\t\t/>\n\t</svg>\n);\n","import { cnMerge } from \"@/lib/utils/cn\";\nimport { isObject } from \"@zayne-labs/toolkit-type-helpers\";\nimport { createElement } from \"react\";\nimport type { FieldErrors, FieldValues } from \"react-hook-form\";\nimport type { FormErrorMessagePrimitiveProps, FormInputProps } from \"./form\";\nimport type { FormRootContext, RenderIconProps } from \"./form-context\";\nimport { EyeIconClosed, EyeIconOpen } from \"./icons\";\n\nexport const getFieldErrorMessage = (options: {\n\terrors: FieldErrors | undefined;\n\tfieldName: string | undefined;\n\ttype: FormErrorMessagePrimitiveProps<FieldValues>[\"type\"];\n}): string | string[] | null | undefined => {\n\tconst { errors, fieldName, type } = options;\n\n\tif (!fieldName || !errors || Object.keys(errors).length === 0) return;\n\n\tif (type === \"root\") {\n\t\treturn errors.root?.[fieldName]?.message;\n\t}\n\n\t// == Handle nested paths like `notifications.0`\n\tconst pathParts = fieldName.includes(\".\") ? fieldName.split(\".\") : null;\n\n\t// == If there are no path parts, return the error message\n\tif (!pathParts) {\n\t\tconst errorMessage = errors[fieldName]?.message;\n\n\t\treturn errorMessage as string | string[];\n\t}\n\n\tlet extractedError = errors;\n\n\tfor (const part of pathParts) {\n\t\tconst currentError = extractedError[part];\n\n\t\tif (!isObject(currentError)) break;\n\n\t\textractedError = currentError as never;\n\t}\n\n\tconst errorMessage = extractedError.message as unknown as string | string[];\n\n\treturn errorMessage;\n};\n\nexport const getEyeIcon = (options: {\n\tclassNames: FormInputProps[\"classNames\"];\n\ticonType: \"closed\" | \"open\";\n\trenderIconProps: RenderIconProps;\n\twithEyeIcon: FormRootContext[\"withEyeIcon\"];\n}) => {\n\tconst { classNames, iconType, renderIconProps, withEyeIcon } = options;\n\n\tif (!withEyeIcon) {\n\t\treturn null;\n\t}\n\n\tif (withEyeIcon === true) {\n\t\tconst defaultIconMap = {\n\t\t\tclosed: createElement(EyeIconClosed, {\n\t\t\t\tclassName: cnMerge(\"size-full\", classNames?.eyeIcon),\n\t\t\t}),\n\n\t\t\topen: createElement(EyeIconOpen, {\n\t\t\t\tclassName: cnMerge(\"size-full\", classNames?.eyeIcon),\n\t\t\t}),\n\t\t};\n\n\t\treturn defaultIconMap[iconType];\n\t}\n\n\tif (withEyeIcon.renderIcon) {\n\t\treturn withEyeIcon.renderIcon(renderIconProps);\n\t}\n\n\tif (withEyeIcon[iconType]) {\n\t\treturn withEyeIcon[iconType];\n\t}\n\n\treturn null;\n};\n","import { ContextError, createCustomContext } from \"@zayne-labs/toolkit-react\";\nimport type { DiscriminatedRenderProps } from \"@zayne-labs/toolkit-react/utils\";\nimport type { UnionDiscriminator } from \"@zayne-labs/toolkit-type-helpers\";\nimport {\n\ttype Control,\n\ttype UseFormReturn,\n\ttype UseFormStateReturn,\n\tuseFormState,\n\tuseFormContext as useHookFormContext,\n} from \"react-hook-form\";\nimport type { FieldValues, FormInputProps } from \"./form\";\nimport { getFieldErrorMessage } from \"./utils\";\n\ntype UseFormRootContextResult<TStrict extends boolean = true> = TStrict extends true\n\t? UseFormReturn<FieldValues> & { withEyeIcon?: FormInputProps[\"withEyeIcon\"] }\n\t: (UseFormReturn<FieldValues> & { withEyeIcon?: FormInputProps[\"withEyeIcon\"] }) | null;\n\nexport const useFormMethodsContext = <TStrict extends boolean = true>(\n\toptions: { strict?: TStrict } = {}\n): UseFormRootContextResult<TStrict> => {\n\tconst { strict = true } = options;\n\tconst formContext = useHookFormContext();\n\n\tif (strict && !(formContext as unknown)) {\n\t\tthrow new ContextError(\n\t\t\t`useFormRootContext returned \"null\". Did you forget to wrap the necessary components within FormRoot?`\n\t\t);\n\t}\n\n\treturn formContext;\n};\n\nexport type RenderIconProps = {\n\tisPasswordVisible: boolean;\n};\n\ntype EyeIconObject = UnionDiscriminator<\n\t[\n\t\t{ closed: React.ReactNode; open: React.ReactNode },\n\t\t{ renderIcon: (props: RenderIconProps) => React.ReactNode },\n\t]\n>;\n\nexport type FormRootContext = {\n\twithEyeIcon: boolean | EyeIconObject | undefined;\n};\n\nexport const [LaxFormRootProvider, useLaxFormRootContext] = createCustomContext<FormRootContext, false>({\n\thookName: \"useLaxFormRootContext\",\n\tname: \"LaxFormRootContext\",\n\tproviderName: \"FormRoot\",\n\tstrict: false,\n});\n\n// export const useStrictGetFieldState = () => {\n// \tconst { name } = useStrictFormFieldContext();\n\n// \tconst { getFieldState } = useFormRootContext();\n\n// \tconst fieldState = getFieldState(name);\n\n// \treturn fieldState;\n// };\n\nexport type FieldContextValue = {\n\tformDescriptionId: `${string}-(${string})-form-item-description`;\n\tformItemId: `${string}-(${string})-form-item`;\n\tformMessageId: `${string}-(${string})-form-item-message`;\n\tname: string;\n};\n\nexport type FormFieldContextProps = DiscriminatedRenderProps<\n\t(contextValue: FieldContextValue) => React.ReactNode\n>;\n\nexport const [StrictFormFieldProvider, useStrictFormFieldContext] = createCustomContext<FieldContextValue>(\n\t{\n\t\thookName: \"useFormFieldContext\",\n\t\tname: \"StrictFormFieldContext\",\n\t\tproviderName: \"FormField\",\n\t}\n);\n\nexport const [LaxFormFieldProvider, useLaxFormFieldContext] = createCustomContext<\n\tFieldContextValue,\n\tfalse\n>({\n\thookName: \"useLaxFormFieldContext\",\n\tname: \"LaxFormFieldContext\",\n\tproviderName: \"FormField\",\n\tstrict: false,\n});\n\nexport type FieldState = {\n\terrors?: UseFormStateReturn<FieldValues>[\"errors\"];\n\tisDisabled?: boolean;\n\tisInvalid?: boolean;\n};\n\n// eslint-disable-next-line ts-eslint/no-explicit-any -- any is used here for type compatibility\nexport type AnyControl = Control<any>;\n\ntype FieldStateOptions =\n\t| {\n\t\t\tcontrol: AnyControl | undefined;\n\t\t\tname?: string;\n\t }\n\t| {\n\t\t\tcontrol?: AnyControl;\n\t\t\tname: string | undefined;\n\t };\n\nexport const useLaxFormFieldState = (options?: FieldStateOptions): FieldState => {\n\tconst { control = options?.control } = useFormMethodsContext({ strict: false }) ?? {};\n\tconst { name = options?.name } = useLaxFormFieldContext() ?? {};\n\n\tconst getFormState = control ? useFormState : () => ({}) as Partial<ReturnType<typeof useFormState>>;\n\n\tconst { disabled, errors } = getFormState({ control, name });\n\n\tconst errorMessage = getFieldErrorMessage({ errors, fieldName: name, type: \"regular\" });\n\n\treturn {\n\t\terrors,\n\t\tisDisabled: disabled,\n\t\tisInvalid: Boolean(errorMessage),\n\t};\n};\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { getElementList } from \"@/components/common/for\";\nimport { Slot } from \"@/components/common/slot\";\nimport { cnMerge } from \"@/lib/utils/cn\";\nimport { getMultipleSlots } from \"@/lib/utils/getSlot\";\nimport { dataAttr, on, toArray } from \"@zayne-labs/toolkit-core\";\nimport { useCallbackRef, useToggle } from \"@zayne-labs/toolkit-react\";\nimport {\n\ttype DiscriminatedRenderProps,\n\ttype InferProps,\n\ttype PolymorphicProps,\n\tcomposeRefs,\n\tcomposeTwoEventHandlers,\n} from \"@zayne-labs/toolkit-react/utils\";\nimport { type AnyString, defineEnum } from \"@zayne-labs/toolkit-type-helpers\";\nimport { Fragment as ReactFragment, useEffect, useId, useMemo, useRef } from \"react\";\nimport {\n\ttype Control,\n\tController,\n\ttype ControllerFieldState,\n\ttype ControllerProps,\n\ttype ControllerRenderProps,\n\ttype FieldPath,\n\ttype FieldPathValue,\n\ttype FieldPathValues,\n\tFormProvider as HookFormProvider,\n\ttype RegisterOptions,\n\ttype UseFormReturn,\n\ttype UseFormStateReturn,\n\tuseFormState,\n\tuseWatch,\n} from \"react-hook-form\";\nimport {\n\ttype FieldContextValue,\n\ttype FieldState,\n\ttype FormFieldContextProps,\n\ttype FormRootContext,\n\tLaxFormFieldProvider,\n\tLaxFormRootProvider,\n\tStrictFormFieldProvider,\n\tuseFormMethodsContext,\n\tuseLaxFormFieldContext,\n\tuseLaxFormFieldState,\n\tuseLaxFormRootContext,\n\tuseStrictFormFieldContext,\n} from \"./form-context\";\nimport { getEyeIcon, getFieldErrorMessage } from \"./utils\";\n\nexport type FieldValues = Record<string, unknown>;\n\ntype FormRootProps<TFieldValues extends FieldValues> = Partial<FormRootContext>\n\t& React.ComponentPropsWithoutRef<\"form\"> & {\n\t\tchildren: React.ReactNode;\n\t\tmethods: UseFormReturn<TFieldValues>;\n\t};\n\nexport function FormRoot<TValues extends FieldValues>(props: FormRootProps<TValues>) {\n\tconst { children, className, methods, withEyeIcon, ...restOfProps } = props;\n\n\tconst formContextValue = useMemo(() => ({ withEyeIcon }), [withEyeIcon]);\n\n\treturn (\n\t\t<HookFormProvider {...methods}>\n\t\t\t<LaxFormRootProvider value={formContextValue}>\n\t\t\t\t<form\n\t\t\t\t\tclassName={cnMerge(\"flex flex-col\", className)}\n\t\t\t\t\t{...restOfProps}\n\t\t\t\t\tdata-scope=\"form\"\n\t\t\t\t\tdata-part=\"root\"\n\t\t\t\t\tdata-slot=\"form-root\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</form>\n\t\t\t</LaxFormRootProvider>\n\t\t</HookFormProvider>\n\t);\n}\n\ntype FormFieldProps<TControl, TFieldValues extends FieldValues> = (TControl extends Control<infer TValues>\n\t? {\n\t\t\tcontrol?: never;\n\t\t\tname: FieldPath<TValues>;\n\t\t}\n\t: {\n\t\t\tcontrol?: Control<TFieldValues>;\n\t\t\tname: FieldPath<TFieldValues>;\n\t\t})\n\t& (\n\t\t| (InferProps<\"div\"> & {\n\t\t\t\twithWrapper?: true;\n\t\t })\n\t\t| { children: React.ReactNode; className?: never; withWrapper: false }\n\t);\n\nexport function FormField<TControl, TFieldValues extends FieldValues = FieldValues>(\n\tprops: FormFieldProps<TControl, TFieldValues>\n) {\n\tconst { children, className, name, withWrapper = true } = props;\n\n\tconst { isDisabled, isInvalid } = useLaxFormFieldState({ name });\n\n\tconst uniqueId = useId();\n\n\tconst fieldContextValue = useMemo(\n\t\t() =>\n\t\t\t({\n\t\t\t\tformDescriptionId: `${name}-(${uniqueId})-form-item-description`,\n\t\t\t\tformItemId: `${name}-(${uniqueId})-form-item`,\n\t\t\t\tformMessageId: `${name}-(${uniqueId})-form-item-message`,\n\t\t\t\tname,\n\t\t\t}) satisfies FieldContextValue,\n\t\t[name, uniqueId]\n\t);\n\n\tconst WrapperElement = withWrapper ? \"div\" : ReactFragment;\n\n\tconst wrapperElementProps = withWrapper && {\n\t\tclassName: cnMerge(\"flex flex-col\", className),\n\t\t\"data-part\": \"field\",\n\t\t\"data-scope\": \"form\",\n\t\t\"data-slot\": \"form-field\",\n\t\t/* eslint-disable perfectionist/sort-objects -- order of attributes does not matter */\n\t\t\"data-disabled\": dataAttr(isDisabled),\n\t\t\"data-invalid\": dataAttr(isInvalid),\n\t\t/* eslint-enable perfectionist/sort-objects -- order of attributes does not matter */\n\t};\n\treturn (\n\t\t<StrictFormFieldProvider value={fieldContextValue}>\n\t\t\t<LaxFormFieldProvider value={fieldContextValue}>\n\t\t\t\t<WrapperElement {...wrapperElementProps}>{children}</WrapperElement>\n\t\t\t</LaxFormFieldProvider>\n\t\t</StrictFormFieldProvider>\n\t);\n}\n\ntype FormFieldControllerRenderFn = (props: {\n\tfield: Omit<ControllerRenderProps, \"value\"> & {\n\t\tvalue: never;\n\t};\n\tfieldState: ControllerFieldState;\n\tformState: UseFormStateReturn<never>;\n}) => React.ReactElement;\n\ntype FormFieldControllerProps = Omit<\n\tControllerProps<FieldValues, FieldPath<FieldValues>>,\n\t\"control\" | \"name\" | \"render\"\n> & {\n\trender: FormFieldControllerRenderFn;\n};\n\nexport function FormFieldController(props: FormFieldControllerProps) {\n\tconst { control } = useFormMethodsContext();\n\tconst { name } = useStrictFormFieldContext();\n\tconst { render, ...restOfProps } = props;\n\n\treturn <Controller name={name} control={control} render={render as never} {...restOfProps} />;\n}\n\nexport function FormFieldControlledField<TFieldValues extends FieldValues>(\n\tprops: ControllerProps<TFieldValues>\n) {\n\tconst { name } = props;\n\n\tconst uniqueId = useId();\n\n\tconst fieldContextValue = useMemo(\n\t\t() =>\n\t\t\t({\n\t\t\t\tformDescriptionId: `${name}-(${uniqueId})-form-item-description`,\n\t\t\t\tformItemId: `${name}-(${uniqueId})-form-item`,\n\t\t\t\tformMessageId: `${name}-(${uniqueId})-form-item-message`,\n\t\t\t\tname,\n\t\t\t}) satisfies FieldContextValue,\n\t\t[name, uniqueId]\n\t);\n\n\treturn (\n\t\t<StrictFormFieldProvider value={fieldContextValue}>\n\t\t\t<LaxFormFieldProvider value={fieldContextValue}>\n\t\t\t\t<Controller {...props} />\n\t\t\t</LaxFormFieldProvider>\n\t\t</StrictFormFieldProvider>\n\t);\n}\n\nexport function FormFieldContext(props: FormFieldContextProps) {\n\tconst { children, render } = props;\n\tconst fieldContextValues = useStrictFormFieldContext();\n\n\tif (typeof children === \"function\") {\n\t\treturn children(fieldContextValues);\n\t}\n\n\treturn render(fieldContextValues);\n}\n\nexport function FormLabel(props: InferProps<\"label\">) {\n\tconst { formItemId, name } = useStrictFormFieldContext();\n\tconst { children, className, ...restOfProps } = props;\n\n\tconst { isDisabled, isInvalid } = useLaxFormFieldState({ name });\n\n\treturn (\n\t\t<label\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"label\"\n\t\t\tdata-slot=\"form-label\"\n\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\thtmlFor={formItemId}\n\t\t\tclassName={className}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{children}\n\t\t</label>\n\t);\n}\n\nexport function FormInputGroup(props: InferProps<\"div\">) {\n\tconst { children, className, ...restOfProps } = props;\n\n\tconst { isDisabled, isInvalid } = useLaxFormFieldState();\n\n\tconst {\n\t\tregularChildren,\n\t\tslots: [leftItemSlot, rightItemSlot],\n\t} = getMultipleSlots(children, [FormInputLeftItem, FormInputRightItem]);\n\n\treturn (\n\t\t<div\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"input-group\"\n\t\t\tdata-slot=\"form-input-group\"\n\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\tclassName={cnMerge(\"flex items-center justify-between gap-2\", className)}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{leftItemSlot}\n\t\t\t{regularChildren}\n\t\t\t{rightItemSlot}\n\t\t</div>\n\t);\n}\n\ntype FormSideItemProps = {\n\tchildren?: React.ReactNode;\n\tclassName?: string;\n};\n\nexport function FormInputLeftItem<TElement extends React.ElementType = \"span\">(\n\tprops: PolymorphicProps<TElement, FormSideItemProps>\n) {\n\tconst { as: Element = \"span\", children, className, ...restOfProps } = props;\n\n\treturn (\n\t\t<Element\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"left-item\"\n\t\t\tdata-slot=\"form-left-item\"\n\t\t\tclassName={cnMerge(\"inline-flex items-center justify-center\", className)}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{children}\n\t\t</Element>\n\t);\n}\nFormInputLeftItem.slotSymbol = Symbol(\"input-left-item\");\n\nexport function FormInputRightItem<TElement extends React.ElementType = \"span\">(\n\tprops: PolymorphicProps<TElement, FormSideItemProps>\n) {\n\tconst { as: Element = \"span\", children, className, ...restOfProps } = props;\n\n\treturn (\n\t\t<Element\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"right-item\"\n\t\t\tdata-slot=\"form-right-item\"\n\t\t\tclassName={cnMerge(\"inline-flex items-center justify-center\", className)}\n\t\t\t{...restOfProps}\n\t\t>\n\t\t\t{children}\n\t\t</Element>\n\t);\n}\nFormInputRightItem.slotSymbol = Symbol(\"input-right-item\");\n\ntype FormInputPrimitiveProps<TFieldValues extends FieldValues = FieldValues> = Omit<\n\tReact.ComponentPropsWithRef<\"input\">,\n\t\"children\"\n> & {\n\tclassNames?: { error?: string; eyeIcon?: string; input?: string; inputGroup?: string };\n\tcontrol?: Control<TFieldValues>;\n\tfieldState?: FieldState;\n\tname?: FieldPath<TFieldValues>;\n\twithEyeIcon?: FormRootContext[\"withEyeIcon\"];\n};\n\ntype FormTextAreaPrimitiveProps<TFieldValues extends FieldValues = FieldValues> =\n\tReact.ComponentPropsWithRef<\"textarea\"> & {\n\t\tclassNames?: { base?: string; error?: string };\n\t\tcontrol?: Control<TFieldValues>;\n\t\tfieldState?: FieldState;\n\t\tname?: FieldPath<TFieldValues>;\n\t};\n\ntype FormSelectPrimitiveProps<TFieldValues extends FieldValues = FieldValues> =\n\tReact.ComponentPropsWithRef<\"select\"> & {\n\t\tclassNames?: { base?: string; error?: string };\n\t\tcontrol?: Control<TFieldValues>;\n\t\tfieldState?: FieldState;\n\t\tname?: FieldPath<TFieldValues>;\n\t};\n\nconst inputTypesWithoutFullWith = new Set<React.HTMLInputTypeAttribute>([\"checkbox\", \"radio\"]);\n\nexport function FormInputPrimitive<TFieldValues extends FieldValues>(\n\tprops: FormInputPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst formRootContextValues = useLaxFormRootContext();\n\n\tconst {\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol,\n\t\tfieldState,\n\t\tid = fieldContextValues?.formItemId,\n\t\tname = fieldContextValues?.name,\n\t\trules,\n\t\ttype = \"text\",\n\t\twithEyeIcon = formRootContextValues?.withEyeIcon ?? true,\n\t\t...restOfProps\n\t} = props;\n\n\tconst fieldStateFromLaxFormField = useLaxFormFieldState({ control, name });\n\n\tconst { isDisabled, isInvalid } = fieldState ?? fieldStateFromLaxFormField;\n\n\tconst [isPasswordVisible, toggleVisibility] = useToggle(false);\n\n\tconst shouldHaveEyeIcon = withEyeIcon && type === \"password\";\n\n\tconst WrapperElement = shouldHaveEyeIcon ? FormInputGroup : ReactFragment;\n\n\tconst wrapperElementProps = shouldHaveEyeIcon && {\n\t\tclassName: cnMerge(\"w-full\", classNames?.inputGroup, isInvalid && classNames?.error),\n\t};\n\n\tconst { register } = useFormMethodsContext({ strict: false }) ?? {};\n\n\tconst eyeIcon = getEyeIcon({\n\t\tclassNames,\n\t\ticonType: isPasswordVisible ? \"closed\" : \"open\",\n\t\trenderIconProps: { isPasswordVisible },\n\t\twithEyeIcon,\n\t});\n\n\treturn (\n\t\t<WrapperElement {...wrapperElementProps}>\n\t\t\t<input\n\t\t\t\tdata-scope=\"form\"\n\t\t\t\tdata-part=\"input\"\n\t\t\t\tdata-slot=\"form-input\"\n\t\t\t\taria-describedby={\n\t\t\t\t\t!isInvalid\n\t\t\t\t\t\t? fieldContextValues?.formDescriptionId\n\t\t\t\t\t\t: `${fieldContextValues?.formDescriptionId} ${fieldContextValues?.formMessageId}`\n\t\t\t\t}\n\t\t\t\taria-invalid={dataAttr(isInvalid)}\n\t\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\t\tid={id}\n\t\t\t\tname={name}\n\t\t\t\ttype={type === \"password\" && isPasswordVisible ? \"text\" : type}\n\t\t\t\tclassName={cnMerge(\n\t\t\t\t\t!inputTypesWithoutFullWith.has(type) && \"flex w-full\",\n\t\t\t\t\t`focus-visible:outline-hidden placeholder:text-shadcn-muted-foreground bg-transparent\n\t\t\t\t\ttext-sm file:border-0 file:bg-transparent disabled:cursor-not-allowed disabled:opacity-50`,\n\t\t\t\t\tclassName,\n\t\t\t\t\tclassNames?.input,\n\t\t\t\t\ttype !== \"password\" && isInvalid && classNames?.error\n\t\t\t\t)}\n\t\t\t\t{...(Boolean(name) && register?.(name, rules))}\n\t\t\t\t{...restOfProps}\n\t\t\t/>\n\n\t\t\t{shouldHaveEyeIcon && (\n\t\t\t\t<FormInputRightItem\n\t\t\t\t\tas=\"button\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={toggleVisibility}\n\t\t\t\t\tclassName=\"size-5 shrink-0 lg:size-6\"\n\t\t\t\t>\n\t\t\t\t\t{eyeIcon}\n\t\t\t\t</FormInputRightItem>\n\t\t\t)}\n\t\t</WrapperElement>\n\t);\n}\n\nexport function FormTextAreaPrimitive<TFieldValues extends FieldValues>(\n\tprops: FormTextAreaPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst {\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol,\n\t\tfieldState,\n\t\tid = fieldContextValues?.formItemId,\n\t\tname = fieldContextValues?.name,\n\t\trules,\n\t\t...restOfProps\n\t} = props;\n\n\tconst fieldStateFromLaxFormField = useLaxFormFieldState({ control, name });\n\n\tconst { isDisabled, isInvalid } = fieldState ?? fieldStateFromLaxFormField;\n\n\tconst { register } = useFormMethodsContext({ strict: false }) ?? {};\n\n\treturn (\n\t\t<textarea\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"textarea\"\n\t\t\tdata-slot=\"form-textarea\"\n\t\t\taria-describedby={\n\t\t\t\t!isInvalid\n\t\t\t\t\t? fieldContextValues?.formDescriptionId\n\t\t\t\t\t: `${fieldContextValues?.formDescriptionId} ${fieldContextValues?.formMessageId}`\n\t\t\t}\n\t\t\taria-invalid={dataAttr(isInvalid)}\n\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\tid={id}\n\t\t\tname={name}\n\t\t\tclassName={cnMerge(\n\t\t\t\t`placeholder:text-shadcn-muted-foreground focus-visible:outline-hidden w-full bg-transparent\n\t\t\t\ttext-sm disabled:cursor-not-allowed disabled:opacity-50`,\n\t\t\t\tclassName,\n\t\t\t\tclassNames?.base,\n\t\t\t\tisInvalid && classNames?.error\n\t\t\t)}\n\t\t\t{...(Boolean(name) && register?.(name, rules))}\n\t\t\t{...restOfProps}\n\t\t/>\n\t);\n}\nexport function FormSelectPrimitive<TFieldValues extends FieldValues>(\n\tprops: FormSelectPrimitiveProps<TFieldValues> & { rules?: RegisterOptions }\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst {\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol,\n\t\tfieldState,\n\t\tid = fieldContextValues?.formItemId,\n\t\tname = fieldContextValues?.name,\n\t\trules,\n\t\t...restOfProps\n\t} = props;\n\n\tconst fieldStateFromLaxFormField = useLaxFormFieldState({ control, name });\n\n\tconst { isDisabled, isInvalid } = fieldState ?? fieldStateFromLaxFormField;\n\n\tconst { register } = useFormMethodsContext({ strict: false }) ?? {};\n\n\treturn (\n\t\t<select\n\t\t\tdefaultValue=\"\"\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"select\"\n\t\t\tdata-slot=\"form-select\"\n\t\t\taria-describedby={\n\t\t\t\t!isInvalid\n\t\t\t\t\t? fieldContextValues?.formDescriptionId\n\t\t\t\t\t: `${fieldContextValues?.formDescriptionId} ${fieldContextValues?.formMessageId}`\n\t\t\t}\n\t\t\taria-invalid={dataAttr(isInvalid)}\n\t\t\tdata-disabled={dataAttr(isDisabled)}\n\t\t\tdata-invalid={dataAttr(isInvalid)}\n\t\t\tid={id}\n\t\t\tname={name}\n\t\t\tclassName={cnMerge(\n\t\t\t\t`placeholder:text-shadcn-muted-foreground focus-visible:outline-hidden w-full bg-transparent\n\t\t\t\ttext-sm disabled:cursor-not-allowed disabled:opacity-50`,\n\t\t\t\tclassName,\n\t\t\t\tclassNames?.base,\n\t\t\t\tisInvalid && classNames?.error\n\t\t\t)}\n\t\t\t{...(Boolean(name) && register?.(name, rules))}\n\t\t\t{...restOfProps}\n\t\t/>\n\t);\n}\n\ntype PrimitivePropsToOmit = \"control\" | \"formState\" | \"name\";\n\nexport type FormInputProps = Omit<FormInputPrimitiveProps, PrimitivePropsToOmit> & {\n\trules?: RegisterOptions;\n};\n\nexport type FormTextAreaProps = Omit<FormTextAreaPrimitiveProps, PrimitivePropsToOmit> & {\n\trules?: RegisterOptions;\n};\n\nexport type FormSelectProps = Omit<FormSelectPrimitiveProps, PrimitivePropsToOmit> & {\n\trules?: RegisterOptions;\n};\n\ntype CombinedFormInputProps =\n\t| (FormSelectProps & { type: \"select\" })\n\t| (FormTextAreaProps & { type: \"textarea\" })\n\t| FormInputProps;\n\nconst InputTypeMap = defineEnum({\n\tselect: FormSelectPrimitive,\n\ttextarea: FormTextAreaPrimitive,\n});\n\nexport function FormInput(props: CombinedFormInputProps & { rules?: RegisterOptions }) {\n\tconst { onBlur, onChange, ref, rules, type, ...restOfProps } = props;\n\n\tconst { name } = useStrictFormFieldContext();\n\tconst { register } = useFormMethodsContext();\n\n\tconst SelectedInput =\n\t\ttype === \"textarea\" || type === \"select\"\n\t\t\t? InputTypeMap[type as Exclude<typeof type, AnyString>]\n\t\t\t: FormInputPrimitive;\n\n\tconst registerProps = name ? register(name, rules) : null;\n\n\treturn (\n\t\t<SelectedInput\n\t\t\ttype={type as never}\n\t\t\tname={name}\n\t\t\t{...registerProps}\n\t\t\t{...(restOfProps as NonNullable<unknown>)}\n\t\t\tref={composeRefs(registerProps?.ref, ref)}\n\t\t\tonChange={composeTwoEventHandlers(registerProps?.onChange, onChange)}\n\t\t\tonBlur={composeTwoEventHandlers(registerProps?.onBlur, onBlur)}\n\t\t/>\n\t);\n}\n\nexport function FormTextArea(props: FormTextAreaProps) {\n\treturn <FormInput {...props} type=\"textarea\" />;\n}\n\nexport function FormSelect(props: FormSelectProps) {\n\treturn <FormInput {...props} type=\"select\" />;\n}\n\nexport function FormDescription(props: InferProps<\"p\">) {\n\tconst { className, ...restOfProps } = props;\n\n\tconst { formDescriptionId } = useLaxFormFieldContext() ?? {};\n\n\treturn <p id={formDescriptionId} className={cnMerge(\"text-[12px]\", className)} {...restOfProps} />;\n}\n\ntype ErrorMessageRenderProps = {\n\tclassName: string;\n\t\"data-index\": number;\n\t\"data-part\": \"error-message\";\n\t\"data-scope\": \"form\";\n\t\"data-slot\": \"form-error-message\";\n\tid: string | undefined;\n\tref: React.RefCallback<HTMLElement>;\n};\n\ntype ErrorMessageRenderState = { errorMessage: string; errorMessageArray: string[]; index: number };\n\ntype ErrorMessageRenderFn = (context: {\n\tprops: ErrorMessageRenderProps;\n\tstate: ErrorMessageRenderState;\n}) => React.ReactNode;\n\nexport type FormErrorMessagePrimitiveProps<TFieldValues extends FieldValues> =\n\tDiscriminatedRenderProps<ErrorMessageRenderFn> & {\n\t\tclassName?: string;\n\t\tclassNames?: {\n\t\t\tcontainer?: string;\n\t\t\terrorMessage?: string;\n\t\t\terrorMessageAnimation?: string;\n\t\t};\n\t\tcontrol?: Control<TFieldValues>; // == Here for type inference of errorField prop\n\t\tdisableErrorAnimation?: boolean;\n\t\tdisableScrollToErrorField?: boolean;\n\t} & (\n\t\t\t| {\n\t\t\t\t\tfieldName: FieldPath<TFieldValues>;\n\t\t\t\t\ttype?: \"regular\";\n\t\t\t }\n\t\t\t| {\n\t\t\t\t\tfieldName: string;\n\t\t\t\t\ttype: \"root\";\n\t\t\t }\n\t\t);\n\ntype FormErrorMessagePrimitiveType = {\n\t<TFieldValues extends FieldValues>(\n\t\tprops: Extract<FormErrorMessagePrimitiveProps<TFieldValues>, { type?: \"regular\" }>\n\t): React.ReactNode;\n\t<TFieldValues extends FieldValues>(\n\t\t// eslint-disable-next-line ts-eslint/unified-signatures -- Using overloads are better because it gives better error messages\n\t\tprops: Extract<FormErrorMessagePrimitiveProps<TFieldValues>, { type: \"root\" }>\n\t): React.ReactNode;\n};\n\nexport const FormErrorMessagePrimitive: FormErrorMessagePrimitiveType = (props) => {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\tconst rootContextValues = useFormMethodsContext({ strict: false });\n\n\tconst {\n\t\tchildren,\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol = rootContextValues?.control,\n\t\tdisableErrorAnimation = false,\n\t\tdisableScrollToErrorField = false,\n\t\tfieldName = fieldContextValues?.name,\n\t\trender,\n\t\ttype = \"regular\",\n\t} = props;\n\n\tconst { errors } = useLaxFormFieldState({ control, name: fieldName });\n\n\tconst { formMessageId } = useLaxFormFieldContext() ?? {};\n\n\tconst errorParagraphRef = useRef<HTMLElement>(null);\n\n\tconst wrapperRef = useRef<HTMLDivElement>(null);\n\n\tconst errorAnimationClass = classNames?.errorMessageAnimation ?? \"animate-shake\";\n\n\tconst getErrorElements = useCallbackRef(\n\t\t() => wrapperRef.current?.children ?? [errorParagraphRef.current]\n\t);\n\n\tuseEffect(() => {\n\t\tif (disableErrorAnimation) return;\n\n\t\tif (!errors || Object.keys(errors).length === 0) return;\n\n\t\tconst errorMessageElements = getErrorElements();\n\n\t\tif (errorMessageElements.length === 0) return;\n\n\t\tfor (const element of errorMessageElements) {\n\t\t\tif (!element) continue;\n\n\t\t\telement.classList.add(errorAnimationClass);\n\n\t\t\tconst onAnimationEnd = () => element.classList.remove(errorAnimationClass);\n\n\t\t\ton(\"animationend\", element, onAnimationEnd, { once: true });\n\t\t}\n\t}, [disableErrorAnimation, errorAnimationClass, errors, getErrorElements]);\n\n\tuseEffect(() => {\n\t\tif (disableScrollToErrorField) return;\n\n\t\tif (!errors || Object.keys(errors).length === 0) return;\n\n\t\tconst errorMessageElements = getErrorElements();\n\n\t\tconst firstErrorElement = errorMessageElements[0];\n\n\t\tif (!firstErrorElement) return;\n\n\t\t// == Find the input field associated with this error\n\t\tconst inputField = document.querySelector(`[name='${fieldName}']`);\n\t\tconst isFocusableInput = inputField?.matches(\n\t\t\t\":is(input, select, textarea, [contenteditable='true'])\"\n\t\t);\n\n\t\t// == Return early if the input field is focusable (Only scrollIntoView for non-focusable fields)\n\t\tif (isFocusableInput) return;\n\n\t\t// == Schedule the scroll to next frame to ensure DOM is ready\n\t\trequestAnimationFrame(() => {\n\t\t\t// == Get the element's position and scroll in one frame\n\t\t\tconst rect = firstErrorElement.getBoundingClientRect();\n\t\t\tconst topWithOffset = rect.top - 100;\n\n\t\t\twindow.scrollTo({\n\t\t\t\tbehavior: \"smooth\",\n\t\t\t\ttop: window.scrollY + topWithOffset,\n\t\t\t});\n\t\t});\n\t}, [disableScrollToErrorField, fieldName, errors, getErrorElements]);\n\n\tconst fieldErrorMessage = getFieldErrorMessage({ errors, fieldName, type });\n\n\tif (!fieldErrorMessage) {\n\t\treturn null;\n\t}\n\n\tconst errorMessageArray = toArray(fieldErrorMessage);\n\n\tif (errorMessageArray.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst getRenderProps = (options: { index: number }): ErrorMessageRenderProps => {\n\t\tconst { index } = options;\n\n\t\treturn {\n\t\t\tclassName: cnMerge(className, classNames?.errorMessage),\n\t\t\t\"data-index\": index,\n\t\t\t\"data-part\": \"error-message\",\n\t\t\t\"data-scope\": \"form\",\n\t\t\t\"data-slot\": \"form-error-message\",\n\t\t\tid: formMessageId,\n\t\t\tref: (node) => {\n\t\t\t\tif (!node || errorParagraphRef.current) return;\n\n\t\t\t\terrorParagraphRef.current = node;\n\t\t\t},\n\t\t};\n\t};\n\n\tconst getRenderState = (options: { errorMessage: string; index: number }): ErrorMessageRenderState => {\n\t\tconst { errorMessage, index } = options;\n\n\t\treturn {\n\t\t\terrorMessage,\n\t\t\terrorMessageArray,\n\t\t\tindex,\n\t\t};\n\t};\n\n\tconst [ErrorMessageList] = getElementList(\"base\");\n\n\tconst WrapperComponent = \"div\";\n\n\tconst wrapperComponentProps = errorMessageArray.length > 1 && {\n\t\tclassName: cnMerge(\"flex flex-col\", classNames?.container),\n\t\t\"data-part\": \"error-message-container\",\n\t\t\"data-scope\": \"form\",\n\t\t\"data-slot\": \"form-error-message-container\",\n\t\tref: wrapperRef,\n\t};\n\n\tconst selectedChildren = typeof children === \"function\" ? children : render;\n\n\treturn (\n\t\t<WrapperComponent {...wrapperComponentProps}>\n\t\t\t<ErrorMessageList\n\t\t\t\teach={errorMessageArray}\n\t\t\t\trender={(errorMessage, index) => {\n\t\t\t\t\treturn selectedChildren({\n\t\t\t\t\t\tprops: getRenderProps({ index }),\n\t\t\t\t\t\tstate: getRenderState({ errorMessage, index }),\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t</WrapperComponent>\n\t);\n};\n\ntype FormErrorMessageProps<TControl, TFieldValues extends FieldValues> =\n\t| (TControl extends Control<infer TValues>\n\t\t\t? {\n\t\t\t\t\tclassName?: string;\n\t\t\t\t\tcontrol?: never;\n\t\t\t\t\terrorField?: FieldPath<TValues>;\n\t\t\t\t\ttype?: \"regular\";\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\tclassName?: string;\n\t\t\t\t\tcontrol?: Control<TFieldValues>; // == Here for type inference of errorField prop\n\t\t\t\t\terrorField?: FieldPath<TFieldValues>;\n\t\t\t\t\ttype?: \"regular\";\n\t\t\t\t})\n\t| {\n\t\t\tclassName?: string;\n\t\t\tcontrol?: never;\n\t\t\terrorField: string;\n\t\t\ttype: \"root\";\n\t };\n\nexport function FormErrorMessage<TControl, TFieldValues extends FieldValues = FieldValues>(\n\tprops: FormErrorMessageProps<TControl, TFieldValues>\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst { className, errorField = fieldContextValues?.name, type = \"regular\" } = props;\n\n\tconst { control } = useFormMethodsContext();\n\n\treturn (\n\t\t<FormErrorMessagePrimitive\n\t\t\tcontrol={control}\n\t\t\tfieldName={errorField as NonNullable<typeof errorField>}\n\t\t\ttype={type as \"root\"}\n\t\t\trender={({ props: renderProps, state }) => (\n\t\t\t\t<p\n\t\t\t\t\tkey={state.errorMessage}\n\t\t\t\t\t{...renderProps}\n\t\t\t\t\tclassName={cnMerge(\n\t\t\t\t\t\t\"text-[13px] text-red-600\",\n\t\t\t\t\t\t\"data-[index=0]:mt-1\",\n\t\t\t\t\t\trenderProps.className,\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t{state.errorMessage}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t/>\n\t);\n}\n\ntype FormSubmitProps = InferProps<\"button\"> & { asChild?: boolean };\n\nexport function FormSubmit<TElement extends React.ElementType = \"button\">(\n\tprops: PolymorphicProps<TElement, FormSubmitProps>\n) {\n\tconst { as: Element = \"button\", asChild, children, type = \"submit\", ...restOfProps } = props;\n\n\tconst Component = asChild ? Slot.Root : Element;\n\n\treturn (\n\t\t<Component data-part=\"submit\" data-scope=\"form\" data-slot=\"form-submit\" type={type} {...restOfProps}>\n\t\t\t{children}\n\t\t</Component>\n\t);\n}\n\ntype GetFieldValue<TFieldPathOrPaths, TFieldValues extends FieldValues> =\n\tTFieldPathOrPaths extends Array<FieldPath<TFieldValues>>\n\t\t? FieldPathValues<TFieldValues, TFieldPathOrPaths>\n\t\t: TFieldPathOrPaths extends FieldPath<TFieldValues>\n\t\t\t? FieldPathValue<TFieldValues, TFieldPathOrPaths>\n\t\t\t: unknown;\n\ntype FormSubscribeToFieldValueRenderFn<TFieldValues extends FieldValues, TFieldPathOrPaths> = (props: {\n\tvalue: GetFieldValue<TFieldPathOrPaths, TFieldValues>;\n}) => React.ReactNode;\n\ntype FormSubscribeToFieldValueProps<\n\tTFieldValues extends FieldValues,\n\tTFieldPathOrPaths,\n> = DiscriminatedRenderProps<FormSubscribeToFieldValueRenderFn<TFieldValues, TFieldPathOrPaths>> & {\n\tcontrol: Control<TFieldValues>;\n\tname?: TFieldPathOrPaths;\n};\n\nexport function FormSubscribeToFieldValue<\n\tTFieldValues extends FieldValues,\n\tconst TFieldPathOrPaths extends Array<FieldPath<TFieldValues>> | FieldPath<TFieldValues>,\n>(props: FormSubscribeToFieldValueProps<TFieldValues, TFieldPathOrPaths>) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst { children, name = fieldContextValues?.name, render } = props;\n\n\tconst { control } = useFormMethodsContext();\n\n\tconst formValue = useWatch({ control, name: name as string });\n\n\tconst fieldProps = { value: formValue };\n\n\tconst selectedChildren = typeof children === \"function\" ? children : render;\n\n\tconst resolvedChildren = selectedChildren(fieldProps as never);\n\n\treturn resolvedChildren;\n}\n\ntype FormSubscribeToFormStateRenderFn<TFieldValues extends FieldValues> = (\n\tprops: UseFormStateReturn<TFieldValues>\n) => React.ReactNode;\n\ntype FormSubscribeToFormStateProps<TFieldValues extends FieldValues> = DiscriminatedRenderProps<\n\tFormSubscribeToFormStateRenderFn<TFieldValues>\n> & {\n\tcontrol?: Control<TFieldValues>;\n\tname?: Array<FieldPath<TFieldValues>> | FieldPath<TFieldValues>;\n};\n\nexport function FormSubscribeToFormState<TFieldValues extends FieldValues = FieldValues>(\n\tprops: FormSubscribeToFormStateProps<TFieldValues>\n) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst { children, control, name = fieldContextValues?.name, render } = props;\n\n\tconst formState = useFormState({ control, name: name as FieldPath<TFieldValues> });\n\n\tconst selectedChildren = typeof children === \"function\" ? children : render;\n\n\tconst resolvedChildren = selectedChildren(formState as never);\n\n\treturn resolvedChildren;\n}\n","export {\n\tFormDescription as Description,\n\tFormErrorMessage as ErrorMessage,\n\tFormErrorMessagePrimitive as ErrorMessagePrimitive,\n\tFormField as Field,\n\tFormFieldContext as FieldContext,\n\tFormFieldController as FieldController,\n\tFormFieldControlledField as ControlledField,\n\tFormInput as Input,\n\tFormInputGroup as InputGroup,\n\tFormInputLeftItem as InputLeftItem,\n\tFormInputPrimitive as InputPrimitive,\n\tFormInputRightItem as InputRightItem,\n\tFormLabel as Label,\n\tFormRoot as Root,\n\tFormSelect as Select,\n\tFormSubmit as Submit,\n\tFormSubscribeToFieldValue as SubscribeToFieldValue,\n\tFormSubscribeToFormState as SubscribeToFormState,\n\tFormTextArea as TextArea,\n\tFormTextAreaPrimitive as TextAreaPrimitive,\n} from \"./form\";\n"],"mappings":"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"}