@zayne-labs/ui-react 0.5.2 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/esm/{chunk-67OHQLRJ.js → chunk-66T5K46O.js} +8 -8
  2. package/dist/esm/chunk-66T5K46O.js.map +1 -0
  3. package/dist/esm/chunk-CWUEUCR5.js +3 -0
  4. package/dist/esm/chunk-CWUEUCR5.js.map +1 -0
  5. package/dist/esm/chunk-DJIVSXN7.js +24 -0
  6. package/dist/esm/chunk-DJIVSXN7.js.map +1 -0
  7. package/dist/esm/chunk-NPIJ4XZP.js +13 -0
  8. package/dist/esm/chunk-NPIJ4XZP.js.map +1 -0
  9. package/dist/esm/{chunk-P6HRTILR.js → chunk-OM4ZFFQS.js} +7 -25
  10. package/dist/esm/chunk-OM4ZFFQS.js.map +1 -0
  11. package/dist/esm/{chunk-2YCUMTC7.js → chunk-RQZL6ZG6.js} +18 -7
  12. package/dist/esm/chunk-RQZL6ZG6.js.map +1 -0
  13. package/dist/esm/common/await/index.d.ts +15 -0
  14. package/dist/esm/common/await/index.js +5 -0
  15. package/dist/esm/common/await/index.js.map +1 -0
  16. package/dist/esm/common/error-boundary/index.d.ts +41 -0
  17. package/dist/esm/common/error-boundary/index.js +4 -0
  18. package/dist/esm/common/error-boundary/index.js.map +1 -0
  19. package/dist/esm/common/index.d.ts +6 -71
  20. package/dist/esm/common/index.js +6 -3
  21. package/dist/esm/common/suspense-with-boundary/index.d.ts +11 -0
  22. package/dist/esm/common/suspense-with-boundary/index.js +5 -0
  23. package/dist/esm/common/suspense-with-boundary/index.js.map +1 -0
  24. package/dist/esm/index.d.ts +5 -2
  25. package/dist/esm/index.js +8 -5
  26. package/dist/esm/types-CeWumkhm.d.ts +22 -0
  27. package/dist/esm/ui/drop-zone/index.d.ts +39 -5
  28. package/dist/esm/ui/drop-zone/index.js +1 -1
  29. package/dist/esm/ui/form/index.d.ts +8 -8
  30. package/dist/esm/ui/form/index.js +7 -4
  31. package/dist/esm/ui/index.d.ts +1 -1
  32. package/dist/esm/ui/index.js +8 -5
  33. package/package.json +1 -1
  34. package/dist/esm/chunk-2YCUMTC7.js.map +0 -1
  35. package/dist/esm/chunk-67OHQLRJ.js.map +0 -1
  36. package/dist/esm/chunk-P6HRTILR.js.map +0 -1
@@ -7,7 +7,7 @@ import { Fragment, useId, useMemo, useRef, useEffect } from 'react';
7
7
  import { toArray } from '@zayne-labs/toolkit-core';
8
8
  import { createCustomContext, useToggle, ContextError } from '@zayne-labs/toolkit-react';
9
9
  import { getMultipleSlots } from '@zayne-labs/toolkit-react/utils';
10
- import { useFormState, FormProvider, useWatch, Controller, useFormContext } from 'react-hook-form';
10
+ import { useFormState, useWatch, FormProvider, Controller, useFormContext } from 'react-hook-form';
11
11
  export { useFormContext } from 'react-hook-form';
12
12
 
13
13
  var EyeIconInvisible = (props) => /* @__PURE__ */ React2.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React2.createElement(
@@ -408,7 +408,7 @@ function FormSubmit(props) {
408
408
  const Component = asChild ? Slot : Element;
409
409
  return /* @__PURE__ */ React2.createElement(Component, { type, ...restOfProps }, children);
410
410
  }
411
- function FormFieldSubscribe(props) {
411
+ function FormSubscribeToFieldValue(props) {
412
412
  const fieldContextValues = useLaxFormFieldContext();
413
413
  const { children, name = fieldContextValues?.name, render } = props;
414
414
  const { control } = useFormRootContext();
@@ -419,7 +419,7 @@ function FormFieldSubscribe(props) {
419
419
  }
420
420
  return render(fieldProps);
421
421
  }
422
- function FormStateSubscribe(props) {
422
+ function FormSubscribeToFormState(props) {
423
423
  const fieldContextValues = useLaxFormFieldContext();
424
424
  const { children, control, name = fieldContextValues?.name, render } = props;
425
425
  const formState = useFormState({ control, name });
@@ -439,7 +439,6 @@ __export(form_parts_exports, {
439
439
  Field: () => FormField,
440
440
  FieldContext: () => FormFieldContext,
441
441
  FieldController: () => FormFieldController,
442
- FieldSubscribe: () => FormFieldSubscribe,
443
442
  Input: () => FormInput,
444
443
  InputGroup: () => FormInputGroup,
445
444
  InputLeftItem: () => FormInputLeftItem,
@@ -447,11 +446,12 @@ __export(form_parts_exports, {
447
446
  InputRightItem: () => FormInputRightItem,
448
447
  Label: () => FormLabel,
449
448
  Root: () => FormRoot,
450
- StateSubscribe: () => FormStateSubscribe,
451
449
  Submit: () => FormSubmit,
450
+ SubscribeToFieldValue: () => FormSubscribeToFieldValue,
451
+ SubscribeToFormState: () => FormSubscribeToFormState,
452
452
  TextAreaPrimitive: () => FormTextAreaPrimitive
453
453
  });
454
454
 
455
- export { FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormFieldSubscribe, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormStateSubscribe, FormSubmit, FormTextAreaPrimitive, form_parts_exports, useStrictFormFieldContext };
456
- //# sourceMappingURL=chunk-67OHQLRJ.js.map
457
- //# sourceMappingURL=chunk-67OHQLRJ.js.map
455
+ export { FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextAreaPrimitive, form_parts_exports, useStrictFormFieldContext };
456
+ //# sourceMappingURL=chunk-66T5K46O.js.map
457
+ //# sourceMappingURL=chunk-66T5K46O.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/icons/EyeIcon.tsx","../../src/components/ui/form/form-context.ts","../../src/components/ui/form/form.tsx","../../src/components/ui/form/form-parts.ts"],"names":["React","HookFormProvider","ReactFragment","useFormState"],"mappings":"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","file":"chunk-66T5K46O.js","sourcesContent":["import * as React from \"react\";\n\nexport const EyeIconInvisible = (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 EyeIconVisible = (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 { ContextError, createCustomContext } from \"@zayne-labs/toolkit-react\";\nimport type { DiscriminatedRenderProps } from \"@zayne-labs/toolkit-react/utils\";\nimport {\n\ttype Control,\n\ttype UseFormReturn,\n\ttype UseFormStateReturn,\n\tuseFormContext,\n\tuseFormState,\n} from \"react-hook-form\";\nimport type { FieldValues } from \"./form\";\n\nexport const useFormRootContext = <TStrict extends boolean = true>(options: { strict?: TStrict } = {}) => {\n\tconst { strict = true } = options;\n\tconst formContext = useFormContext();\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 as TStrict extends true\n\t\t? UseFormReturn<FieldValues>\n\t\t: UseFormReturn<FieldValues> | null;\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 } = useFormRootContext({ 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\treturn { errors, isDisabled: disabled, isInvalid: Boolean(options?.name && errors?.[options.name]) };\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","\"use client\";\n\nimport * as React from \"react\";\n\nimport { Slot } from \"@/components/common\";\nimport { getElementList } from \"@/components/common/for\";\nimport { EyeIconInvisible, EyeIconVisible } from \"@/components/icons\";\nimport { cnMerge } from \"@/lib/utils/cn\";\nimport { toArray } from \"@zayne-labs/toolkit-core\";\nimport { useToggle } from \"@zayne-labs/toolkit-react\";\nimport {\n\ttype DiscriminatedRenderProps,\n\ttype InferProps,\n\ttype PolymorphicProps,\n\tgetMultipleSlots,\n} from \"@zayne-labs/toolkit-react/utils\";\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\tLaxFormFieldProvider,\n\tStrictFormFieldProvider,\n\tuseFormRootContext,\n\tuseLaxFormFieldContext,\n\tuseLaxFormFieldState,\n\tuseStrictFormFieldContext,\n} from \"./form-context\";\n\nexport type FieldValues = Record<string, unknown>;\n\nconst dataAttr = (condition: unknown) => (condition ? \"\" : undefined) as unknown as boolean;\n\ntype FormRootProps<TFieldValues extends FieldValues> = React.ComponentPropsWithoutRef<\"form\"> & {\n\tchildren: React.ReactNode;\n\tmethods: UseFormReturn<TFieldValues>;\n};\n\nexport function FormRoot<TValues extends FieldValues>(props: FormRootProps<TValues>) {\n\tconst { children, className, methods, ...restOfProps } = props;\n\n\treturn (\n\t\t<HookFormProvider {...methods}>\n\t\t\t<form\n\t\t\t\tclassName={cnMerge(\"flex flex-col\", className)}\n\t\t\t\t{...restOfProps}\n\t\t\t\tdata-scope=\"form\"\n\t\t\t\tdata-part=\"root\"\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</form>\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/* 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\nexport function FormControlledField<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\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 } = useFormRootContext();\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 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-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-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\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(\"leftItem\");\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\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(\"rightItem\");\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?: boolean;\n};\n\ntype FormTextAreaPrimitiveProps<TFieldValues extends FieldValues = FieldValues> =\n\tReact.ComponentPropsWithRef<\"textarea\"> & {\n\t\tcontrol?: Control<TFieldValues>;\n\t\terrorClassName?: string;\n\t\tfieldState?: FieldState;\n\t\tname?: FieldPath<TFieldValues>;\n\t\ttype: \"textarea\";\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 {\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 = 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\t\"data-disabled\": dataAttr(isDisabled),\n\t\t\"data-invalid\": dataAttr(isInvalid),\n\t};\n\n\tconst { register } = useFormRootContext({ strict: false }) ?? {};\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\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`bg-transparent text-sm file:border-0 file:bg-transparent\n\t\t\t\t\tplaceholder:text-shadcn-muted-foreground focus-visible:outline-none\n\t\t\t\t\tdisabled: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{isPasswordVisible ? (\n\t\t\t\t\t\t<EyeIconInvisible className={cnMerge(\"size-full\", classNames?.eyeIcon)} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<EyeIconVisible className={cnMerge(\"size-full\", classNames?.eyeIcon)} />\n\t\t\t\t\t)}\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\tcontrol,\n\t\terrorClassName,\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 } = useFormRootContext({ strict: false }) ?? {};\n\n\treturn (\n\t\t<textarea\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"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`w-full bg-transparent text-sm placeholder:text-shadcn-muted-foreground\n\t\t\t\tfocus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`,\n\t\t\t\tclassName,\n\t\t\t\tisInvalid && errorClassName\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\" | \"ref\";\ntype FormInputProps =\n\t| Omit<FormInputPrimitiveProps, PrimitivePropsToOmit>\n\t| Omit<FormTextAreaPrimitiveProps & { type: \"textarea\" }, PrimitivePropsToOmit>;\n\nexport function FormInput(props: FormInputProps & { rules?: RegisterOptions }) {\n\tconst { rules, type, ...restOfProps } = props;\n\n\tconst { name } = useStrictFormFieldContext();\n\tconst { register } = useFormRootContext();\n\n\tconst SelectedInput = type === \"textarea\" ? FormTextAreaPrimitive : FormInputPrimitive;\n\n\treturn (\n\t\t<SelectedInput\n\t\t\ttype={type as never}\n\t\t\tname={name}\n\t\t\t{...(Boolean(name) && register(name, rules))}\n\t\t\t{...(restOfProps as NonNullable<unknown>)}\n\t\t/>\n\t);\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\": string;\n\t\"data-scope\": string;\n\tid: string | undefined;\n\tonAnimationEnd?: React.ReactEventHandler<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\ntype 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\twithAnimationOnInvalid?: boolean;\n\t} & (\n\t\t\t| {\n\t\t\t\t\terrorField: FieldPath<TFieldValues>;\n\t\t\t\t\ttype?: \"regular\";\n\t\t\t }\n\t\t\t| {\n\t\t\t\t\terrorField: 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 = useFormRootContext({ strict: false });\n\n\tconst {\n\t\tchildren,\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol = rootContextValues?.control,\n\t\terrorField = fieldContextValues?.name,\n\t\trender,\n\t\ttype = \"regular\",\n\t\twithAnimationOnInvalid = true,\n\t} = props;\n\n\tconst { errors } = useLaxFormFieldState({ control, name: errorField });\n\n\tconst { formMessageId } = useLaxFormFieldContext() ?? {};\n\n\tconst wrapperRef = useRef<HTMLUListElement>(null);\n\n\tconst errorAnimationClass = classNames?.errorMessageAnimation ?? \"animate-shake\";\n\n\tuseEffect(() => {\n\t\tif (!withAnimationOnInvalid) return;\n\n\t\tconst errorMessageElements = wrapperRef.current?.children;\n\n\t\tif (!errorMessageElements) return;\n\n\t\tfor (const element of errorMessageElements) {\n\t\t\telement.classList.add(errorAnimationClass);\n\t\t}\n\t}, [errorAnimationClass, withAnimationOnInvalid]);\n\n\tuseEffect(() => {\n\t\tconst errorMessageElements = wrapperRef.current?.children;\n\n\t\tif (!errorMessageElements || !errors) return;\n\n\t\t// == Scroll to first error message\n\t\tif (Object.keys(errors).indexOf(errorField as string) === 0) {\n\t\t\terrorMessageElements[0]?.scrollIntoView({\n\t\t\t\tbehavior: \"smooth\",\n\t\t\t\tblock: \"center\",\n\t\t\t});\n\n\t\t\twindow.scrollBy({ behavior: \"smooth\", top: -100 });\n\t\t}\n\t}, [errorField, errors]);\n\n\tconst message = (\n\t\ttype === \"root\"\n\t\t\t? errors?.root?.[errorField as string]?.message\n\t\t\t: errors?.[errorField as string]?.message\n\t) as string | string[];\n\n\tif (!message) {\n\t\treturn null;\n\t}\n\n\tconst errorMessageArray = toArray(message);\n\n\tconst [ErrorMessageList] = getElementList();\n\n\tconst onAnimationEnd: React.AnimationEventHandler<HTMLElement> | undefined = withAnimationOnInvalid\n\t\t? (event) => event.currentTarget.classList.remove(errorAnimationClass)\n\t\t: undefined;\n\n\tconst getRenderProps = ({ index }: { index: number }) =>\n\t\t({\n\t\t\tclassName: cnMerge(errorAnimationClass, 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\tid: formMessageId,\n\t\t\tonAnimationEnd,\n\t\t}) satisfies ErrorMessageRenderProps;\n\n\tconst getRenderState = ({ errorMessage, index }: { errorMessage: string; index: number }) =>\n\t\t({\n\t\t\terrorMessage,\n\t\t\terrorMessageArray,\n\t\t\tindex,\n\t\t}) satisfies ErrorMessageRenderState;\n\n\tconst renderFn = typeof children === \"function\" ? children : render;\n\n\treturn (\n\t\t<ErrorMessageList\n\t\t\tref={wrapperRef}\n\t\t\teach={errorMessageArray}\n\t\t\tclassName={cnMerge(\"flex flex-col\", classNames?.container)}\n\t\t\trender={(errorMessage, index) => {\n\t\t\t\treturn renderFn({\n\t\t\t\t\tprops: getRenderProps({ index }),\n\t\t\t\t\tstate: getRenderState({ errorMessage, index }),\n\t\t\t\t});\n\t\t\t}}\n\t\t/>\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 } = useFormRootContext();\n\n\treturn (\n\t\t<FormErrorMessagePrimitive\n\t\t\tcontrol={control}\n\t\t\terrorField={errorField as NonNullable<typeof errorField>}\n\t\t\ttype={type as \"root\"}\n\t\t\trender={({ props: renderProps, state: { errorMessage } }) => (\n\t\t\t\t<p\n\t\t\t\t\t{...renderProps}\n\t\t\t\t\tkey={errorMessage}\n\t\t\t\t\tclassName={cnMerge(\"text-[13px]\", \"data-[index=0]:mt-1\", renderProps.className, className)}\n\t\t\t\t>\n\t\t\t\t\t{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 : Element;\n\n\treturn (\n\t\t<Component 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 } = useFormRootContext();\n\n\tconst formValue = useWatch({ control, name: name as string });\n\n\tconst fieldProps = { value: formValue };\n\n\tif (typeof children === \"function\") {\n\t\treturn children(fieldProps as never);\n\t}\n\n\treturn render(fieldProps as never);\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\tif (typeof children === \"function\") {\n\t\treturn children(formState as never);\n\t}\n\n\treturn render(formState as never);\n}\n","export {\n\tFormFieldController as FieldController,\n\tFormControlledField as ControlledField,\n\tFormDescription as Description,\n\tFormErrorMessage as ErrorMessage,\n\tFormErrorMessagePrimitive as ErrorMessagePrimitive,\n\tFormInput as Input,\n\tFormInputGroup as InputGroup,\n\tFormInputLeftItem as InputLeftItem,\n\tFormInputPrimitive as InputPrimitive,\n\tFormInputRightItem as InputRightItem,\n\tFormField as Field,\n\tFormFieldContext as FieldContext,\n\tFormLabel as Label,\n\tFormRoot as Root,\n\tFormSubmit as Submit,\n\tFormSubscribeToFormState as SubscribeToFormState,\n\tFormSubscribeToFieldValue as SubscribeToFieldValue,\n\tFormTextAreaPrimitive as TextAreaPrimitive,\n} from \"./form\";\n"]}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=chunk-CWUEUCR5.js.map
3
+ //# sourceMappingURL=chunk-CWUEUCR5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-CWUEUCR5.js"}
@@ -0,0 +1,24 @@
1
+ import { ErrorBoundary } from './chunk-OM4ZFFQS.js';
2
+ import * as React from 'react';
3
+ import { Fragment, Suspense, use } from 'react';
4
+
5
+ function Await(props) {
6
+ const { errorFallback, fallback, wrapperVariant = "suspense-and-boundary", ...restOfProps } = props;
7
+ const WithErrorBoundary = wrapperVariant === "only-boundary" || wrapperVariant === "suspense-and-boundary" ? ErrorBoundary : Fragment;
8
+ const WithSuspense = wrapperVariant === "only-suspense" || wrapperVariant === "suspense-and-boundary" ? Suspense : Fragment;
9
+ const errorBoundaryProps = Boolean(errorFallback) && { fallback: errorFallback };
10
+ const suspenseProps = Boolean(fallback) && { fallback };
11
+ return /* @__PURE__ */ React.createElement(WithErrorBoundary, { ...errorBoundaryProps }, /* @__PURE__ */ React.createElement(WithSuspense, { ...suspenseProps }, /* @__PURE__ */ React.createElement(AwaitInner, { ...restOfProps })));
12
+ }
13
+ function AwaitInner(props) {
14
+ const { children, promise, render } = props;
15
+ const result = use(promise);
16
+ if (typeof children === "function") {
17
+ return children(result);
18
+ }
19
+ return render(result);
20
+ }
21
+
22
+ export { Await };
23
+ //# sourceMappingURL=chunk-DJIVSXN7.js.map
24
+ //# sourceMappingURL=chunk-DJIVSXN7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/common/await/await.tsx"],"names":["ReactFragment"],"mappings":";;;;AAcO,SAAS,MAAc,KAA2B,EAAA;AACxD,EAAA,MAAM,EAAE,aAAe,EAAA,QAAA,EAAU,iBAAiB,uBAAyB,EAAA,GAAG,aAAgB,GAAA,KAAA;AAE9F,EAAA,MAAM,iBACL,GAAA,cAAA,KAAmB,eAAmB,IAAA,cAAA,KAAmB,0BACtD,aACA,GAAAA,QAAA;AAEJ,EAAA,MAAM,YACL,GAAA,cAAA,KAAmB,eAAmB,IAAA,cAAA,KAAmB,0BACtD,QACA,GAAAA,QAAA;AAEJ,EAAA,MAAM,qBAAqB,OAAQ,CAAA,aAAa,CAAK,IAAA,EAAE,UAAU,aAAc,EAAA;AAE/E,EAAA,MAAM,aAAgB,GAAA,OAAA,CAAQ,QAAQ,CAAA,IAAK,EAAE,QAAS,EAAA;AAEtD,EAAA,uBACE,KAAA,CAAA,aAAA,CAAA,iBAAA,EAAA,EAAmB,GAAG,kBAAA,EAAA,kBACrB,KAAA,CAAA,aAAA,CAAA,YAAA,EAAA,EAAc,GAAG,aAAA,EAAA,kBAChB,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAY,GAAG,WAAA,EAAa,CAC9B,CACD,CAAA;AAEF;AAMA,SAAS,WAAmB,KAAgC,EAAA;AAC3D,EAAA,MAAM,EAAE,QAAA,EAAU,OAAS,EAAA,MAAA,EAAW,GAAA,KAAA;AAEtC,EAAM,MAAA,MAAA,GAAS,IAAI,OAAO,CAAA;AAE1B,EAAI,IAAA,OAAO,aAAa,UAAY,EAAA;AACnC,IAAA,OAAO,SAAS,MAAM,CAAA;AAAA;AAGvB,EAAA,OAAO,OAAO,MAAM,CAAA;AACrB","file":"chunk-DJIVSXN7.js","sourcesContent":["import * as React from \"react\";\n\nimport type { DiscriminatedRenderProps } from \"@zayne-labs/toolkit-react/utils\";\nimport { Fragment as ReactFragment, Suspense, use } from \"react\";\nimport { ErrorBoundary } from \"../error-boundary\";\nimport type { SuspenseWithBoundaryProps } from \"../suspense-with-boundary\";\n\ntype RenderPropFn<Tvalue> = (result: Tvalue) => React.ReactNode;\n\ntype AwaitProps<Tvalue> = AwaitInnerProps<Tvalue>\n\t& Pick<SuspenseWithBoundaryProps, \"errorFallback\" | \"fallback\"> & {\n\t\twrapperVariant?: \"none\" | \"only-boundary\" | \"only-suspense\" | \"suspense-and-boundary\";\n\t};\n\nexport function Await<Tvalue>(props: AwaitProps<Tvalue>) {\n\tconst { errorFallback, fallback, wrapperVariant = \"suspense-and-boundary\", ...restOfProps } = props;\n\n\tconst WithErrorBoundary =\n\t\twrapperVariant === \"only-boundary\" || wrapperVariant === \"suspense-and-boundary\"\n\t\t\t? ErrorBoundary\n\t\t\t: ReactFragment;\n\n\tconst WithSuspense =\n\t\twrapperVariant === \"only-suspense\" || wrapperVariant === \"suspense-and-boundary\"\n\t\t\t? Suspense\n\t\t\t: ReactFragment;\n\n\tconst errorBoundaryProps = Boolean(errorFallback) && { fallback: errorFallback };\n\n\tconst suspenseProps = Boolean(fallback) && { fallback };\n\n\treturn (\n\t\t<WithErrorBoundary {...errorBoundaryProps}>\n\t\t\t<WithSuspense {...suspenseProps}>\n\t\t\t\t<AwaitInner {...restOfProps} />\n\t\t\t</WithSuspense>\n\t\t</WithErrorBoundary>\n\t);\n}\n\nexport type AwaitInnerProps<Tvalue> = DiscriminatedRenderProps<RenderPropFn<Tvalue>> & {\n\tpromise: Promise<Tvalue>;\n};\n\nfunction AwaitInner<TValue>(props: AwaitInnerProps<TValue>) {\n\tconst { children, promise, render } = props;\n\n\tconst result = use(promise);\n\n\tif (typeof children === \"function\") {\n\t\treturn children(result);\n\t}\n\n\treturn render(result);\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import { ErrorBoundary } from './chunk-OM4ZFFQS.js';
2
+ import { Suspense } from 'react';
3
+
4
+ function SuspenseWithBoundary(props) {
5
+ const { children, errorFallback, fallback } = props;
6
+ const errorBoundaryProps = Boolean(errorFallback) && { fallback: errorFallback };
7
+ const suspenseProps = Boolean(fallback) && { fallback };
8
+ return /* @__PURE__ */ React.createElement(ErrorBoundary, { ...errorBoundaryProps }, /* @__PURE__ */ React.createElement(Suspense, { ...suspenseProps }, children));
9
+ }
10
+
11
+ export { SuspenseWithBoundary };
12
+ //# sourceMappingURL=chunk-NPIJ4XZP.js.map
13
+ //# sourceMappingURL=chunk-NPIJ4XZP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/common/suspense-with-boundary/suspense-with-boundary.tsx"],"names":[],"mappings":";;;AASO,SAAS,qBAAqB,KAAkC,EAAA;AACtE,EAAA,MAAM,EAAE,QAAA,EAAU,aAAe,EAAA,QAAA,EAAa,GAAA,KAAA;AAE9C,EAAA,MAAM,qBAAqB,OAAQ,CAAA,aAAa,CAAK,IAAA,EAAE,UAAU,aAAc,EAAA;AAC/E,EAAA,MAAM,aAAgB,GAAA,OAAA,CAAQ,QAAQ,CAAA,IAAK,EAAE,QAAS,EAAA;AAEtD,EACC,uBAAA,KAAA,CAAA,aAAA,CAAC,iBAAe,GAAG,kBAAA,EAAA,sCACjB,QAAU,EAAA,EAAA,GAAG,aAAgB,EAAA,EAAA,QAAS,CACxC,CAAA;AAEF","file":"chunk-NPIJ4XZP.js","sourcesContent":["import { Suspense } from \"react\";\nimport { ErrorBoundary, type ErrorBoundaryProps } from \"../error-boundary\";\n\nexport type SuspenseWithBoundaryProps = {\n\tchildren: React.ReactNode;\n\terrorFallback?: ErrorBoundaryProps[\"fallback\"];\n\tfallback?: React.ReactNode;\n};\n\nexport function SuspenseWithBoundary(props: SuspenseWithBoundaryProps) {\n\tconst { children, errorFallback, fallback } = props;\n\n\tconst errorBoundaryProps = Boolean(errorFallback) && { fallback: errorFallback };\n\tconst suspenseProps = Boolean(fallback) && { fallback };\n\n\treturn (\n\t\t<ErrorBoundary {...errorBoundaryProps}>\n\t\t\t<Suspense {...suspenseProps}>{children}</Suspense>\n\t\t</ErrorBoundary>\n\t);\n}\n"]}
@@ -1,9 +1,9 @@
1
- import * as React2 from 'react';
2
- import { useState, Component, Fragment, Suspense, use } from 'react';
3
1
  import { createCustomContext, useCallbackRef } from '@zayne-labs/toolkit-react';
2
+ import * as React from 'react';
3
+ import { useState, Component } from 'react';
4
4
  import { isFunction } from '@zayne-labs/toolkit-type-helpers';
5
5
 
6
- // src/components/common/await/await.tsx
6
+ // src/components/common/error-boundary/error-boundary-context.ts
7
7
  var [ErrorBoundaryContextProvider, useErrorBoundaryContext] = createCustomContext({
8
8
  hookName: "useErrorBoundaryContext",
9
9
  name: "ErrorBoundaryContext",
@@ -80,7 +80,7 @@ var ErrorBoundary = class extends Component {
80
80
  }
81
81
  }
82
82
  }
83
- return /* @__PURE__ */ React2.createElement(
83
+ return /* @__PURE__ */ React.createElement(
84
84
  ErrorBoundaryContextProvider,
85
85
  {
86
86
  value: { error, hasError, resetErrorBoundary: this.#resetErrorBoundary }
@@ -97,24 +97,6 @@ var ErrorBoundary = class extends Component {
97
97
  };
98
98
  };
99
99
 
100
- // src/components/common/await/await.tsx
101
- function Await(props) {
102
- const { errorFallback, fallback, ...restOfProps } = props;
103
- const WithErrorBoundary = errorFallback ? ErrorBoundary : Fragment;
104
- const WithSuspense = fallback ? Suspense : Fragment;
105
- const errorBoundaryProps = { fallback: errorFallback };
106
- const suspenseProps = { fallback };
107
- return /* @__PURE__ */ React2.createElement(WithErrorBoundary, { ...errorBoundaryProps }, /* @__PURE__ */ React2.createElement(WithSuspense, { ...suspenseProps }, /* @__PURE__ */ React2.createElement(AwaitInner, { ...restOfProps })));
108
- }
109
- function AwaitInner(props) {
110
- const { children, promise, render } = props;
111
- const result = use(promise);
112
- if (typeof children === "function") {
113
- return children(result);
114
- }
115
- return render(result);
116
- }
117
-
118
- export { Await, ErrorBoundary, useErrorBoundary, useErrorBoundaryContext };
119
- //# sourceMappingURL=chunk-P6HRTILR.js.map
120
- //# sourceMappingURL=chunk-P6HRTILR.js.map
100
+ export { ErrorBoundary, useErrorBoundary, useErrorBoundaryContext };
101
+ //# sourceMappingURL=chunk-OM4ZFFQS.js.map
102
+ //# sourceMappingURL=chunk-OM4ZFFQS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/common/error-boundary/error-boundary-context.ts","../../src/components/common/error-boundary/useErrorBoundary.ts","../../src/components/common/error-boundary/error-boundary.tsx"],"names":[],"mappings":";;;;;;AAQO,IAAM,CAAC,4BAAA,EAA8B,uBAAuB,CAAA,GAClE,mBAA8C,CAAA;AAAA,EAC7C,QAAU,EAAA,yBAAA;AAAA,EACV,IAAM,EAAA,sBAAA;AAAA,EACN,YAAc,EAAA;AACf,CAAC;ACCK,IAAM,mBAAmB,MAA4B;AAC3D,EAAM,MAAA,EAAE,kBAAmB,EAAA,GAAI,uBAAwB,EAAA;AAEvD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,QAAwC,CAAA;AAAA,IACjE,KAAO,EAAA,IAAA;AAAA,IACP,QAAU,EAAA;AAAA,GACV,CAAA;AAED,EAAA,IAAI,MAAM,QAAU,EAAA;AACnB,IAAA,MAAM,KAAM,CAAA,KAAA;AAAA;AAGb,EAAM,MAAA,aAAA,GAAgB,eAAe,MAAM;AAC1C,IAAmB,kBAAA,EAAA;AAEnB,IAAS,QAAA,CAAA;AAAA,MACR,KAAO,EAAA,IAAA;AAAA,MACP,QAAU,EAAA;AAAA,KACV,CAAA;AAAA,GACD,CAAA;AAED,EAAM,MAAA,YAAA,GAAe,cAAe,CAAA,CAAC,KAAkB,KAAA;AACtD,IAAS,QAAA,CAAA;AAAA,MACR,KAAA;AAAA,MACA,QAAU,EAAA;AAAA,KACV,CAAA;AAAA,GACD,CAAA;AAED,EAAO,OAAA,EAAE,eAAe,YAAa,EAAA;AACtC;AC3BA,IAAM,YAAmC,GAAA;AAAA,EACxC,KAAO,EAAA,IAAA;AAAA,EACP,QAAU,EAAA;AACX,CAAA;AAEA,IAAM,kBAAkB,CAAC,CAAA,GAAe,EAAI,EAAA,CAAA,GAAe,EAAO,KAAA;AACjE,EAAA,OAAO,EAAE,MAAW,KAAA,CAAA,CAAE,MAAU,IAAA,CAAA,CAAE,KAAK,CAAC,IAAA,EAAM,KAAU,KAAA,CAAC,OAAO,EAAG,CAAA,IAAA,EAAM,CAAE,CAAA,KAAK,CAAC,CAAC,CAAA;AACnF,CAAA;AAOM,IAAA,aAAA,GAAN,cAA4B,SAAkD,CAAA;AAAA,EAC7E,YAAY,KAA2B,EAAA;AACtC,IAAA,KAAA,CAAM,KAAK,CAAA;AAEX,IAAA,IAAA,CAAK,KAAQ,GAAA,YAAA;AAAA;AACd,EAEA,OAAO,yBAAyB,KAAc,EAAA;AAC7C,IAAO,OAAA,EAAE,KAAO,EAAA,QAAA,EAAU,IAAK,EAAA;AAAA;AAChC,EAES,iBAAA,CAAkB,OAAc,IAAuB,EAAA;AAC/D,IAAK,IAAA,CAAA,KAAA,CAAM,OAAU,GAAA,KAAA,EAAO,IAAI,CAAA;AAAA;AACjC,EAES,kBAAA,CAAmB,WAA+B,SAA+B,EAAA;AACzF,IAAM,MAAA,EAAE,QAAS,EAAA,GAAI,IAAK,CAAA,KAAA;AAC1B,IAAM,MAAA,EAAE,SAAU,EAAA,GAAI,IAAK,CAAA,KAAA;AAM3B,IAAI,IAAA,QAAA,IAAY,UAAU,KAAU,KAAA,IAAA,IAAQ,gBAAgB,SAAU,CAAA,SAAA,EAAW,SAAS,CAAG,EAAA;AAC5F,MAAK,IAAA,CAAA,KAAA,CAAM,OAAU,GAAA,EAAE,IAAM,EAAA,SAAA,EAAW,MAAM,SAAU,CAAA,SAAA,EAAW,MAAQ,EAAA,MAAA,EAAQ,CAAA;AAEnF,MAAA,IAAA,CAAK,SAAS,YAAY,CAAA;AAAA;AAC3B;AACD,EAES,MAAS,GAAA;AACjB,IAAA,MAAM,EAAE,QAAA,EAAU,QAAS,EAAA,GAAI,IAAK,CAAA,KAAA;AACpC,IAAA,MAAM,EAAE,KAAA,EAAO,QAAS,EAAA,GAAI,IAAK,CAAA,KAAA;AAEjC,IAAA,IAAI,aAAgB,GAAA,QAAA;AAEpB,IAAA,IAAI,QAAU,EAAA;AACb,MAAA,QAAQ,IAAM;AAAA,QACb,KAAK,UAAW,CAAA,QAAQ,CAAG,EAAA;AAC1B,UAAA,MAAM,KAAuB,GAAA,EAAE,KAAO,EAAA,kBAAA,EAAoB,KAAK,mBAAoB,EAAA;AAEnF,UAAA,aAAA,GAAgB,SAAS,KAAK,CAAA;AAC9B,UAAA;AAAA;AACD,QAEA,KAAK,aAAa,MAAW,EAAA;AAC5B,UAAgB,aAAA,GAAA,QAAA;AAChB,UAAA;AAAA;AACD,QAEA,SAAS;AACR,UAAA,OAAA,CAAQ,MAAM,yCAAyC,CAAA;AACvD,UAAM,MAAA,KAAA;AAAA;AACP;AACD;AAGD,IACC,uBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,4BAAA;AAAA,MAAA;AAAA,QACA,OAAO,EAAE,KAAA,EAAO,QAAU,EAAA,kBAAA,EAAoB,KAAK,mBAAoB;AAAA,OAAA;AAAA,MAEtE;AAAA,KACF;AAAA;AAEF,EAEA,mBAAA,GAAsB,IAAI,UAA0B,KAAA;AACnD,IAAM,MAAA,EAAE,KAAM,EAAA,GAAI,IAAK,CAAA,KAAA;AAEvB,IAAA,IAAI,UAAU,IAAM,EAAA;AACnB,MAAA,IAAA,CAAK,MAAM,OAAU,GAAA,EAAE,UAAY,EAAA,MAAA,EAAQ,kBAAkB,CAAA;AAE7D,MAAA,IAAA,CAAK,SAAS,YAAY,CAAA;AAAA;AAC3B,GACD;AACD","file":"chunk-OM4ZFFQS.js","sourcesContent":["import { createCustomContext } from \"@zayne-labs/toolkit-react\";\n\nexport type ErrorBoundaryContextType = {\n\terror: unknown;\n\thasError: boolean;\n\tresetErrorBoundary: (...args: unknown[]) => void;\n};\n\nexport const [ErrorBoundaryContextProvider, useErrorBoundaryContext] =\n\tcreateCustomContext<ErrorBoundaryContextType>({\n\t\thookName: \"useErrorBoundaryContext\",\n\t\tname: \"ErrorBoundaryContext\",\n\t\tproviderName: \"ErrorBoundaryContextProvider\",\n\t});\n","import { useCallbackRef } from \"@zayne-labs/toolkit-react\";\nimport { useState } from \"react\";\nimport { useErrorBoundaryContext } from \"./error-boundary-context\";\n\ntype UseErrorBoundaryState<TError extends Error> =\n\t| {\n\t\t\terror: null;\n\t\t\thasError: false;\n\t }\n\t| {\n\t\t\terror: TError;\n\t\t\thasError: true;\n\t };\n\nexport const useErrorBoundary = <TError extends Error>() => {\n\tconst { resetErrorBoundary } = useErrorBoundaryContext();\n\n\tconst [state, setState] = useState<UseErrorBoundaryState<TError>>({\n\t\terror: null,\n\t\thasError: false,\n\t});\n\n\tif (state.hasError) {\n\t\tthrow state.error;\n\t}\n\n\tconst resetBoundary = useCallbackRef(() => {\n\t\tresetErrorBoundary();\n\n\t\tsetState({\n\t\t\terror: null,\n\t\t\thasError: false,\n\t\t});\n\t});\n\n\tconst showBoundary = useCallbackRef((error: TError) => {\n\t\tsetState({\n\t\t\terror,\n\t\t\thasError: true,\n\t\t});\n\t});\n\n\treturn { resetBoundary, showBoundary };\n};\n","import { isFunction } from \"@zayne-labs/toolkit-type-helpers\";\nimport * as React from \"react\";\nimport { Component } from \"react\";\nimport { ErrorBoundaryContextProvider } from \"./error-boundary-context\";\nimport type { ErrorBoundaryProps, FallbackProps } from \"./types\";\n\ntype ErrorBoundaryState =\n\t| {\n\t\t\terror: Error;\n\t\t\thasError: true;\n\t }\n\t| {\n\t\t\terror: null;\n\t\t\thasError: false;\n\t };\n\nconst initialState: ErrorBoundaryState = {\n\terror: null,\n\thasError: false,\n};\n\nconst hasArrayChanged = (a: unknown[] = [], b: unknown[] = []) => {\n\treturn a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n};\n\n/**\n * Copied from react-error-boundary package\n * @see https://github.com/bvaughn/react-error-boundary\n */\n\nclass ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n\tconstructor(props: ErrorBoundaryProps) {\n\t\tsuper(props);\n\n\t\tthis.state = initialState;\n\t}\n\n\tstatic getDerivedStateFromError(error: Error) {\n\t\treturn { error, hasError: true };\n\t}\n\n\toverride componentDidCatch(error: Error, info: React.ErrorInfo) {\n\t\tthis.props.onError?.(error, info);\n\t}\n\n\toverride componentDidUpdate(prevProps: ErrorBoundaryProps, prevState: ErrorBoundaryState) {\n\t\tconst { hasError } = this.state;\n\t\tconst { resetKeys } = this.props;\n\n\t\t// There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array, we'd end up resetting the error boundary immediately.\n\t\t// This would likely trigger a second error to be thrown.\n\t\t// So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n\t\tif (hasError && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n\t\t\tthis.props.onReset?.({ next: resetKeys, prev: prevProps.resetKeys, reason: \"keys\" });\n\n\t\t\tthis.setState(initialState);\n\t\t}\n\t}\n\n\toverride render() {\n\t\tconst { children, fallback } = this.props;\n\t\tconst { error, hasError } = this.state;\n\n\t\tlet childToRender = children;\n\n\t\tif (hasError) {\n\t\t\tswitch (true) {\n\t\t\t\tcase isFunction(fallback): {\n\t\t\t\t\tconst props: FallbackProps = { error, resetErrorBoundary: this.#resetErrorBoundary };\n\n\t\t\t\t\tchildToRender = fallback(props);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase fallback !== undefined: {\n\t\t\t\t\tchildToRender = fallback;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tconsole.error(\"error-boundary requires a fallback prop\");\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn (\n\t\t\t<ErrorBoundaryContextProvider\n\t\t\t\tvalue={{ error, hasError, resetErrorBoundary: this.#resetErrorBoundary }}\n\t\t\t>\n\t\t\t\t{childToRender}\n\t\t\t</ErrorBoundaryContextProvider>\n\t\t);\n\t}\n\n\t#resetErrorBoundary = (...parameters: unknown[]) => {\n\t\tconst { error } = this.state;\n\n\t\tif (error !== null) {\n\t\t\tthis.props.onReset?.({ parameters, reason: \"imperative-api\" });\n\n\t\t\tthis.setState(initialState);\n\t\t}\n\t};\n}\n\nexport { ErrorBoundary };\n"]}
@@ -4,7 +4,7 @@ import { useRef, useState } from 'react';
4
4
  import { handleFileValidation } from '@zayne-labs/toolkit-core';
5
5
  import { useToggle, useCallbackRef } from '@zayne-labs/toolkit-react';
6
6
  import { mergeTwoProps, composeRefs } from '@zayne-labs/toolkit-react/utils';
7
- import { isObject, isFunction } from '@zayne-labs/toolkit-type-helpers';
7
+ import { isFunction } from '@zayne-labs/toolkit-type-helpers';
8
8
 
9
9
  var useDropZone = (props) => {
10
10
  const inputRef = useRef(null);
@@ -12,14 +12,16 @@ var useDropZone = (props) => {
12
12
  allowedFileTypes,
13
13
  children,
14
14
  classNames,
15
+ disallowDuplicates = true,
15
16
  existingFiles,
16
17
  extraInputProps,
17
18
  extraRootProps,
19
+ fileLimit,
20
+ maxFileSize,
18
21
  onUpload,
19
22
  onUploadError,
20
23
  onUploadSuccess,
21
24
  render,
22
- validationSettings,
23
25
  validator
24
26
  // eslint-disable-next-line ts-eslint/no-unnecessary-condition -- Can be undefined
25
27
  } = props ?? {};
@@ -37,13 +39,17 @@ var useDropZone = (props) => {
37
39
  console.warn("No file selected");
38
40
  return;
39
41
  }
40
- const resolvedValidationSettings = isObject(validationSettings) ? { ...validationSettings, allowedFileTypes } : {};
41
42
  const validFilesArray = handleFileValidation({
42
43
  existingFileArray: existingFiles,
43
44
  newFileList: fileList,
44
45
  onError: onUploadError,
45
46
  onSuccess: onUploadSuccess,
46
- validationSettings: resolvedValidationSettings,
47
+ validationSettings: {
48
+ allowedFileTypes,
49
+ disallowDuplicates,
50
+ fileLimit,
51
+ maxFileSize
52
+ },
47
53
  validator
48
54
  });
49
55
  if (validFilesArray.length === 0) return;
@@ -59,7 +65,12 @@ var useDropZone = (props) => {
59
65
  event.preventDefault();
60
66
  toggleIsDragging(false);
61
67
  };
62
- const getRenderProps = () => ({ acceptedFiles, inputRef, isDragging });
68
+ const getRenderProps = () => ({
69
+ acceptedFiles,
70
+ inputRef,
71
+ isDragging,
72
+ openFilePicker: () => inputRef.current?.click()
73
+ });
63
74
  const computedChildren = children ?? render;
64
75
  const getChildren = () => isFunction(computedChildren) ? computedChildren(getRenderProps()) : computedChildren;
65
76
  const getRootProps = (rootProps) => {
@@ -124,5 +135,5 @@ function DropZone(props) {
124
135
  }
125
136
 
126
137
  export { DropZone, useDropZone };
127
- //# sourceMappingURL=chunk-2YCUMTC7.js.map
128
- //# sourceMappingURL=chunk-2YCUMTC7.js.map
138
+ //# sourceMappingURL=chunk-RQZL6ZG6.js.map
139
+ //# sourceMappingURL=chunk-RQZL6ZG6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/ui/drop-zone/use-drop-zone.ts","../../src/components/ui/drop-zone/drop-zone.tsx"],"names":[],"mappings":"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","file":"chunk-RQZL6ZG6.js","sourcesContent":["\"use client\";\n\nimport { cnMerge } from \"@/lib/utils/cn\";\nimport { type FileValidationOptions, handleFileValidation } from \"@zayne-labs/toolkit-core\";\nimport { useCallbackRef, useToggle } from \"@zayne-labs/toolkit-react\";\nimport {\n\ttype DiscriminatedRenderProps,\n\ttype InferProps,\n\tcomposeRefs,\n\tmergeTwoProps,\n} from \"@zayne-labs/toolkit-react/utils\";\nimport { isFunction } from \"@zayne-labs/toolkit-type-helpers\";\nimport { useRef, useState } from \"react\";\n\ntype RenderProps = {\n\tacceptedFiles: File[];\n\tinputRef: React.RefObject<HTMLInputElement | null>;\n\tisDragging: boolean;\n\topenFilePicker: () => void;\n};\n\nexport type RootProps = InferProps<\"div\"> & {\n\tclassNames?: {\n\t\tactiveDrag?: string;\n\t\tbase?: string;\n\t};\n};\n\nexport type InputProps = InferProps<\"input\">;\n\ntype DropZoneRenderProps = DiscriminatedRenderProps<\n\tReact.ReactNode | ((props: RenderProps) => React.ReactNode)\n>;\n\nexport type UseDropZoneProps = DropZoneRenderProps & {\n\t/**\n\t * Allowed file types to be uploaded.\n\t */\n\tallowedFileTypes?: string[];\n\n\tclassNames?: { activeDrag?: string; base?: string; input?: string };\n\t/**\n\t * Whether to disallow duplicate files\n\t * @default true\n\t */\n\tdisallowDuplicates?: boolean;\n\n\t/**\n\t * Existing files to be uploaded\n\t */\n\texistingFiles?: File[];\n\n\t/**\n\t * Extra props to pass to the input element\n\t */\n\textraInputProps?: InputProps;\n\n\t/**\n\t * Extra props to pass to the root element\n\t */\n\textraRootProps?: RootProps;\n\n\t/**\n\t * Maximum number of files that can be uploaded.\n\t */\n\tfileLimit?: number;\n\n\t/**\n\t * Maximum file size in MB\n\t */\n\tmaxFileSize?: number;\n\n\t/**\n\t * Callback function to handle file upload\n\t */\n\tonUpload?: (details: {\n\t\tacceptedFiles: File[];\n\t\tevent: React.ChangeEvent<HTMLInputElement> | React.DragEvent<HTMLDivElement>;\n\t}) => void;\n\n\t/**\n\t * Callback function to handle file upload errors\n\t */\n\tonUploadError?: FileValidationOptions[\"onError\"];\n\n\t/**\n\t * Callback function to handle file upload success\n\t */\n\tonUploadSuccess?: FileValidationOptions[\"onSuccess\"];\n\n\t/**\n\t * Custom validator function to handle file validation\n\t */\n\tvalidator?: (context: { existingFileArray: File[] | undefined; newFileList: FileList }) => File[];\n};\n\nexport const useDropZone = (props: UseDropZoneProps) => {\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\n\tconst {\n\t\tallowedFileTypes,\n\t\tchildren,\n\t\tclassNames,\n\t\tdisallowDuplicates = true,\n\t\texistingFiles,\n\t\textraInputProps,\n\t\textraRootProps,\n\t\tfileLimit,\n\t\tmaxFileSize,\n\t\tonUpload,\n\t\tonUploadError,\n\t\tonUploadSuccess,\n\t\trender,\n\t\tvalidator,\n\t\t// eslint-disable-next-line ts-eslint/no-unnecessary-condition -- Can be undefined\n\t} = props ?? {};\n\n\tconst [isDragging, toggleIsDragging] = useToggle(false);\n\n\tconst [acceptedFiles, setAcceptedFiles] = useState<File[]>([]);\n\n\tconst handleFileUpload = useCallbackRef(\n\t\t(event: React.ChangeEvent<HTMLInputElement> | React.DragEvent<HTMLDivElement>) => {\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (event.type === \"drop\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttoggleIsDragging(false);\n\t\t\t}\n\n\t\t\tconst fileList =\n\t\t\t\tevent.type === \"drop\"\n\t\t\t\t\t? (event as React.DragEvent).dataTransfer.files\n\t\t\t\t\t: (event as React.ChangeEvent<HTMLInputElement>).target.files;\n\n\t\t\tif (fileList === null) {\n\t\t\t\tconsole.warn(\"No file selected\");\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst validFilesArray = handleFileValidation({\n\t\t\t\texistingFileArray: existingFiles,\n\t\t\t\tnewFileList: fileList,\n\t\t\t\tonError: onUploadError,\n\t\t\t\tonSuccess: onUploadSuccess,\n\t\t\t\tvalidationSettings: {\n\t\t\t\t\tallowedFileTypes,\n\t\t\t\t\tdisallowDuplicates,\n\t\t\t\t\tfileLimit,\n\t\t\t\t\tmaxFileSize,\n\t\t\t\t},\n\t\t\t\tvalidator,\n\t\t\t});\n\n\t\t\tif (validFilesArray.length === 0) return;\n\n\t\t\tsetAcceptedFiles(validFilesArray);\n\n\t\t\tonUpload?.({ acceptedFiles: validFilesArray, event });\n\t\t}\n\t);\n\n\tconst handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n\t\tevent.preventDefault();\n\t\ttoggleIsDragging(true);\n\t};\n\n\tconst handleDragLeave = (event: React.DragEvent<HTMLDivElement>) => {\n\t\tevent.preventDefault();\n\t\ttoggleIsDragging(false);\n\t};\n\n\tconst getRenderProps = () =>\n\t\t({\n\t\t\tacceptedFiles,\n\t\t\tinputRef,\n\t\t\tisDragging,\n\t\t\topenFilePicker: () => inputRef.current?.click(),\n\t\t}) satisfies RenderProps;\n\n\tconst computedChildren = children ?? render;\n\n\tconst getChildren = () =>\n\t\tisFunction(computedChildren) ? computedChildren(getRenderProps()) : computedChildren;\n\n\tconst getRootProps = (rootProps?: RootProps) => {\n\t\tconst mergedRootProps = mergeTwoProps(extraRootProps, rootProps);\n\n\t\treturn {\n\t\t\t...mergedRootProps,\n\t\t\tclassName: cnMerge(\n\t\t\t\t\"relative isolate flex flex-col\",\n\t\t\t\tmergedRootProps.className,\n\t\t\t\tclassNames?.base,\n\t\t\t\tisDragging && [\"opacity-60\", classNames?.activeDrag, rootProps?.classNames?.activeDrag]\n\t\t\t),\n\t\t\t\"data-active-drag\": isDragging,\n\t\t\t\"data-part\": \"root\",\n\t\t\t\"data-scope\": \"dropzone\",\n\t\t\tonDragEnter: handleDragOver,\n\t\t\tonDragLeave: handleDragLeave,\n\t\t\tonDragOver: handleDragOver,\n\t\t\tonDrop: handleFileUpload,\n\t\t};\n\t};\n\n\tconst getInputProps = (inputProps?: InputProps) => {\n\t\tconst mergedInputProps = mergeTwoProps(extraInputProps, inputProps);\n\n\t\treturn {\n\t\t\t...mergedInputProps,\n\t\t\taccept: allowedFileTypes ? allowedFileTypes.join(\", \") : mergedInputProps.accept,\n\t\t\tclassName: cnMerge(\n\t\t\t\t\"absolute inset-0 z-[100] cursor-pointer opacity-0\",\n\t\t\t\tclassNames?.input,\n\t\t\t\tmergedInputProps.className\n\t\t\t),\n\t\t\t\"data-active-drag\": isDragging,\n\t\t\t\"data-part\": \"input\",\n\t\t\t\"data-scope\": \"dropzone\",\n\t\t\tonChange: (event: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\t\tmergedInputProps.onChange?.(event);\n\t\t\t\thandleFileUpload(event);\n\t\t\t},\n\t\t\tref: composeRefs([inputRef, mergedInputProps.ref]),\n\t\t\ttype: \"file\",\n\t\t};\n\t};\n\n\treturn {\n\t\tacceptedFiles,\n\t\tcomputedChildren,\n\t\tgetChildren,\n\t\tgetInputProps,\n\t\tgetRenderProps,\n\t\tgetRootProps,\n\t\thandleDragLeave,\n\t\thandleDragOver,\n\t\thandleFileUpload,\n\t\tinputRef,\n\t\tisDragging,\n\t};\n};\n","import * as React from \"react\";\n\nimport { type UseDropZoneProps, useDropZone } from \"./use-drop-zone\";\n\nfunction DropZone(props: UseDropZoneProps) {\n\tconst api = useDropZone(props);\n\n\treturn (\n\t\t<div {...api.getRootProps()}>\n\t\t\t<input {...api.getInputProps()} />\n\n\t\t\t{api.getChildren()}\n\t\t</div>\n\t);\n}\n\nexport { DropZone };\n"]}
@@ -0,0 +1,15 @@
1
+ import * as react from 'react';
2
+ import { DiscriminatedRenderProps } from '@zayne-labs/toolkit-react/utils';
3
+ import { SuspenseWithBoundaryProps } from '../suspense-with-boundary/index.js';
4
+ import '../../types-CeWumkhm.js';
5
+
6
+ type RenderPropFn<Tvalue> = (result: Tvalue) => react.ReactNode;
7
+ type AwaitProps<Tvalue> = AwaitInnerProps<Tvalue> & Pick<SuspenseWithBoundaryProps, "errorFallback" | "fallback"> & {
8
+ wrapperVariant?: "none" | "only-boundary" | "only-suspense" | "suspense-and-boundary";
9
+ };
10
+ declare function Await<Tvalue>(props: AwaitProps<Tvalue>): react.JSX.Element;
11
+ type AwaitInnerProps<Tvalue> = DiscriminatedRenderProps<RenderPropFn<Tvalue>> & {
12
+ promise: Promise<Tvalue>;
13
+ };
14
+
15
+ export { Await, type AwaitInnerProps };
@@ -0,0 +1,5 @@
1
+ export { Await } from '../../chunk-DJIVSXN7.js';
2
+ import '../../chunk-OM4ZFFQS.js';
3
+ import '../../chunk-PZ5AY32C.js';
4
+ //# sourceMappingURL=index.js.map
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,41 @@
1
+ import { E as ErrorBoundaryProps } from '../../types-CeWumkhm.js';
2
+ export { F as FallbackProps } from '../../types-CeWumkhm.js';
3
+ import * as react from 'react';
4
+ import { Component } from 'react';
5
+
6
+ type ErrorBoundaryContextType = {
7
+ error: unknown;
8
+ hasError: boolean;
9
+ resetErrorBoundary: (...args: unknown[]) => void;
10
+ };
11
+ declare const useErrorBoundaryContext: () => ErrorBoundaryContextType;
12
+
13
+ declare const useErrorBoundary: <TError extends Error>() => {
14
+ resetBoundary: () => void;
15
+ showBoundary: (error: TError) => void;
16
+ };
17
+
18
+ type ErrorBoundaryState = {
19
+ error: Error;
20
+ hasError: true;
21
+ } | {
22
+ error: null;
23
+ hasError: false;
24
+ };
25
+ /**
26
+ * Copied from react-error-boundary package
27
+ * @see https://github.com/bvaughn/react-error-boundary
28
+ */
29
+ declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
30
+ #private;
31
+ constructor(props: ErrorBoundaryProps);
32
+ static getDerivedStateFromError(error: Error): {
33
+ error: Error;
34
+ hasError: boolean;
35
+ };
36
+ componentDidCatch(error: Error, info: react.ErrorInfo): void;
37
+ componentDidUpdate(prevProps: ErrorBoundaryProps, prevState: ErrorBoundaryState): void;
38
+ render(): react.JSX.Element;
39
+ }
40
+
41
+ export { ErrorBoundary, type ErrorBoundaryContextType, ErrorBoundaryProps, useErrorBoundary, useErrorBoundaryContext };
@@ -0,0 +1,4 @@
1
+ export { ErrorBoundary, useErrorBoundary, useErrorBoundaryContext } from '../../chunk-OM4ZFFQS.js';
2
+ import '../../chunk-PZ5AY32C.js';
3
+ //# sourceMappingURL=index.js.map
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -1,77 +1,12 @@
1
- import * as react from 'react';
2
- import { Component } from 'react';
3
- import { DiscriminatedRenderProps } from '@zayne-labs/toolkit-react/utils';
1
+ export { Await, AwaitInnerProps } from './await/index.js';
2
+ export { ErrorBoundary, ErrorBoundaryContextType, useErrorBoundary, useErrorBoundaryContext } from './error-boundary/index.js';
3
+ export { E as ErrorBoundaryProps, F as FallbackProps } from '../types-CeWumkhm.js';
4
4
  export { ForBase, ForList, ForRenderProps, getElementList } from './for/index.js';
5
5
  export { Show, ShowContent, ShowFallback, ShowRoot } from './show/index.js';
6
6
  export { Slot, Slottable } from './slot/index.js';
7
+ export { SuspenseWithBoundary, SuspenseWithBoundaryProps } from './suspense-with-boundary/index.js';
7
8
  export { Switch, SwitchDefault, SwitchMatch, SwitchRoot } from './switch/index.js';
8
9
  export { Teleport } from './teleport/index.js';
10
+ import 'react';
11
+ import '@zayne-labs/toolkit-react/utils';
9
12
  import '@zayne-labs/toolkit-type-helpers';
10
-
11
- type ErrorBoundaryContextType = {
12
- error: unknown;
13
- hasError: boolean;
14
- resetErrorBoundary: (...args: unknown[]) => void;
15
- };
16
- declare const useErrorBoundaryContext: () => ErrorBoundaryContextType;
17
-
18
- declare const useErrorBoundary: <TError extends Error>() => {
19
- resetBoundary: () => void;
20
- showBoundary: (error: TError) => void;
21
- };
22
-
23
- type FallbackProps = {
24
- error: unknown;
25
- resetErrorBoundary: (...args: unknown[]) => void;
26
- };
27
- type ErrorBoundaryProps = {
28
- children: React.ReactNode;
29
- fallback: React.ReactNode | ((props: FallbackProps) => React.ReactNode);
30
- onError?: (error: Error, info: React.ErrorInfo & {
31
- ownerStack?: string;
32
- }) => void;
33
- onReset?: (details: {
34
- next: unknown[] | undefined;
35
- prev: unknown[] | undefined;
36
- reason: "keys";
37
- } | {
38
- parameters: unknown[];
39
- reason: "imperative-api";
40
- }) => void;
41
- resetKeys?: unknown[];
42
- };
43
-
44
- type ErrorBoundaryState = {
45
- error: Error;
46
- hasError: true;
47
- } | {
48
- error: null;
49
- hasError: false;
50
- };
51
- /**
52
- * Copied from react-error-boundary package
53
- * @see https://github.com/bvaughn/react-error-boundary
54
- */
55
- declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
56
- #private;
57
- constructor(props: ErrorBoundaryProps);
58
- static getDerivedStateFromError(error: Error): {
59
- error: Error;
60
- hasError: boolean;
61
- };
62
- componentDidCatch(error: Error, info: react.ErrorInfo): void;
63
- componentDidUpdate(prevProps: ErrorBoundaryProps, prevState: ErrorBoundaryState): void;
64
- render(): react.JSX.Element;
65
- }
66
-
67
- type RenderPropFn<Tvalue> = (result: Tvalue) => react.ReactNode;
68
- type AwaitInnerProps<Tvalue> = DiscriminatedRenderProps<RenderPropFn<Tvalue>> & {
69
- promise: Promise<Tvalue>;
70
- };
71
- type AwaitProps<Tvalue> = AwaitInnerProps<Tvalue> & {
72
- errorFallback?: ErrorBoundaryProps["fallback"];
73
- fallback?: react.ReactNode;
74
- };
75
- declare function Await<Tvalue>(props: AwaitProps<Tvalue>): react.JSX.Element;
76
-
77
- export { Await, type AwaitInnerProps, ErrorBoundary, type ErrorBoundaryContextType, type ErrorBoundaryProps, type FallbackProps, useErrorBoundary, useErrorBoundaryContext };
@@ -1,9 +1,12 @@
1
- export { Await, ErrorBoundary, useErrorBoundary, useErrorBoundaryContext } from '../chunk-P6HRTILR.js';
1
+ import '../chunk-CWUEUCR5.js';
2
+ export { SuspenseWithBoundary } from '../chunk-NPIJ4XZP.js';
3
+ export { switch_parts_exports as Switch, SwitchDefault, SwitchMatch, SwitchRoot } from '../chunk-SVQ4WBSO.js';
4
+ export { Teleport } from '../chunk-CB2EZJYW.js';
5
+ export { Await } from '../chunk-DJIVSXN7.js';
6
+ export { ErrorBoundary, useErrorBoundary, useErrorBoundaryContext } from '../chunk-OM4ZFFQS.js';
2
7
  export { ForBase, ForList, getElementList } from '../chunk-DW3FXTFL.js';
3
8
  export { show_parts_exports as Show, ShowContent, ShowFallback, ShowRoot } from '../chunk-FPCKBOJN.js';
4
9
  export { Slot, Slottable } from '../chunk-ENDWJXPF.js';
5
- export { switch_parts_exports as Switch, SwitchDefault, SwitchMatch, SwitchRoot } from '../chunk-SVQ4WBSO.js';
6
- export { Teleport } from '../chunk-CB2EZJYW.js';
7
10
  import '../chunk-PZ5AY32C.js';
8
11
  //# sourceMappingURL=index.js.map
9
12
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,11 @@
1
+ import * as react from 'react';
2
+ import { E as ErrorBoundaryProps } from '../../types-CeWumkhm.js';
3
+
4
+ type SuspenseWithBoundaryProps = {
5
+ children: React.ReactNode;
6
+ errorFallback?: ErrorBoundaryProps["fallback"];
7
+ fallback?: React.ReactNode;
8
+ };
9
+ declare function SuspenseWithBoundary(props: SuspenseWithBoundaryProps): react.JSX.Element;
10
+
11
+ export { SuspenseWithBoundary, type SuspenseWithBoundaryProps };
@@ -0,0 +1,5 @@
1
+ export { SuspenseWithBoundary } from '../../chunk-NPIJ4XZP.js';
2
+ import '../../chunk-OM4ZFFQS.js';
3
+ import '../../chunk-PZ5AY32C.js';
4
+ //# sourceMappingURL=index.js.map
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -2,12 +2,15 @@ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardRoot, C
2
2
  export { Carousel, CarouselButton, CarouselButtonsProps, CarouselCaption, CarouselContent, CarouselContentProps, CarouselControlProps, CarouselControls, CarouselIndicator, CarouselIndicatorGroup, CarouselIndicatorProps, CarouselItem, CarouselItemGroup, CarouselProviderProps, CarouselStore, CarouselStoreApi, CarouselWrapperProps, ImagesType, OtherCarouselProps } from './ui/carousel/index.js';
3
3
  export { useDragScroll } from './ui/drag-scroll/index.js';
4
4
  export { DropZone, InputProps, RootProps, UseDropZoneProps, useDropZone } from './ui/drop-zone/index.js';
5
- export { FieldValues, Form, FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormFieldSubscribe, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormStateSubscribe, FormSubmit, FormTextAreaPrimitive, useFormFieldContext } from './ui/form/index.js';
5
+ export { FieldValues, Form, FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextAreaPrimitive, useFormFieldContext } from './ui/form/index.js';
6
6
  export { useFormContext as useFormRootContext } from 'react-hook-form';
7
- export { Await, AwaitInnerProps, ErrorBoundary, ErrorBoundaryContextType, ErrorBoundaryProps, FallbackProps, useErrorBoundary, useErrorBoundaryContext } from './common/index.js';
7
+ export { Await, AwaitInnerProps } from './common/await/index.js';
8
+ export { ErrorBoundary, ErrorBoundaryContextType, useErrorBoundary, useErrorBoundaryContext } from './common/error-boundary/index.js';
9
+ export { E as ErrorBoundaryProps, F as FallbackProps } from './types-CeWumkhm.js';
8
10
  export { ForBase, ForList, ForRenderProps, getElementList } from './common/for/index.js';
9
11
  export { Show, ShowContent, ShowFallback, ShowRoot } from './common/show/index.js';
10
12
  export { Slot, Slottable } from './common/slot/index.js';
13
+ export { SuspenseWithBoundary, SuspenseWithBoundaryProps } from './common/suspense-with-boundary/index.js';
11
14
  export { Switch, SwitchDefault, SwitchMatch, SwitchRoot } from './common/switch/index.js';
12
15
  export { Teleport } from './common/teleport/index.js';
13
16
  import 'react';
package/dist/esm/index.js CHANGED
@@ -2,15 +2,18 @@ import './chunk-PNYEIX7F.js';
2
2
  export { card_parts_exports as Card, CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle } from './chunk-PXYYL2LL.js';
3
3
  export { carousel_parts_exports as Carousel, CarouselButton, CarouselCaption, CarouselContent, CarouselControls, CarouselIndicator, CarouselIndicatorGroup, CarouselItem, CarouselItemGroup } from './chunk-GVL6BLX5.js';
4
4
  export { useDragScroll } from './chunk-E42DOTGX.js';
5
- export { DropZone, useDropZone } from './chunk-2YCUMTC7.js';
6
- export { form_parts_exports as Form, FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormFieldSubscribe, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormStateSubscribe, FormSubmit, FormTextAreaPrimitive, useStrictFormFieldContext as useFormFieldContext, useFormContext as useFormRootContext } from './chunk-67OHQLRJ.js';
5
+ export { DropZone, useDropZone } from './chunk-RQZL6ZG6.js';
6
+ export { form_parts_exports as Form, FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextAreaPrimitive, useStrictFormFieldContext as useFormFieldContext, useFormContext as useFormRootContext } from './chunk-66T5K46O.js';
7
7
  import './chunk-OHG7GB7O.js';
8
- export { Await, ErrorBoundary, useErrorBoundary, useErrorBoundaryContext } from './chunk-P6HRTILR.js';
8
+ import './chunk-CWUEUCR5.js';
9
+ export { SuspenseWithBoundary } from './chunk-NPIJ4XZP.js';
10
+ export { switch_parts_exports as Switch, SwitchDefault, SwitchMatch, SwitchRoot } from './chunk-SVQ4WBSO.js';
11
+ export { Teleport } from './chunk-CB2EZJYW.js';
12
+ export { Await } from './chunk-DJIVSXN7.js';
13
+ export { ErrorBoundary, useErrorBoundary, useErrorBoundaryContext } from './chunk-OM4ZFFQS.js';
9
14
  export { ForBase, ForList, getElementList } from './chunk-DW3FXTFL.js';
10
15
  export { show_parts_exports as Show, ShowContent, ShowFallback, ShowRoot } from './chunk-FPCKBOJN.js';
11
16
  export { Slot, Slottable } from './chunk-ENDWJXPF.js';
12
- export { switch_parts_exports as Switch, SwitchDefault, SwitchMatch, SwitchRoot } from './chunk-SVQ4WBSO.js';
13
- export { Teleport } from './chunk-CB2EZJYW.js';
14
17
  import './chunk-PZ5AY32C.js';
15
18
  //# sourceMappingURL=index.js.map
16
19
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,22 @@
1
+ type FallbackProps = {
2
+ error: unknown;
3
+ resetErrorBoundary: (...args: unknown[]) => void;
4
+ };
5
+ type ErrorBoundaryProps = {
6
+ children: React.ReactNode;
7
+ fallback?: React.ReactNode | ((props: FallbackProps) => React.ReactNode);
8
+ onError?: (error: Error, info: React.ErrorInfo & {
9
+ ownerStack?: string;
10
+ }) => void;
11
+ onReset?: (details: {
12
+ next: unknown[] | undefined;
13
+ prev: unknown[] | undefined;
14
+ reason: "keys";
15
+ } | {
16
+ parameters: unknown[];
17
+ reason: "imperative-api";
18
+ }) => void;
19
+ resetKeys?: unknown[];
20
+ };
21
+
22
+ export type { ErrorBoundaryProps as E, FallbackProps as F };
@@ -6,6 +6,7 @@ type RenderProps = {
6
6
  acceptedFiles: File[];
7
7
  inputRef: React.RefObject<HTMLInputElement | null>;
8
8
  isDragging: boolean;
9
+ openFilePicker: () => void;
9
10
  };
10
11
  type RootProps = InferProps<"div"> & {
11
12
  classNames?: {
@@ -16,26 +17,58 @@ type RootProps = InferProps<"div"> & {
16
17
  type InputProps = InferProps<"input">;
17
18
  type DropZoneRenderProps = DiscriminatedRenderProps<React.ReactNode | ((props: RenderProps) => React.ReactNode)>;
18
19
  type UseDropZoneProps = DropZoneRenderProps & {
20
+ /**
21
+ * Allowed file types to be uploaded.
22
+ */
19
23
  allowedFileTypes?: string[];
20
24
  classNames?: {
21
25
  activeDrag?: string;
22
26
  base?: string;
23
27
  input?: string;
24
28
  };
29
+ /**
30
+ * Whether to disallow duplicate files
31
+ * @default true
32
+ */
33
+ disallowDuplicates?: boolean;
34
+ /**
35
+ * Existing files to be uploaded
36
+ */
25
37
  existingFiles?: File[];
38
+ /**
39
+ * Extra props to pass to the input element
40
+ */
26
41
  extraInputProps?: InputProps;
42
+ /**
43
+ * Extra props to pass to the root element
44
+ */
27
45
  extraRootProps?: RootProps;
46
+ /**
47
+ * Maximum number of files that can be uploaded.
48
+ */
49
+ fileLimit?: number;
50
+ /**
51
+ * Maximum file size in MB
52
+ */
53
+ maxFileSize?: number;
54
+ /**
55
+ * Callback function to handle file upload
56
+ */
28
57
  onUpload?: (details: {
29
58
  acceptedFiles: File[];
30
59
  event: React.ChangeEvent<HTMLInputElement> | React.DragEvent<HTMLDivElement>;
31
60
  }) => void;
61
+ /**
62
+ * Callback function to handle file upload errors
63
+ */
32
64
  onUploadError?: FileValidationOptions["onError"];
65
+ /**
66
+ * Callback function to handle file upload success
67
+ */
33
68
  onUploadSuccess?: FileValidationOptions["onSuccess"];
34
- validationSettings?: {
35
- disallowDuplicates?: boolean;
36
- fileLimit?: number;
37
- maxFileSize?: number;
38
- };
69
+ /**
70
+ * Custom validator function to handle file validation
71
+ */
39
72
  validator?: (context: {
40
73
  existingFileArray: File[] | undefined;
41
74
  newFileList: FileList;
@@ -368,6 +401,7 @@ declare const useDropZone: (props: UseDropZoneProps) => {
368
401
  acceptedFiles: File[];
369
402
  inputRef: react.RefObject<HTMLInputElement | null>;
370
403
  isDragging: boolean;
404
+ openFilePicker: () => void | undefined;
371
405
  };
372
406
  getRootProps: (rootProps?: RootProps) => {
373
407
  className: string;
@@ -1,4 +1,4 @@
1
- export { DropZone, useDropZone } from '../../chunk-2YCUMTC7.js';
1
+ export { DropZone, useDropZone } from '../../chunk-RQZL6ZG6.js';
2
2
  import '../../chunk-OHG7GB7O.js';
3
3
  import '../../chunk-PZ5AY32C.js';
4
4
  //# sourceMappingURL=index.js.map
@@ -161,23 +161,23 @@ type FormSubmitProps = InferProps<"button"> & {
161
161
  };
162
162
  declare function FormSubmit<TElement extends react.ElementType = "button">(props: PolymorphicProps<TElement, FormSubmitProps>): react.JSX.Element;
163
163
  type GetFieldValue<TFieldPathOrPaths, TFieldValues extends FieldValues> = TFieldPathOrPaths extends Array<FieldPath<TFieldValues>> ? FieldPathValues<TFieldValues, TFieldPathOrPaths> : TFieldPathOrPaths extends FieldPath<TFieldValues> ? FieldPathValue<TFieldValues, TFieldPathOrPaths> : unknown;
164
- type FieldSubscribeRenderFn<TFieldValues extends FieldValues, TFieldPathOrPaths> = (props: {
164
+ type FormSubscribeToFieldValueRenderFn<TFieldValues extends FieldValues, TFieldPathOrPaths> = (props: {
165
165
  value: GetFieldValue<TFieldPathOrPaths, TFieldValues>;
166
166
  }) => react.ReactNode;
167
- type FormFieldSubscribeProps<TFieldValues extends FieldValues, TFieldPathOrPaths> = DiscriminatedRenderProps<FieldSubscribeRenderFn<TFieldValues, TFieldPathOrPaths>> & {
167
+ type FormSubscribeToFieldValueProps<TFieldValues extends FieldValues, TFieldPathOrPaths> = DiscriminatedRenderProps<FormSubscribeToFieldValueRenderFn<TFieldValues, TFieldPathOrPaths>> & {
168
168
  control: Control<TFieldValues>;
169
169
  name?: TFieldPathOrPaths;
170
170
  };
171
- declare function FormFieldSubscribe<TFieldValues extends FieldValues, const TFieldPathOrPaths extends Array<FieldPath<TFieldValues>> | FieldPath<TFieldValues>>(props: FormFieldSubscribeProps<TFieldValues, TFieldPathOrPaths>): react.ReactNode;
172
- type FormStateSubscribeRenderFn<TFieldValues extends FieldValues> = (props: UseFormStateReturn<TFieldValues>) => react.ReactNode;
173
- type FormStateSubscribeProps<TFieldValues extends FieldValues> = DiscriminatedRenderProps<FormStateSubscribeRenderFn<TFieldValues>> & {
171
+ declare function FormSubscribeToFieldValue<TFieldValues extends FieldValues, const TFieldPathOrPaths extends Array<FieldPath<TFieldValues>> | FieldPath<TFieldValues>>(props: FormSubscribeToFieldValueProps<TFieldValues, TFieldPathOrPaths>): react.ReactNode;
172
+ type FormSubscribeToFormStateRenderFn<TFieldValues extends FieldValues> = (props: UseFormStateReturn<TFieldValues>) => react.ReactNode;
173
+ type FormSubscribeToFormStateProps<TFieldValues extends FieldValues> = DiscriminatedRenderProps<FormSubscribeToFormStateRenderFn<TFieldValues>> & {
174
174
  control?: Control<TFieldValues>;
175
175
  name?: Array<FieldPath<TFieldValues>> | FieldPath<TFieldValues>;
176
176
  };
177
- declare function FormStateSubscribe<TFieldValues extends FieldValues = FieldValues>(props: FormStateSubscribeProps<TFieldValues>): react.ReactNode;
177
+ declare function FormSubscribeToFormState<TFieldValues extends FieldValues = FieldValues>(props: FormSubscribeToFormStateProps<TFieldValues>): react.ReactNode;
178
178
 
179
179
  declare namespace formParts {
180
- export { FormControlledField as ControlledField, FormDescription as Description, FormErrorMessage as ErrorMessage, FormErrorMessagePrimitive as ErrorMessagePrimitive, FormField as Field, FormFieldContext as FieldContext, FormFieldController as FieldController, FormFieldSubscribe as FieldSubscribe, FormInput as Input, FormInputGroup as InputGroup, FormInputLeftItem as InputLeftItem, FormInputPrimitive as InputPrimitive, FormInputRightItem as InputRightItem, FormLabel as Label, FormRoot as Root, FormStateSubscribe as StateSubscribe, FormSubmit as Submit, FormTextAreaPrimitive as TextAreaPrimitive };
180
+ export { FormControlledField as ControlledField, FormDescription as Description, FormErrorMessage as ErrorMessage, FormErrorMessagePrimitive as ErrorMessagePrimitive, FormField as Field, FormFieldContext as FieldContext, FormFieldController as FieldController, FormInput as Input, FormInputGroup as InputGroup, FormInputLeftItem as InputLeftItem, FormInputPrimitive as InputPrimitive, FormInputRightItem as InputRightItem, FormLabel as Label, FormRoot as Root, FormSubmit as Submit, FormSubscribeToFieldValue as SubscribeToFieldValue, FormSubscribeToFormState as SubscribeToFormState, FormTextAreaPrimitive as TextAreaPrimitive };
181
181
  }
182
182
 
183
- export { type FieldValues, formParts as Form, FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormFieldSubscribe, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormStateSubscribe, FormSubmit, FormTextAreaPrimitive, useStrictFormFieldContext as useFormFieldContext };
183
+ export { type FieldValues, formParts as Form, FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextAreaPrimitive, useStrictFormFieldContext as useFormFieldContext };
@@ -1,11 +1,14 @@
1
- export { form_parts_exports as Form, FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormFieldSubscribe, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormStateSubscribe, FormSubmit, FormTextAreaPrimitive, useStrictFormFieldContext as useFormFieldContext, useFormContext as useFormRootContext } from '../../chunk-67OHQLRJ.js';
1
+ export { form_parts_exports as Form, FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextAreaPrimitive, useStrictFormFieldContext as useFormFieldContext, useFormContext as useFormRootContext } from '../../chunk-66T5K46O.js';
2
2
  import '../../chunk-OHG7GB7O.js';
3
- import '../../chunk-P6HRTILR.js';
3
+ import '../../chunk-CWUEUCR5.js';
4
+ import '../../chunk-NPIJ4XZP.js';
5
+ import '../../chunk-SVQ4WBSO.js';
6
+ import '../../chunk-CB2EZJYW.js';
7
+ import '../../chunk-DJIVSXN7.js';
8
+ import '../../chunk-OM4ZFFQS.js';
4
9
  import '../../chunk-DW3FXTFL.js';
5
10
  import '../../chunk-FPCKBOJN.js';
6
11
  import '../../chunk-ENDWJXPF.js';
7
- import '../../chunk-SVQ4WBSO.js';
8
- import '../../chunk-CB2EZJYW.js';
9
12
  import '../../chunk-PZ5AY32C.js';
10
13
  //# sourceMappingURL=index.js.map
11
14
  //# sourceMappingURL=index.js.map
@@ -2,7 +2,7 @@ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardRoot, C
2
2
  export { Carousel, CarouselButton, CarouselButtonsProps, CarouselCaption, CarouselContent, CarouselContentProps, CarouselControlProps, CarouselControls, CarouselIndicator, CarouselIndicatorGroup, CarouselIndicatorProps, CarouselItem, CarouselItemGroup, CarouselProviderProps, CarouselStore, CarouselStoreApi, CarouselWrapperProps, ImagesType, OtherCarouselProps } from './carousel/index.js';
3
3
  export { useDragScroll } from './drag-scroll/index.js';
4
4
  export { DropZone, InputProps, RootProps, UseDropZoneProps, useDropZone } from './drop-zone/index.js';
5
- export { FieldValues, Form, FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormFieldSubscribe, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormStateSubscribe, FormSubmit, FormTextAreaPrimitive, useFormFieldContext } from './form/index.js';
5
+ export { FieldValues, Form, FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextAreaPrimitive, useFormFieldContext } from './form/index.js';
6
6
  export { useFormContext as useFormRootContext } from 'react-hook-form';
7
7
  import 'react';
8
8
  import '@zayne-labs/toolkit-react/utils';
@@ -2,15 +2,18 @@ import '../chunk-PNYEIX7F.js';
2
2
  export { card_parts_exports as Card, CardContent, CardDescription, CardFooter, CardHeader, CardRoot, CardTitle } from '../chunk-PXYYL2LL.js';
3
3
  export { carousel_parts_exports as Carousel, CarouselButton, CarouselCaption, CarouselContent, CarouselControls, CarouselIndicator, CarouselIndicatorGroup, CarouselItem, CarouselItemGroup } from '../chunk-GVL6BLX5.js';
4
4
  export { useDragScroll } from '../chunk-E42DOTGX.js';
5
- export { DropZone, useDropZone } from '../chunk-2YCUMTC7.js';
6
- export { form_parts_exports as Form, FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormFieldSubscribe, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormStateSubscribe, FormSubmit, FormTextAreaPrimitive, useStrictFormFieldContext as useFormFieldContext, useFormContext as useFormRootContext } from '../chunk-67OHQLRJ.js';
5
+ export { DropZone, useDropZone } from '../chunk-RQZL6ZG6.js';
6
+ export { form_parts_exports as Form, FormControlledField, FormDescription, FormErrorMessage, FormErrorMessagePrimitive, FormField, FormFieldContext, FormFieldController, FormInput, FormInputGroup, FormInputLeftItem, FormInputPrimitive, FormInputRightItem, FormLabel, FormRoot, FormSubmit, FormSubscribeToFieldValue, FormSubscribeToFormState, FormTextAreaPrimitive, useStrictFormFieldContext as useFormFieldContext, useFormContext as useFormRootContext } from '../chunk-66T5K46O.js';
7
7
  import '../chunk-OHG7GB7O.js';
8
- import '../chunk-P6HRTILR.js';
8
+ import '../chunk-CWUEUCR5.js';
9
+ import '../chunk-NPIJ4XZP.js';
10
+ import '../chunk-SVQ4WBSO.js';
11
+ import '../chunk-CB2EZJYW.js';
12
+ import '../chunk-DJIVSXN7.js';
13
+ import '../chunk-OM4ZFFQS.js';
9
14
  import '../chunk-DW3FXTFL.js';
10
15
  import '../chunk-FPCKBOJN.js';
11
16
  import '../chunk-ENDWJXPF.js';
12
- import '../chunk-SVQ4WBSO.js';
13
- import '../chunk-CB2EZJYW.js';
14
17
  import '../chunk-PZ5AY32C.js';
15
18
  //# sourceMappingURL=index.js.map
16
19
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@zayne-labs/ui-react",
3
3
  "type": "module",
4
- "version": "0.5.2",
4
+ "version": "0.6.1",
5
5
  "description": "A composable UI/UI-utilities components library. ",
6
6
  "author": "Ryan Zayne",
7
7
  "license": "MIT",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/ui/drop-zone/use-drop-zone.ts","../../src/components/ui/drop-zone/drop-zone.tsx"],"names":[],"mappings":"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","file":"chunk-2YCUMTC7.js","sourcesContent":["\"use client\";\n\nimport { cnMerge } from \"@/lib/utils/cn\";\nimport { type FileValidationOptions, handleFileValidation } from \"@zayne-labs/toolkit-core\";\nimport { useCallbackRef, useToggle } from \"@zayne-labs/toolkit-react\";\nimport {\n\ttype DiscriminatedRenderProps,\n\ttype InferProps,\n\tcomposeRefs,\n\tmergeTwoProps,\n} from \"@zayne-labs/toolkit-react/utils\";\nimport { isFunction, isObject } from \"@zayne-labs/toolkit-type-helpers\";\nimport { useRef, useState } from \"react\";\n\ntype RenderProps = {\n\tacceptedFiles: File[];\n\tinputRef: React.RefObject<HTMLInputElement | null>;\n\tisDragging: boolean;\n};\n\nexport type RootProps = InferProps<\"div\"> & {\n\tclassNames?: { activeDrag?: string; base?: string };\n};\n\nexport type InputProps = InferProps<\"input\">;\n\ntype DropZoneRenderProps = DiscriminatedRenderProps<\n\tReact.ReactNode | ((props: RenderProps) => React.ReactNode)\n>;\n\nexport type UseDropZoneProps = DropZoneRenderProps & {\n\tallowedFileTypes?: string[];\n\n\tclassNames?: { activeDrag?: string; base?: string; input?: string };\n\n\texistingFiles?: File[];\n\n\textraInputProps?: InputProps;\n\n\textraRootProps?: RootProps;\n\n\tonUpload?: (details: {\n\t\tacceptedFiles: File[];\n\t\tevent: React.ChangeEvent<HTMLInputElement> | React.DragEvent<HTMLDivElement>;\n\t}) => void;\n\n\tonUploadError?: FileValidationOptions[\"onError\"];\n\n\tonUploadSuccess?: FileValidationOptions[\"onSuccess\"];\n\n\tvalidationSettings?: {\n\t\tdisallowDuplicates?: boolean;\n\t\tfileLimit?: number;\n\t\tmaxFileSize?: number;\n\t};\n\tvalidator?: (context: { existingFileArray: File[] | undefined; newFileList: FileList }) => File[];\n};\n\nexport const useDropZone = (props: UseDropZoneProps) => {\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\n\tconst {\n\t\tallowedFileTypes,\n\t\tchildren,\n\t\tclassNames,\n\t\texistingFiles,\n\t\textraInputProps,\n\t\textraRootProps,\n\t\tonUpload,\n\t\tonUploadError,\n\t\tonUploadSuccess,\n\t\trender,\n\t\tvalidationSettings,\n\t\tvalidator,\n\t\t// eslint-disable-next-line ts-eslint/no-unnecessary-condition -- Can be undefined\n\t} = props ?? {};\n\n\tconst [isDragging, toggleIsDragging] = useToggle(false);\n\n\tconst [acceptedFiles, setAcceptedFiles] = useState<File[]>([]);\n\n\tconst handleFileUpload = useCallbackRef(\n\t\t(event: React.ChangeEvent<HTMLInputElement> | React.DragEvent<HTMLDivElement>) => {\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (event.type === \"drop\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttoggleIsDragging(false);\n\t\t\t}\n\n\t\t\tconst fileList =\n\t\t\t\tevent.type === \"drop\"\n\t\t\t\t\t? (event as React.DragEvent).dataTransfer.files\n\t\t\t\t\t: (event as React.ChangeEvent<HTMLInputElement>).target.files;\n\n\t\t\tif (fileList === null) {\n\t\t\t\tconsole.warn(\"No file selected\");\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst resolvedValidationSettings = isObject(validationSettings)\n\t\t\t\t? { ...validationSettings, allowedFileTypes }\n\t\t\t\t: {};\n\n\t\t\tconst validFilesArray = handleFileValidation({\n\t\t\t\texistingFileArray: existingFiles,\n\t\t\t\tnewFileList: fileList,\n\t\t\t\tonError: onUploadError,\n\t\t\t\tonSuccess: onUploadSuccess,\n\t\t\t\tvalidationSettings: resolvedValidationSettings,\n\t\t\t\tvalidator,\n\t\t\t});\n\n\t\t\tif (validFilesArray.length === 0) return;\n\n\t\t\tsetAcceptedFiles(validFilesArray);\n\n\t\t\tonUpload?.({ acceptedFiles: validFilesArray, event });\n\t\t}\n\t);\n\n\tconst handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n\t\tevent.preventDefault();\n\t\ttoggleIsDragging(true);\n\t};\n\n\tconst handleDragLeave = (event: React.DragEvent<HTMLDivElement>) => {\n\t\tevent.preventDefault();\n\t\ttoggleIsDragging(false);\n\t};\n\n\tconst getRenderProps = () => ({ acceptedFiles, inputRef, isDragging }) satisfies RenderProps;\n\n\tconst computedChildren = children ?? render;\n\n\tconst getChildren = () =>\n\t\tisFunction(computedChildren) ? computedChildren(getRenderProps()) : computedChildren;\n\n\tconst getRootProps = (rootProps?: RootProps) => {\n\t\tconst mergedRootProps = mergeTwoProps(extraRootProps, rootProps);\n\n\t\treturn {\n\t\t\t...mergedRootProps,\n\t\t\tclassName: cnMerge(\n\t\t\t\t\"relative isolate flex flex-col\",\n\t\t\t\tmergedRootProps.className,\n\t\t\t\tclassNames?.base,\n\t\t\t\tisDragging && [\"opacity-60\", classNames?.activeDrag, rootProps?.classNames?.activeDrag]\n\t\t\t),\n\t\t\t\"data-active-drag\": isDragging,\n\t\t\t\"data-part\": \"root\",\n\t\t\t\"data-scope\": \"dropzone\",\n\t\t\tonDragEnter: handleDragOver,\n\t\t\tonDragLeave: handleDragLeave,\n\t\t\tonDragOver: handleDragOver,\n\t\t\tonDrop: handleFileUpload,\n\t\t};\n\t};\n\n\tconst getInputProps = (inputProps?: InputProps) => {\n\t\tconst mergedInputProps = mergeTwoProps(extraInputProps, inputProps);\n\n\t\treturn {\n\t\t\t...mergedInputProps,\n\t\t\taccept: allowedFileTypes ? allowedFileTypes.join(\", \") : mergedInputProps.accept,\n\t\t\tclassName: cnMerge(\n\t\t\t\t\"absolute inset-0 z-[100] cursor-pointer opacity-0\",\n\t\t\t\tclassNames?.input,\n\t\t\t\tmergedInputProps.className\n\t\t\t),\n\t\t\t\"data-active-drag\": isDragging,\n\t\t\t\"data-part\": \"input\",\n\t\t\t\"data-scope\": \"dropzone\",\n\t\t\tonChange: (event: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\t\tmergedInputProps.onChange?.(event);\n\t\t\t\thandleFileUpload(event);\n\t\t\t},\n\t\t\tref: composeRefs([inputRef, mergedInputProps.ref]),\n\t\t\ttype: \"file\",\n\t\t};\n\t};\n\n\treturn {\n\t\tacceptedFiles,\n\t\tcomputedChildren,\n\t\tgetChildren,\n\t\tgetInputProps,\n\t\tgetRenderProps,\n\t\tgetRootProps,\n\t\thandleDragLeave,\n\t\thandleDragOver,\n\t\thandleFileUpload,\n\t\tinputRef,\n\t\tisDragging,\n\t};\n};\n","import * as React from \"react\";\n\nimport { type UseDropZoneProps, useDropZone } from \"./use-drop-zone\";\n\nfunction DropZone(props: UseDropZoneProps) {\n\tconst api = useDropZone(props);\n\n\treturn (\n\t\t<div {...api.getRootProps()}>\n\t\t\t<input {...api.getInputProps()} />\n\n\t\t\t{api.getChildren()}\n\t\t</div>\n\t);\n}\n\nexport { DropZone };\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/icons/EyeIcon.tsx","../../src/components/ui/form/form-context.ts","../../src/components/ui/form/form.tsx","../../src/components/ui/form/form-parts.ts"],"names":["React","HookFormProvider","ReactFragment","useFormState"],"mappings":"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","file":"chunk-67OHQLRJ.js","sourcesContent":["import * as React from \"react\";\n\nexport const EyeIconInvisible = (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 EyeIconVisible = (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 { ContextError, createCustomContext } from \"@zayne-labs/toolkit-react\";\nimport type { DiscriminatedRenderProps } from \"@zayne-labs/toolkit-react/utils\";\nimport {\n\ttype Control,\n\ttype UseFormReturn,\n\ttype UseFormStateReturn,\n\tuseFormContext,\n\tuseFormState,\n} from \"react-hook-form\";\nimport type { FieldValues } from \"./form\";\n\nexport const useFormRootContext = <TStrict extends boolean = true>(options: { strict?: TStrict } = {}) => {\n\tconst { strict = true } = options;\n\tconst formContext = useFormContext();\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 as TStrict extends true\n\t\t? UseFormReturn<FieldValues>\n\t\t: UseFormReturn<FieldValues> | null;\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 } = useFormRootContext({ 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\treturn { errors, isDisabled: disabled, isInvalid: Boolean(options?.name && errors?.[options.name]) };\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","\"use client\";\n\nimport * as React from \"react\";\n\nimport { Slot } from \"@/components/common\";\nimport { getElementList } from \"@/components/common/for\";\nimport { EyeIconInvisible, EyeIconVisible } from \"@/components/icons\";\nimport { cnMerge } from \"@/lib/utils/cn\";\nimport { toArray } from \"@zayne-labs/toolkit-core\";\nimport { useToggle } from \"@zayne-labs/toolkit-react\";\nimport {\n\ttype DiscriminatedRenderProps,\n\ttype InferProps,\n\ttype PolymorphicProps,\n\tgetMultipleSlots,\n} from \"@zayne-labs/toolkit-react/utils\";\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\tLaxFormFieldProvider,\n\tStrictFormFieldProvider,\n\tuseFormRootContext,\n\tuseLaxFormFieldContext,\n\tuseLaxFormFieldState,\n\tuseStrictFormFieldContext,\n} from \"./form-context\";\n\nexport type FieldValues = Record<string, unknown>;\n\nconst dataAttr = (condition: unknown) => (condition ? \"\" : undefined) as unknown as boolean;\n\ntype FormRootProps<TFieldValues extends FieldValues> = React.ComponentPropsWithoutRef<\"form\"> & {\n\tchildren: React.ReactNode;\n\tmethods: UseFormReturn<TFieldValues>;\n};\n\nexport function FormRoot<TValues extends FieldValues>(props: FormRootProps<TValues>) {\n\tconst { children, className, methods, ...restOfProps } = props;\n\n\treturn (\n\t\t<HookFormProvider {...methods}>\n\t\t\t<form\n\t\t\t\tclassName={cnMerge(\"flex flex-col\", className)}\n\t\t\t\t{...restOfProps}\n\t\t\t\tdata-scope=\"form\"\n\t\t\t\tdata-part=\"root\"\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</form>\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/* 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\nexport function FormControlledField<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\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 } = useFormRootContext();\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 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-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-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\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(\"leftItem\");\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\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(\"rightItem\");\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?: boolean;\n};\n\ntype FormTextAreaPrimitiveProps<TFieldValues extends FieldValues = FieldValues> =\n\tReact.ComponentPropsWithRef<\"textarea\"> & {\n\t\tcontrol?: Control<TFieldValues>;\n\t\terrorClassName?: string;\n\t\tfieldState?: FieldState;\n\t\tname?: FieldPath<TFieldValues>;\n\t\ttype: \"textarea\";\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 {\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 = 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\t\"data-disabled\": dataAttr(isDisabled),\n\t\t\"data-invalid\": dataAttr(isInvalid),\n\t};\n\n\tconst { register } = useFormRootContext({ strict: false }) ?? {};\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\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`bg-transparent text-sm file:border-0 file:bg-transparent\n\t\t\t\t\tplaceholder:text-shadcn-muted-foreground focus-visible:outline-none\n\t\t\t\t\tdisabled: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{isPasswordVisible ? (\n\t\t\t\t\t\t<EyeIconInvisible className={cnMerge(\"size-full\", classNames?.eyeIcon)} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<EyeIconVisible className={cnMerge(\"size-full\", classNames?.eyeIcon)} />\n\t\t\t\t\t)}\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\tcontrol,\n\t\terrorClassName,\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 } = useFormRootContext({ strict: false }) ?? {};\n\n\treturn (\n\t\t<textarea\n\t\t\tdata-scope=\"form\"\n\t\t\tdata-part=\"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`w-full bg-transparent text-sm placeholder:text-shadcn-muted-foreground\n\t\t\t\tfocus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`,\n\t\t\t\tclassName,\n\t\t\t\tisInvalid && errorClassName\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\" | \"ref\";\ntype FormInputProps =\n\t| Omit<FormInputPrimitiveProps, PrimitivePropsToOmit>\n\t| Omit<FormTextAreaPrimitiveProps & { type: \"textarea\" }, PrimitivePropsToOmit>;\n\nexport function FormInput(props: FormInputProps & { rules?: RegisterOptions }) {\n\tconst { rules, type, ...restOfProps } = props;\n\n\tconst { name } = useStrictFormFieldContext();\n\tconst { register } = useFormRootContext();\n\n\tconst SelectedInput = type === \"textarea\" ? FormTextAreaPrimitive : FormInputPrimitive;\n\n\treturn (\n\t\t<SelectedInput\n\t\t\ttype={type as never}\n\t\t\tname={name}\n\t\t\t{...(Boolean(name) && register(name, rules))}\n\t\t\t{...(restOfProps as NonNullable<unknown>)}\n\t\t/>\n\t);\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\": string;\n\t\"data-scope\": string;\n\tid: string | undefined;\n\tonAnimationEnd?: React.ReactEventHandler<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\ntype 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\twithAnimationOnInvalid?: boolean;\n\t} & (\n\t\t\t| {\n\t\t\t\t\terrorField: FieldPath<TFieldValues>;\n\t\t\t\t\ttype?: \"regular\";\n\t\t\t }\n\t\t\t| {\n\t\t\t\t\terrorField: 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 = useFormRootContext({ strict: false });\n\n\tconst {\n\t\tchildren,\n\t\tclassName,\n\t\tclassNames,\n\t\tcontrol = rootContextValues?.control,\n\t\terrorField = fieldContextValues?.name,\n\t\trender,\n\t\ttype = \"regular\",\n\t\twithAnimationOnInvalid = true,\n\t} = props;\n\n\tconst { errors } = useLaxFormFieldState({ control, name: errorField });\n\n\tconst { formMessageId } = useLaxFormFieldContext() ?? {};\n\n\tconst wrapperRef = useRef<HTMLUListElement>(null);\n\n\tconst errorAnimationClass = classNames?.errorMessageAnimation ?? \"animate-shake\";\n\n\tuseEffect(() => {\n\t\tif (!withAnimationOnInvalid) return;\n\n\t\tconst errorMessageElements = wrapperRef.current?.children;\n\n\t\tif (!errorMessageElements) return;\n\n\t\tfor (const element of errorMessageElements) {\n\t\t\telement.classList.add(errorAnimationClass);\n\t\t}\n\t}, [errorAnimationClass, withAnimationOnInvalid]);\n\n\tuseEffect(() => {\n\t\tconst errorMessageElements = wrapperRef.current?.children;\n\n\t\tif (!errorMessageElements || !errors) return;\n\n\t\t// == Scroll to first error message\n\t\tif (Object.keys(errors).indexOf(errorField as string) === 0) {\n\t\t\terrorMessageElements[0]?.scrollIntoView({\n\t\t\t\tbehavior: \"smooth\",\n\t\t\t\tblock: \"center\",\n\t\t\t});\n\n\t\t\twindow.scrollBy({ behavior: \"smooth\", top: -100 });\n\t\t}\n\t}, [errorField, errors]);\n\n\tconst message = (\n\t\ttype === \"root\"\n\t\t\t? errors?.root?.[errorField as string]?.message\n\t\t\t: errors?.[errorField as string]?.message\n\t) as string | string[];\n\n\tif (!message) {\n\t\treturn null;\n\t}\n\n\tconst errorMessageArray = toArray(message);\n\n\tconst [ErrorMessageList] = getElementList();\n\n\tconst onAnimationEnd: React.AnimationEventHandler<HTMLElement> | undefined = withAnimationOnInvalid\n\t\t? (event) => event.currentTarget.classList.remove(errorAnimationClass)\n\t\t: undefined;\n\n\tconst getRenderProps = ({ index }: { index: number }) =>\n\t\t({\n\t\t\tclassName: cnMerge(errorAnimationClass, 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\tid: formMessageId,\n\t\t\tonAnimationEnd,\n\t\t}) satisfies ErrorMessageRenderProps;\n\n\tconst getRenderState = ({ errorMessage, index }: { errorMessage: string; index: number }) =>\n\t\t({\n\t\t\terrorMessage,\n\t\t\terrorMessageArray,\n\t\t\tindex,\n\t\t}) satisfies ErrorMessageRenderState;\n\n\tconst renderFn = typeof children === \"function\" ? children : render;\n\n\treturn (\n\t\t<ErrorMessageList\n\t\t\tref={wrapperRef}\n\t\t\teach={errorMessageArray}\n\t\t\tclassName={cnMerge(\"flex flex-col\", classNames?.container)}\n\t\t\trender={(errorMessage, index) => {\n\t\t\t\treturn renderFn({\n\t\t\t\t\tprops: getRenderProps({ index }),\n\t\t\t\t\tstate: getRenderState({ errorMessage, index }),\n\t\t\t\t});\n\t\t\t}}\n\t\t/>\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 } = useFormRootContext();\n\n\treturn (\n\t\t<FormErrorMessagePrimitive\n\t\t\tcontrol={control}\n\t\t\terrorField={errorField as NonNullable<typeof errorField>}\n\t\t\ttype={type as \"root\"}\n\t\t\trender={({ props: renderProps, state: { errorMessage } }) => (\n\t\t\t\t<p\n\t\t\t\t\t{...renderProps}\n\t\t\t\t\tkey={errorMessage}\n\t\t\t\t\tclassName={cnMerge(\"text-[13px]\", \"data-[index=0]:mt-1\", renderProps.className, className)}\n\t\t\t\t>\n\t\t\t\t\t{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 : Element;\n\n\treturn (\n\t\t<Component 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 FieldSubscribeRenderFn<TFieldValues extends FieldValues, TFieldPathOrPaths> = (props: {\n\tvalue: GetFieldValue<TFieldPathOrPaths, TFieldValues>;\n}) => React.ReactNode;\n\ntype FormFieldSubscribeProps<\n\tTFieldValues extends FieldValues,\n\tTFieldPathOrPaths,\n> = DiscriminatedRenderProps<FieldSubscribeRenderFn<TFieldValues, TFieldPathOrPaths>> & {\n\tcontrol: Control<TFieldValues>;\n\tname?: TFieldPathOrPaths;\n};\n\nexport function FormFieldSubscribe<\n\tTFieldValues extends FieldValues,\n\tconst TFieldPathOrPaths extends Array<FieldPath<TFieldValues>> | FieldPath<TFieldValues>,\n>(props: FormFieldSubscribeProps<TFieldValues, TFieldPathOrPaths>) {\n\tconst fieldContextValues = useLaxFormFieldContext();\n\n\tconst { children, name = fieldContextValues?.name, render } = props;\n\n\tconst { control } = useFormRootContext();\n\n\tconst formValue = useWatch({ control, name: name as string });\n\n\tconst fieldProps = { value: formValue };\n\n\tif (typeof children === \"function\") {\n\t\treturn children(fieldProps as never);\n\t}\n\n\treturn render(fieldProps as never);\n}\n\ntype FormStateSubscribeRenderFn<TFieldValues extends FieldValues> = (\n\tprops: UseFormStateReturn<TFieldValues>\n) => React.ReactNode;\n\ntype FormStateSubscribeProps<TFieldValues extends FieldValues> = DiscriminatedRenderProps<\n\tFormStateSubscribeRenderFn<TFieldValues>\n> & {\n\tcontrol?: Control<TFieldValues>;\n\tname?: Array<FieldPath<TFieldValues>> | FieldPath<TFieldValues>;\n};\n\nexport function FormStateSubscribe<TFieldValues extends FieldValues = FieldValues>(\n\tprops: FormStateSubscribeProps<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\tif (typeof children === \"function\") {\n\t\treturn children(formState as never);\n\t}\n\n\treturn render(formState as never);\n}\n","export {\n\tFormFieldController as FieldController,\n\tFormControlledField as ControlledField,\n\tFormDescription as Description,\n\tFormErrorMessage as ErrorMessage,\n\tFormErrorMessagePrimitive as ErrorMessagePrimitive,\n\tFormInput as Input,\n\tFormInputGroup as InputGroup,\n\tFormInputLeftItem as InputLeftItem,\n\tFormInputPrimitive as InputPrimitive,\n\tFormInputRightItem as InputRightItem,\n\tFormField as Field,\n\tFormFieldContext as FieldContext,\n\tFormLabel as Label,\n\tFormRoot as Root,\n\tFormSubmit as Submit,\n\tFormStateSubscribe as StateSubscribe,\n\tFormFieldSubscribe as FieldSubscribe,\n\tFormTextAreaPrimitive as TextAreaPrimitive,\n} from \"./form\";\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/components/common/error-boundary/error-boundary-context.ts","../../src/components/common/error-boundary/useErrorBoundary.ts","../../src/components/common/error-boundary/error-boundary.tsx","../../src/components/common/await/await.tsx"],"names":["React","ReactFragment"],"mappings":"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","file":"chunk-P6HRTILR.js","sourcesContent":["import { createCustomContext } from \"@zayne-labs/toolkit-react\";\n\nexport type ErrorBoundaryContextType = {\n\terror: unknown;\n\thasError: boolean;\n\tresetErrorBoundary: (...args: unknown[]) => void;\n};\n\nexport const [ErrorBoundaryContextProvider, useErrorBoundaryContext] =\n\tcreateCustomContext<ErrorBoundaryContextType>({\n\t\thookName: \"useErrorBoundaryContext\",\n\t\tname: \"ErrorBoundaryContext\",\n\t\tproviderName: \"ErrorBoundaryContextProvider\",\n\t});\n","import { useCallbackRef } from \"@zayne-labs/toolkit-react\";\nimport { useState } from \"react\";\nimport { useErrorBoundaryContext } from \"./error-boundary-context\";\n\ntype UseErrorBoundaryState<TError extends Error> =\n\t| {\n\t\t\terror: null;\n\t\t\thasError: false;\n\t }\n\t| {\n\t\t\terror: TError;\n\t\t\thasError: true;\n\t };\n\nexport const useErrorBoundary = <TError extends Error>() => {\n\tconst { resetErrorBoundary } = useErrorBoundaryContext();\n\n\tconst [state, setState] = useState<UseErrorBoundaryState<TError>>({\n\t\terror: null,\n\t\thasError: false,\n\t});\n\n\tif (state.hasError) {\n\t\tthrow state.error;\n\t}\n\n\tconst resetBoundary = useCallbackRef(() => {\n\t\tresetErrorBoundary();\n\n\t\tsetState({\n\t\t\terror: null,\n\t\t\thasError: false,\n\t\t});\n\t});\n\n\tconst showBoundary = useCallbackRef((error: TError) => {\n\t\tsetState({\n\t\t\terror,\n\t\t\thasError: true,\n\t\t});\n\t});\n\n\treturn { resetBoundary, showBoundary };\n};\n","import { isFunction } from \"@zayne-labs/toolkit-type-helpers\";\nimport * as React from \"react\";\nimport { Component } from \"react\";\nimport { ErrorBoundaryContextProvider } from \"./error-boundary-context\";\nimport type { ErrorBoundaryProps, FallbackProps } from \"./types\";\n\ntype ErrorBoundaryState =\n\t| {\n\t\t\terror: Error;\n\t\t\thasError: true;\n\t }\n\t| {\n\t\t\terror: null;\n\t\t\thasError: false;\n\t };\n\nconst initialState: ErrorBoundaryState = {\n\terror: null,\n\thasError: false,\n};\n\nconst hasArrayChanged = (a: unknown[] = [], b: unknown[] = []) => {\n\treturn a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n};\n\n/**\n * Copied from react-error-boundary package\n * @see https://github.com/bvaughn/react-error-boundary\n */\n\nclass ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n\tconstructor(props: ErrorBoundaryProps) {\n\t\tsuper(props);\n\n\t\tthis.state = initialState;\n\t}\n\n\tstatic getDerivedStateFromError(error: Error) {\n\t\treturn { error, hasError: true };\n\t}\n\n\toverride componentDidCatch(error: Error, info: React.ErrorInfo) {\n\t\tthis.props.onError?.(error, info);\n\t}\n\n\toverride componentDidUpdate(prevProps: ErrorBoundaryProps, prevState: ErrorBoundaryState) {\n\t\tconst { hasError } = this.state;\n\t\tconst { resetKeys } = this.props;\n\n\t\t// There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array, we'd end up resetting the error boundary immediately.\n\t\t// This would likely trigger a second error to be thrown.\n\t\t// So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n\t\tif (hasError && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n\t\t\tthis.props.onReset?.({ next: resetKeys, prev: prevProps.resetKeys, reason: \"keys\" });\n\n\t\t\tthis.setState(initialState);\n\t\t}\n\t}\n\n\toverride render() {\n\t\tconst { children, fallback } = this.props;\n\t\tconst { error, hasError } = this.state;\n\n\t\tlet childToRender = children;\n\n\t\tif (hasError) {\n\t\t\tswitch (true) {\n\t\t\t\tcase isFunction(fallback): {\n\t\t\t\t\tconst props: FallbackProps = { error, resetErrorBoundary: this.#resetErrorBoundary };\n\n\t\t\t\t\tchildToRender = fallback(props);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase fallback !== undefined: {\n\t\t\t\t\tchildToRender = fallback;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tdefault: {\n\t\t\t\t\tconsole.error(\"error-boundary requires a fallback prop\");\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn (\n\t\t\t<ErrorBoundaryContextProvider\n\t\t\t\tvalue={{ error, hasError, resetErrorBoundary: this.#resetErrorBoundary }}\n\t\t\t>\n\t\t\t\t{childToRender}\n\t\t\t</ErrorBoundaryContextProvider>\n\t\t);\n\t}\n\n\t#resetErrorBoundary = (...parameters: unknown[]) => {\n\t\tconst { error } = this.state;\n\n\t\tif (error !== null) {\n\t\t\tthis.props.onReset?.({ parameters, reason: \"imperative-api\" });\n\n\t\t\tthis.setState(initialState);\n\t\t}\n\t};\n}\n\nexport { ErrorBoundary };\n","import * as React from \"react\";\n\nimport type { DiscriminatedRenderProps } from \"@zayne-labs/toolkit-react/utils\";\nimport { Fragment as ReactFragment, Suspense, use } from \"react\";\nimport { ErrorBoundary, type ErrorBoundaryProps } from \"../error-boundary\";\n\ntype RenderPropFn<Tvalue> = (result: Tvalue) => React.ReactNode;\n\nexport type AwaitInnerProps<Tvalue> = DiscriminatedRenderProps<RenderPropFn<Tvalue>> & {\n\tpromise: Promise<Tvalue>;\n};\n\ntype AwaitProps<Tvalue> = AwaitInnerProps<Tvalue> & {\n\terrorFallback?: ErrorBoundaryProps[\"fallback\"];\n\tfallback?: React.ReactNode;\n};\n\nexport function Await<Tvalue>(props: AwaitProps<Tvalue>) {\n\tconst { errorFallback, fallback, ...restOfProps } = props;\n\n\tconst WithErrorBoundary = errorFallback ? ErrorBoundary : ReactFragment;\n\tconst WithSuspense = fallback ? Suspense : ReactFragment;\n\n\tconst errorBoundaryProps = { fallback: errorFallback };\n\tconst suspenseProps = { fallback };\n\n\treturn (\n\t\t<WithErrorBoundary {...errorBoundaryProps}>\n\t\t\t<WithSuspense {...suspenseProps}>\n\t\t\t\t<AwaitInner {...restOfProps} />\n\t\t\t</WithSuspense>\n\t\t</WithErrorBoundary>\n\t);\n}\n\nfunction AwaitInner<TValue>(props: AwaitInnerProps<TValue>) {\n\tconst { children, promise, render } = props;\n\n\tconst result = use(promise);\n\n\tif (typeof children === \"function\") {\n\t\treturn children(result);\n\t}\n\n\treturn render(result);\n}\n"]}