@k3-universe/react-kit 0.0.45 → 0.0.47

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 (40) hide show
  1. package/dist/index.js +109 -15
  2. package/dist/kit/builder/form/components/FormBuilderContext.d.ts +2 -2
  3. package/dist/kit/builder/form/components/FormBuilderContext.d.ts.map +1 -1
  4. package/dist/kit/builder/form/components/FormBuilderField.d.ts +3 -3
  5. package/dist/kit/builder/form/components/FormBuilderField.d.ts.map +1 -1
  6. package/dist/kit/builder/form/components/fields/DateField.d.ts +1 -1
  7. package/dist/kit/builder/form/components/fields/DateField.d.ts.map +1 -1
  8. package/dist/kit/builder/form/components/fields/DatePickerField.d.ts +1 -1
  9. package/dist/kit/builder/form/components/fields/DatePickerField.d.ts.map +1 -1
  10. package/dist/kit/builder/form/components/fields/DateRangePickerField.d.ts +1 -1
  11. package/dist/kit/builder/form/components/fields/DateRangePickerField.d.ts.map +1 -1
  12. package/dist/kit/builder/form/components/fields/DateTimePickerField.d.ts +1 -1
  13. package/dist/kit/builder/form/components/fields/DateTimePickerField.d.ts.map +1 -1
  14. package/dist/kit/builder/form/components/fields/DateTimeRangePickerField.d.ts +1 -1
  15. package/dist/kit/builder/form/components/fields/DateTimeRangePickerField.d.ts.map +1 -1
  16. package/dist/kit/builder/form/components/sectionNodes.d.ts +2 -2
  17. package/dist/kit/builder/form/components/sectionNodes.d.ts.map +1 -1
  18. package/dist/kit/builder/form/types.d.ts +4 -2
  19. package/dist/kit/builder/form/types.d.ts.map +1 -1
  20. package/dist/kit/builder/page/Page.d.ts +3 -1
  21. package/dist/kit/builder/page/Page.d.ts.map +1 -1
  22. package/dist/kit/builder/page/PageBackButton.d.ts +10 -0
  23. package/dist/kit/builder/page/PageBackButton.d.ts.map +1 -0
  24. package/dist/kit/themes/clean-slate.css +4 -0
  25. package/dist/kit/themes/default.css +4 -0
  26. package/dist/kit/themes/minimal-modern.css +4 -0
  27. package/dist/kit/themes/spotify.css +4 -0
  28. package/package.json +2 -2
  29. package/src/kit/builder/form/components/FormBuilder.tsx +2 -2
  30. package/src/kit/builder/form/components/FormBuilderContext.tsx +2 -2
  31. package/src/kit/builder/form/components/FormBuilderField.tsx +2 -2
  32. package/src/kit/builder/form/components/fields/DateField.tsx +19 -2
  33. package/src/kit/builder/form/components/fields/DatePickerField.tsx +18 -2
  34. package/src/kit/builder/form/components/fields/DateRangePickerField.tsx +18 -2
  35. package/src/kit/builder/form/components/fields/DateTimePickerField.tsx +18 -2
  36. package/src/kit/builder/form/components/fields/DateTimeRangePickerField.tsx +18 -2
  37. package/src/kit/builder/form/components/sectionNodes.tsx +3 -5
  38. package/src/kit/builder/form/types.ts +4 -2
  39. package/src/kit/builder/page/Page.tsx +11 -8
  40. package/src/kit/builder/page/PageBackButton.tsx +52 -0
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ import * as React from "react";
6
6
  import React__default, { createContext, useSyncExternalStore, useEffect, useMemo, useContext, forwardRef, createElement, Fragment as Fragment$1, memo as memo$1, useRef, useCallback, useLayoutEffect, useReducer, cloneElement, Component, useState, useImperativeHandle, use as use$7, isValidElement, PureComponent } from "react";
7
7
  import * as ReactDOM from "react-dom";
8
8
  import ReactDOM__default from "react-dom";
9
- import { useLocation, Link as Link$1 } from "@tanstack/react-router";
9
+ import { useRouter, useLocation, Link as Link$1 } from "@tanstack/react-router";
10
10
  const isBrowser = typeof window !== "undefined" && typeof window.localStorage !== "undefined";
11
11
  class SimpleEncryption {
12
12
  constructor(key) {
@@ -22528,10 +22528,22 @@ function RadioField({
22528
22528
  }
22529
22529
  function DateField({
22530
22530
  field,
22531
+ control,
22531
22532
  value,
22532
22533
  onChange,
22533
22534
  className
22534
22535
  }) {
22536
+ const formValues = useWatch({ control });
22537
+ const minDate = React__default.useMemo(() => {
22538
+ if (field.minDateFromField && formValues[field.minDateFromField])
22539
+ return formValues[field.minDateFromField];
22540
+ return field.minDate;
22541
+ }, [field.minDate, field.minDateFromField, formValues]);
22542
+ const maxDate = React__default.useMemo(() => {
22543
+ if (field.maxDateFromField && formValues[field.maxDateFromField])
22544
+ return formValues[field.maxDateFromField];
22545
+ return field.maxDate;
22546
+ }, [field.maxDate, field.maxDateFromField, formValues]);
22535
22547
  const parseDateValueForInput = (date2) => {
22536
22548
  if (date2 instanceof Date) {
22537
22549
  return date2.toISOString().split("T")[0];
@@ -22550,8 +22562,8 @@ function DateField({
22550
22562
  type: "date",
22551
22563
  value: parseDateValueForInput(value),
22552
22564
  defaultValue: parseDateValueForInput(value),
22553
- min: parseDateValueForInput(field.minDate),
22554
- max: parseDateValueForInput(field.maxDate),
22565
+ min: parseDateValueForInput(minDate),
22566
+ max: parseDateValueForInput(maxDate),
22555
22567
  onChange: (e2) => onChange(e2.target.value ? new Date(e2.target.value) : null)
22556
22568
  }
22557
22569
  );
@@ -26843,10 +26855,22 @@ function DatePicker({
26843
26855
  DatePicker.displayName = "DatePicker";
26844
26856
  function DatePickerField({
26845
26857
  field,
26858
+ control,
26846
26859
  value,
26847
26860
  onChange,
26848
26861
  className
26849
26862
  }) {
26863
+ const formValues = useWatch({ control });
26864
+ const minDate = React.useMemo(() => {
26865
+ if (field.minDateFromField && formValues[field.minDateFromField])
26866
+ return formValues[field.minDateFromField];
26867
+ return field.minDate;
26868
+ }, [field.minDate, field.minDateFromField, formValues]);
26869
+ const maxDate = React.useMemo(() => {
26870
+ if (field.maxDateFromField && formValues[field.maxDateFromField])
26871
+ return formValues[field.maxDateFromField];
26872
+ return field.maxDate;
26873
+ }, [field.maxDate, field.maxDateFromField, formValues]);
26850
26874
  const v = React.useMemo(() => {
26851
26875
  if (!value) return null;
26852
26876
  if (value instanceof Date) return value;
@@ -26859,8 +26883,8 @@ function DatePickerField({
26859
26883
  className,
26860
26884
  value: v,
26861
26885
  onChange: (d) => onChange(d),
26862
- minDate: field.minDate,
26863
- maxDate: field.maxDate,
26886
+ minDate,
26887
+ maxDate,
26864
26888
  disabledDates: field.disabledDates,
26865
26889
  format: field.dateFormat,
26866
26890
  placeholder: field.placeholder,
@@ -27276,10 +27300,22 @@ function coerceDate(input) {
27276
27300
  }
27277
27301
  function DateRangePickerField({
27278
27302
  field,
27303
+ control,
27279
27304
  value,
27280
27305
  onChange,
27281
27306
  className
27282
27307
  }) {
27308
+ const formValues = useWatch({ control });
27309
+ const minDate = React.useMemo(() => {
27310
+ if (field.minDateFromField && formValues[field.minDateFromField])
27311
+ return formValues[field.minDateFromField];
27312
+ return field.minDate;
27313
+ }, [field.minDate, field.minDateFromField, formValues]);
27314
+ const maxDate = React.useMemo(() => {
27315
+ if (field.maxDateFromField && formValues[field.maxDateFromField])
27316
+ return formValues[field.maxDateFromField];
27317
+ return field.maxDate;
27318
+ }, [field.maxDate, field.maxDateFromField, formValues]);
27283
27319
  const v = React.useMemo(() => {
27284
27320
  if (!value) return null;
27285
27321
  if (typeof value === "object" && value !== null) {
@@ -27304,8 +27340,8 @@ function DateRangePickerField({
27304
27340
  className,
27305
27341
  value: v,
27306
27342
  onChange: (r2) => onChange(r2),
27307
- minDate: field.minDate,
27308
- maxDate: field.maxDate,
27343
+ minDate,
27344
+ maxDate,
27309
27345
  disabledDates: field.disabledDates,
27310
27346
  format: field.dateFormat ? dateFormat : void 0,
27311
27347
  placeholder: field.placeholder,
@@ -28875,10 +28911,22 @@ function DateTimePicker({
28875
28911
  DateTimePicker.displayName = "DateTimePicker";
28876
28912
  function DateTimePickerField({
28877
28913
  field,
28914
+ control,
28878
28915
  value,
28879
28916
  onChange,
28880
28917
  className
28881
28918
  }) {
28919
+ const formValues = useWatch({ control });
28920
+ const minDate = React.useMemo(() => {
28921
+ if (field.minDateFromField && formValues[field.minDateFromField])
28922
+ return formValues[field.minDateFromField];
28923
+ return field.minDate;
28924
+ }, [field.minDate, field.minDateFromField, formValues]);
28925
+ const maxDate = React.useMemo(() => {
28926
+ if (field.maxDateFromField && formValues[field.maxDateFromField])
28927
+ return formValues[field.maxDateFromField];
28928
+ return field.maxDate;
28929
+ }, [field.maxDate, field.maxDateFromField, formValues]);
28882
28930
  const v = React.useMemo(() => {
28883
28931
  if (!value) return null;
28884
28932
  if (value instanceof Date) return value;
@@ -28892,8 +28940,8 @@ function DateTimePickerField({
28892
28940
  value: v,
28893
28941
  onChange: (d) => onChange(d),
28894
28942
  placeholder: field.placeholder,
28895
- minDate: field.minDate,
28896
- maxDate: field.maxDate,
28943
+ minDate,
28944
+ maxDate,
28897
28945
  disabledDates: field.disabledDates,
28898
28946
  timePrecision: field.timePrecision ?? "minute",
28899
28947
  hourCycle: field.hourCycle ?? 24,
@@ -29436,10 +29484,22 @@ function DateTimeRangePicker({
29436
29484
  DateTimeRangePicker.displayName = "DateTimeRangePicker";
29437
29485
  function DateTimeRangePickerField({
29438
29486
  field,
29487
+ control,
29439
29488
  value,
29440
29489
  onChange,
29441
29490
  className
29442
29491
  }) {
29492
+ const formValues = useWatch({ control });
29493
+ const minDate = React.useMemo(() => {
29494
+ if (field.minDateFromField && formValues[field.minDateFromField])
29495
+ return formValues[field.minDateFromField];
29496
+ return field.minDate;
29497
+ }, [field.minDate, field.minDateFromField, formValues]);
29498
+ const maxDate = React.useMemo(() => {
29499
+ if (field.maxDateFromField && formValues[field.maxDateFromField])
29500
+ return formValues[field.maxDateFromField];
29501
+ return field.maxDate;
29502
+ }, [field.maxDate, field.maxDateFromField, formValues]);
29443
29503
  const v = React.useMemo(() => {
29444
29504
  if (!value || typeof value !== "object")
29445
29505
  return null;
@@ -29461,8 +29521,8 @@ function DateTimeRangePickerField({
29461
29521
  value: v,
29462
29522
  onChange: (range) => onChange(range),
29463
29523
  placeholder: field.placeholder,
29464
- minDate: field.minDate,
29465
- maxDate: field.maxDate,
29524
+ minDate,
29525
+ maxDate,
29466
29526
  disabledDates: field.disabledDates,
29467
29527
  numberOfMonths: field.numberOfMonths ?? 2,
29468
29528
  popoverSide: field.popoverSide,
@@ -46451,6 +46511,33 @@ function DialogProvider({ children }) {
46451
46511
  ] });
46452
46512
  }
46453
46513
  const useDialog = useDialogController;
46514
+ function PageBackButton({
46515
+ onBack
46516
+ }) {
46517
+ const router = useRouter();
46518
+ const handleClick = useCallback(() => {
46519
+ if (onBack == null) {
46520
+ router.history.back();
46521
+ return;
46522
+ }
46523
+ onBack();
46524
+ }, [onBack, router]);
46525
+ return /* @__PURE__ */ jsx(Button$1, { variant: "ghost", className: "px-0! cursor-pointer", onClick: handleClick, children: /* @__PURE__ */ jsx(ChevronLeft, {}) });
46526
+ }
46527
+ function PageTitleWithBackButton({
46528
+ show = false,
46529
+ title = "",
46530
+ subtitle = "",
46531
+ onBack
46532
+ }) {
46533
+ return /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-1", children: [
46534
+ /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-x-2", children: [
46535
+ show && /* @__PURE__ */ jsx(PageBackButton, { onBack }),
46536
+ /* @__PURE__ */ jsx("h1", { className: "text-2xl font-semibold leading-none tracking-tight text-foreground", children: title })
46537
+ ] }),
46538
+ subtitle ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: subtitle }) : null
46539
+ ] });
46540
+ }
46454
46541
  const widthToClass = {
46455
46542
  full: "max-w-none",
46456
46543
  sm: "max-w-screen-sm",
@@ -46534,6 +46621,8 @@ function Page({
46534
46621
  title,
46535
46622
  subtitle,
46536
46623
  actions,
46624
+ backButton,
46625
+ onBackButtonClicked,
46537
46626
  containerWidth = "lg",
46538
46627
  className,
46539
46628
  headerClassName,
@@ -46559,10 +46648,15 @@ function Page({
46559
46648
  headerClassName
46560
46649
  ),
46561
46650
  children: [
46562
- /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-1", children: [
46563
- /* @__PURE__ */ jsx("h1", { className: "text-2xl font-semibold leading-none tracking-tight text-foreground", children: title }),
46564
- subtitle ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: subtitle }) : null
46565
- ] }),
46651
+ /* @__PURE__ */ jsx(
46652
+ PageTitleWithBackButton,
46653
+ {
46654
+ show: backButton,
46655
+ onBack: onBackButtonClicked,
46656
+ title,
46657
+ subtitle
46658
+ }
46659
+ ),
46566
46660
  actions && actions.length > 0 ? /* @__PURE__ */ jsx("div", { className: "flex shrink-0 flex-wrap items-center justify-end gap-2", children: actions.map(renderAction) }) : null
46567
46661
  ]
46568
46662
  }
@@ -9,8 +9,8 @@ export interface FormBuilderContextValue<TFieldValues extends FieldValues = Fiel
9
9
  getValues: UseFormGetValues<TFieldValues>;
10
10
  setValue: UseFormSetValue<TFieldValues>;
11
11
  onFieldChange?: (name: Path<TFieldValues> | string, value: unknown, allValues: TFieldValues) => void;
12
- handleFieldDependencies: (field: FormBuilderFieldConfig<TFieldValues, string | Path<TFieldValues>>) => DependencyState;
13
- handleFieldChange: (field: FormBuilderFieldConfig<TFieldValues, string | Path<TFieldValues>>, value: unknown, ...extras: unknown[]) => void;
12
+ handleFieldDependencies: (field: FormBuilderFieldConfig<TFieldValues>) => DependencyState;
13
+ handleFieldChange: (field: FormBuilderFieldConfig<TFieldValues>, value: unknown, ...extras: unknown[]) => void;
14
14
  }
15
15
  declare const FormBuilderContext: import('react').Context<FormBuilderContextValue<FieldValues> | null>;
16
16
  export declare function useFormBuilderContext<TFieldValues extends FieldValues = FieldValues>(): FormBuilderContextValue<TFieldValues>;
@@ -1 +1 @@
1
- {"version":3,"file":"FormBuilderContext.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/components/FormBuilderContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,IAAI,EACJ,gBAAgB,EAChB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,UAAU,eAAe;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB,CACtC,YAAY,SAAS,WAAW,GAAG,WAAW;IAE9C,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC1C,QAAQ,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IACxC,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,EACjC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,YAAY,KACpB,IAAI,CAAC;IACV,uBAAuB,EAAE,CACvB,KAAK,EAAE,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,KACrE,eAAe,CAAC;IACrB,iBAAiB,EAAE,CACjB,KAAK,EAAE,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,EACxE,KAAK,EAAE,OAAO,EACd,GAAG,MAAM,EAAE,OAAO,EAAE,KACjB,IAAI,CAAC;CACX;AAED,QAAA,MAAM,kBAAkB,sEAC0C,CAAC;AAEnE,wBAAgB,qBAAqB,CACnC,YAAY,SAAS,WAAW,GAAG,WAAW,2CAS/C;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"FormBuilderContext.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/components/FormBuilderContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,IAAI,EACJ,gBAAgB,EAChB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,UAAU,eAAe;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB,CACtC,YAAY,SAAS,WAAW,GAAG,WAAW;IAE9C,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC1C,QAAQ,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IACxC,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,EACjC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,YAAY,KACpB,IAAI,CAAC;IACV,uBAAuB,EAAE,CACvB,KAAK,EAAE,sBAAsB,CAAC,YAAY,CAAC,KACxC,eAAe,CAAC;IACrB,iBAAiB,EAAE,CACjB,KAAK,EAAE,sBAAsB,CAAC,YAAY,CAAC,EAC3C,KAAK,EAAE,OAAO,EACd,GAAG,MAAM,EAAE,OAAO,EAAE,KACjB,IAAI,CAAC;CACX;AAED,QAAA,MAAM,kBAAkB,sEAC0C,CAAC;AAEnE,wBAAgB,qBAAqB,CACnC,YAAY,SAAS,WAAW,GAAG,WAAW,2CAS/C;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1,12 +1,12 @@
1
- import { Control, FieldValues, Path } from 'react-hook-form';
1
+ import { Control, FieldValues } from 'react-hook-form';
2
2
  import { FormBuilderFieldConfig } from '../types';
3
- export interface FormBuilderFieldProps<TFieldValues extends FieldValues = FieldValues, TName extends string | Path<TFieldValues> = Path<TFieldValues>> {
3
+ export interface FormBuilderFieldProps<TFieldValues extends FieldValues = FieldValues, TName extends string = string> {
4
4
  field: FormBuilderFieldConfig<TFieldValues, TName>;
5
5
  control: Control<TFieldValues>;
6
6
  onChange?: (value: unknown, ...extras: unknown[]) => void;
7
7
  onFieldChange?: (name: import('react-hook-form').Path<TFieldValues> | string, value: unknown, allValues: TFieldValues) => void;
8
8
  parentPath?: string;
9
9
  }
10
- export declare function FormBuilderField<TFieldValues extends FieldValues = FieldValues, TName extends string | Path<TFieldValues> = Path<TFieldValues>>({ field, control, onChange, parentPath, }: FormBuilderFieldProps<TFieldValues, TName>): string | number | bigint | boolean | Iterable<import('react').ReactNode> | Promise<string | number | bigint | boolean | import('react').ReactPortal | import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | Iterable<import('react').ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
10
+ export declare function FormBuilderField<TFieldValues extends FieldValues = FieldValues, TName extends string = string>({ field, control, onChange, parentPath, }: FormBuilderFieldProps<TFieldValues, TName>): string | number | bigint | boolean | Iterable<import('react').ReactNode> | Promise<string | number | bigint | boolean | import('react').ReactPortal | import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | Iterable<import('react').ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
11
11
  export default FormBuilderField;
12
12
  //# sourceMappingURL=FormBuilderField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormBuilderField.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/components/FormBuilderField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAIlE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAwBvD,MAAM,WAAW,qBAAqB,CACpC,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;IAE9D,KAAK,EAAE,sBAAsB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACnD,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC1D,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,OAAO,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,EAC3D,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,YAAY,KACpB,IAAI,CAAC;IACV,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAC9B,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,EAC9D,EACA,KAAK,EACL,OAAO,EACP,QAAQ,EACR,UAAU,GACX,EAAE,qBAAqB,CAAC,YAAY,EAAE,KAAK,CAAC,2WAiZ5C;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"FormBuilderField.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/components/FormBuilderField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAQ,MAAM,iBAAiB,CAAC;AAIlE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAwBvD,MAAM,WAAW,qBAAqB,CACpC,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,MAAM,GAAG,MAAM;IAE7B,KAAK,EAAE,sBAAsB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACnD,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC1D,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,OAAO,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,EAC3D,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,YAAY,KACpB,IAAI,CAAC;IACV,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAC9B,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,MAAM,GAAG,MAAM,EAC7B,EACA,KAAK,EACL,OAAO,EACP,QAAQ,EACR,UAAU,GACX,EAAE,qBAAqB,CAAC,YAAY,EAAE,KAAK,CAAC,2WAiZ5C;AAED,eAAe,gBAAgB,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { FieldRenderProps } from './types';
2
- export declare function DateField({ field, value, onChange, className, }: FieldRenderProps): import("react/jsx-runtime").JSX.Element;
2
+ export declare function DateField({ field, control, value, onChange, className, }: FieldRenderProps): import("react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=DateField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateField.d.ts","sourceRoot":"","sources":["../../../../../../src/kit/builder/form/components/fields/DateField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CA4BlB"}
1
+ {"version":3,"file":"DateField.d.ts","sourceRoot":"","sources":["../../../../../../src/kit/builder/form/components/fields/DateField.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CA0ClB"}
@@ -1,3 +1,3 @@
1
1
  import { FieldRenderProps } from './types';
2
- export declare function DatePickerField({ field, value, onChange, className, }: FieldRenderProps): import("react/jsx-runtime").JSX.Element;
2
+ export declare function DatePickerField({ field, control, value, onChange, className, }: FieldRenderProps): import("react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=DatePickerField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerField.d.ts","sourceRoot":"","sources":["../../../../../../src/kit/builder/form/components/fields/DatePickerField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CAqBlB"}
1
+ {"version":3,"file":"DatePickerField.d.ts","sourceRoot":"","sources":["../../../../../../src/kit/builder/form/components/fields/DatePickerField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAIhD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CAmClB"}
@@ -1,3 +1,3 @@
1
1
  import { FieldRenderProps } from './types';
2
- export declare function DateRangePickerField({ field, value, onChange, className, }: FieldRenderProps): import("react/jsx-runtime").JSX.Element;
2
+ export declare function DateRangePickerField({ field, control, value, onChange, className, }: FieldRenderProps): import("react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=DateRangePickerField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangePickerField.d.ts","sourceRoot":"","sources":["../../../../../../src/kit/builder/form/components/fields/DateRangePickerField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAWhD,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CAqClB"}
1
+ {"version":3,"file":"DateRangePickerField.d.ts","sourceRoot":"","sources":["../../../../../../src/kit/builder/form/components/fields/DateRangePickerField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAYhD,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CAmDlB"}
@@ -1,4 +1,4 @@
1
1
  import { FieldRenderProps } from './types';
2
- export declare function DateTimePickerField({ field, value, onChange, className, }: FieldRenderProps): import("react/jsx-runtime").JSX.Element;
2
+ export declare function DateTimePickerField({ field, control, value, onChange, className, }: FieldRenderProps): import("react/jsx-runtime").JSX.Element;
3
3
  export default DateTimePickerField;
4
4
  //# sourceMappingURL=DateTimePickerField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimePickerField.d.ts","sourceRoot":"","sources":["../../../../../../src/kit/builder/form/components/fields/DateTimePickerField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CA0BlB;AAED,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"DateTimePickerField.d.ts","sourceRoot":"","sources":["../../../../../../src/kit/builder/form/components/fields/DateTimePickerField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAIhD,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CAwClB;AAED,eAAe,mBAAmB,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { FieldRenderProps } from './types';
2
- export declare function DateTimeRangePickerField({ field, value, onChange, className, }: FieldRenderProps): import("react/jsx-runtime").JSX.Element;
2
+ export declare function DateTimeRangePickerField({ field, control, value, onChange, className, }: FieldRenderProps): import("react/jsx-runtime").JSX.Element;
3
3
  export default DateTimeRangePickerField;
4
4
  //# sourceMappingURL=DateTimeRangePickerField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimeRangePickerField.d.ts","sourceRoot":"","sources":["../../../../../../src/kit/builder/form/components/fields/DateTimeRangePickerField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,wBAAgB,wBAAwB,CAAC,EACvC,KAAK,EACL,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CAoClB;AAED,eAAe,wBAAwB,CAAC"}
1
+ {"version":3,"file":"DateTimeRangePickerField.d.ts","sourceRoot":"","sources":["../../../../../../src/kit/builder/form/components/fields/DateTimeRangePickerField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAIhD,wBAAgB,wBAAwB,CAAC,EACvC,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,gBAAgB,2CAkDlB;AAED,eAAe,wBAAwB,CAAC"}
@@ -4,12 +4,12 @@ import { FormBuilderFieldConfig, FormBuilderSectionConfig } from '../types';
4
4
  interface BuildSectionNodesOptions<TFieldValues extends FieldValues> {
5
5
  sections: Array<FormBuilderSectionConfig<TFieldValues>>;
6
6
  control: Control<TFieldValues>;
7
- handleFieldDependencies: (field: FormBuilderFieldConfig<TFieldValues, string | Path<TFieldValues>>) => {
7
+ handleFieldDependencies: (field: FormBuilderFieldConfig<TFieldValues>) => {
8
8
  disabled?: boolean;
9
9
  hidden?: boolean;
10
10
  required?: boolean;
11
11
  } | Record<string, never>;
12
- handleFieldChange: (field: FormBuilderFieldConfig<TFieldValues, string | Path<TFieldValues>>, value: unknown, ...extras: unknown[]) => void;
12
+ handleFieldChange: (field: FormBuilderFieldConfig<TFieldValues>, value: unknown, ...extras: unknown[]) => void;
13
13
  onFieldChange?: (name: Path<TFieldValues> | string, value: unknown, allValues: TFieldValues) => void;
14
14
  getValues: UseFormGetValues<TFieldValues>;
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sectionNodes.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/components/sectionNodes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,IAAI,EACJ,OAAO,EACP,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EACV,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAGlB,UAAU,wBAAwB,CAAC,YAAY,SAAS,WAAW;IACjE,QAAQ,EAAE,KAAK,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC;IACxD,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,uBAAuB,EAAE,CACvB,KAAK,EAAE,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,KACrE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1F,iBAAiB,EAAE,CACjB,KAAK,EAAE,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,EACxE,KAAK,EAAE,OAAO,EACd,GAAG,MAAM,EAAE,OAAO,EAAE,KACjB,IAAI,CAAC;IACV,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,EACjC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,YAAY,KACpB,IAAI,CAAC;IACV,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;CAC3C;AAED,wBAAgB,iBAAiB,CAAC,YAAY,SAAS,WAAW,EAChE,OAAO,EAAE,wBAAwB,CAAC,YAAY,CAAC,GAC9C,WAAW,EAAE,CA+Gf"}
1
+ {"version":3,"file":"sectionNodes.d.ts","sourceRoot":"","sources":["../../../../../src/kit/builder/form/components/sectionNodes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,IAAI,EACJ,OAAO,EACP,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EACV,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAGlB,UAAU,wBAAwB,CAAC,YAAY,SAAS,WAAW;IACjE,QAAQ,EAAE,KAAK,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC;IACxD,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,uBAAuB,EAAE,CACvB,KAAK,EAAE,sBAAsB,CAAC,YAAY,CAAC,KACxC;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1F,iBAAiB,EAAE,CACjB,KAAK,EAAE,sBAAsB,CAAC,YAAY,CAAC,EAC3C,KAAK,EAAE,OAAO,EACd,GAAG,MAAM,EAAE,OAAO,EAAE,KACjB,IAAI,CAAC;IACV,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,EACjC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,YAAY,KACpB,IAAI,CAAC;IACV,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;CAC3C;AAED,wBAAgB,iBAAiB,CAAC,YAAY,SAAS,WAAW,EAChE,OAAO,EAAE,wBAAwB,CAAC,YAAY,CAAC,GAC9C,WAAW,EAAE,CA6Gf"}
@@ -12,7 +12,7 @@ export interface Dependency<TFieldValues extends FieldValues> {
12
12
  action: 'show' | 'hide' | 'enable' | 'disable' | 'required' | 'optional' | 'setValue';
13
13
  value?: unknown;
14
14
  }
15
- export interface FormBuilderFieldConfig<TFieldValues extends FieldValues = FieldValues, TName extends Path<TFieldValues> | string = Path<TFieldValues>> {
15
+ export interface FormBuilderFieldConfig<TFieldValues extends FieldValues = FieldValues, TName extends string = string> {
16
16
  id?: string;
17
17
  name: TName;
18
18
  label: string;
@@ -104,7 +104,9 @@ export interface FormBuilderFieldConfig<TFieldValues extends FieldValues = Field
104
104
  labelPlacement?: 'stacked' | 'inline' | 'hidden';
105
105
  wrapperClassName?: string;
106
106
  minDate?: Date;
107
+ minDateFromField?: string;
107
108
  maxDate?: Date;
109
+ maxDateFromField?: string;
108
110
  disabledDates?: Array<Date | {
109
111
  from: Date;
110
112
  to: Date;
@@ -142,7 +144,7 @@ export interface FormBuilderSectionConfig<TFieldValues extends FieldValues = Fie
142
144
  id?: string;
143
145
  title?: string;
144
146
  description?: string;
145
- fields?: Array<FormBuilderFieldConfig<TFieldValues>>;
147
+ fields?: Array<FormBuilderFieldConfig<TFieldValues, string>>;
146
148
  variant?: 'card' | 'separator' | 'plain';
147
149
  className?: string;
148
150
  collapsible?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/kit/builder/form/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,WAAW,EACX,IAAI,EACJ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EACnB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,OAAO,GACP,UAAU,GACV,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,cAAc,GACd,UAAU,GACV,QAAQ,GACR,OAAO,GACP,MAAM,GACN,aAAa,GACb,YAAY,GACZ,OAAO,GACP,aAAa,GACb,MAAM,GACN,YAAY,GACZ,WAAW,GACX,iBAAiB,GACjB,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,cAAc,CAAC;AAEnB,MAAM,WAAW,UAAU,CAAC,YAAY,SAAS,WAAW;IAC1D,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1B,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IACvC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IACtF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB,CACrC,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;IAE9D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;IACvE,gBAAgB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACvC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,OAAO,KACd,KAAK,CAAC,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sBAAsB,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,EAAE,GAAG,IAAI,CAAC;IAC1E,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAC3B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACnC,UAAU,CAAC,EACP,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAClB;QACE,OAAO,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7C,GAAG,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QACzC,GAAG,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QACzC,SAAS,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,SAAS,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,QAAQ,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9C,QAAQ,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC;IACN,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEpC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,MAAM,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,YAAY,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,CACT,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,eAAe,CAAC,YAAY,CAAC,EACvC,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC,KACtC,IAAI,CAAC;IACV,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC1C,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QACrB,KAAK,EAAE,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAC5C,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/B,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;QACnC,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KACzB,KAAK,KAAK,CAAC,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE;QACZ,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACjD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,aAAa,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IACvD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,CACb,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,KAC9B,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAClC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACzC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC/C,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE;QAC5B,KAAK,EAAE,sBAAsB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACpD,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/B,KAAK,EAAE,YAAY,CAAC;QACpB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;KAC9D,KAAK,KAAK,CAAC,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB,CACvC,YAAY,SAAS,WAAW,GAAG,WAAW;IAE9C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,SAAS,CAAC;QACjB,QAAQ,EAAE,KAAK,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC;QACxD,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB,CAC/B,YAAY,SAAS,WAAW,GAAG,WAAW;IAG9C,IAAI,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACnC,QAAQ,EAAE,KAAK,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC;IAGxD,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACjC,aAAa,CAAC,EACV,WAAW,CAAC,YAAY,CAAC,GACzB,aAAa,CAAC,YAAY,CAAC,GAC3B,IAAI,CAAC;IAGT,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,EACjC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,YAAY,KACpB,IAAI,CAAC;IAGV,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAGD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/kit/builder/form/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,WAAW,EACX,IAAI,EACJ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EACnB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,OAAO,GACP,UAAU,GACV,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,cAAc,GACd,UAAU,GACV,QAAQ,GACR,OAAO,GACP,MAAM,GACN,aAAa,GACb,YAAY,GACZ,OAAO,GACP,aAAa,GACb,MAAM,GACN,YAAY,GACZ,WAAW,GACX,iBAAiB,GACjB,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,cAAc,CAAC;AAEnB,MAAM,WAAW,UAAU,CAAC,YAAY,SAAS,WAAW;IAC1D,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1B,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IACvC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IACtF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB,CACrC,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,MAAM,GAAG,MAAM;IAE7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;IACvE,gBAAgB,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACvC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,OAAO,KACd,KAAK,CAAC,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sBAAsB,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,EAAE,GAAG,IAAI,CAAC;IAC1E,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAC3B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACnC,UAAU,CAAC,EACP,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAClB;QACE,OAAO,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7C,GAAG,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QACzC,GAAG,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QACzC,SAAS,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,SAAS,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,QAAQ,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9C,QAAQ,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/C,CAAC;IACN,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEpC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,MAAM,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,YAAY,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,CACT,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,eAAe,CAAC,YAAY,CAAC,EACvC,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC,KACtC,IAAI,CAAC;IACV,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC1C,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QACrB,KAAK,EAAE,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAC5C,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/B,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;QACnC,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KACzB,KAAK,KAAK,CAAC,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE;QACZ,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACjD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IACvD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC7C,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,CACb,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,KAC9B,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAClC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACzC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAC/C,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE;QAC5B,KAAK,EAAE,sBAAsB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACpD,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/B,KAAK,EAAE,YAAY,CAAC;QACpB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;KAC9D,KAAK,KAAK,CAAC,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB,CACvC,YAAY,SAAS,WAAW,GAAG,WAAW;IAE9C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,SAAS,CAAC;QACjB,QAAQ,EAAE,KAAK,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC;QACxD,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB,CAC/B,YAAY,SAAS,WAAW,GAAG,WAAW;IAG9C,IAAI,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACnC,QAAQ,EAAE,KAAK,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC;IAGxD,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACjC,aAAa,CAAC,EACV,WAAW,CAAC,YAAY,CAAC,GACzB,aAAa,CAAC,YAAY,CAAC,GAC3B,IAAI,CAAC;IAGT,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,MAAM,EACjC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,YAAY,KACpB,IAAI,CAAC;IAGV,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAGD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
@@ -35,6 +35,8 @@ export type PageProps = {
35
35
  title: React.ReactNode;
36
36
  subtitle?: React.ReactNode;
37
37
  actions?: PageAction[];
38
+ backButton?: boolean;
39
+ onBackButtonClicked?: () => void;
38
40
  containerWidth?: PageContainerWidth;
39
41
  className?: string;
40
42
  headerClassName?: string;
@@ -43,6 +45,6 @@ export type PageProps = {
43
45
  footerRight?: React.ReactNode;
44
46
  children?: React.ReactNode;
45
47
  };
46
- export declare function Page({ title, subtitle, actions, containerWidth, className, headerClassName, contentClassName, footerLeft, footerRight, children, }: PageProps): import("react/jsx-runtime").JSX.Element;
48
+ export declare function Page({ title, subtitle, actions, backButton, onBackButtonClicked, containerWidth, className, headerClassName, contentClassName, footerLeft, footerRight, children, }: PageProps): import("react/jsx-runtime").JSX.Element;
47
49
  export default Page;
48
50
  //# sourceMappingURL=Page.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../../../src/kit/builder/page/Page.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAkB,MAAM,2BAA2B,CAAC;AAUnE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;IACnD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,EAAE,CAAC,sBAAsB,GAAG;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;CACzE,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAqFF,wBAAgB,IAAI,CAAC,EACnB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,cAAqB,EACrB,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,QAAQ,GACT,EAAE,SAAS,2CAgDX;AAED,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../../../src/kit/builder/page/Page.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAkB,MAAM,2BAA2B,CAAC;AAWnE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;IACnD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,EAAE,CAAC,sBAAsB,GAAG;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAC;CACzE,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAqFF,wBAAgB,IAAI,CAAC,EACnB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,UAAU,EACV,mBAAmB,EACnB,cAAqB,EACrB,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,QAAQ,GACT,EAAE,SAAS,2CA8CX;AAED,eAAe,IAAI,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare function PageBackButton({ onBack }: {
2
+ onBack?: () => void;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ export declare function PageTitleWithBackButton({ show, title, subtitle, onBack, }: {
5
+ show?: boolean;
6
+ title?: React.ReactNode;
7
+ subtitle?: React.ReactNode;
8
+ onBack?: () => void;
9
+ }): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=PageBackButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageBackButton.d.ts","sourceRoot":"","sources":["../../../../src/kit/builder/page/PageBackButton.tsx"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,CAAC,EAC3B,MAAM,EACT,EAAE;IACC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,2CAgBA;AAED,wBAAgB,uBAAuB,CAAC,EACpC,IAAY,EACZ,KAAU,EACV,QAAa,EACb,MAAM,GACT,EAAE;IACC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,2CAcA"}
@@ -2260,6 +2260,10 @@
2260
2260
  padding-inline: calc(var(--spacing) * 0);
2261
2261
  }
2262
2262
 
2263
+ .px-0\! {
2264
+ padding-inline: calc(var(--spacing) * 0) !important;
2265
+ }
2266
+
2263
2267
  .px-1 {
2264
2268
  padding-inline: calc(var(--spacing) * 1);
2265
2269
  }
@@ -2263,6 +2263,10 @@
2263
2263
  padding-inline: calc(var(--spacing) * 0);
2264
2264
  }
2265
2265
 
2266
+ .px-0\! {
2267
+ padding-inline: calc(var(--spacing) * 0) !important;
2268
+ }
2269
+
2266
2270
  .px-1 {
2267
2271
  padding-inline: calc(var(--spacing) * 1);
2268
2272
  }
@@ -2260,6 +2260,10 @@
2260
2260
  padding-inline: calc(var(--spacing) * 0);
2261
2261
  }
2262
2262
 
2263
+ .px-0\! {
2264
+ padding-inline: calc(var(--spacing) * 0) !important;
2265
+ }
2266
+
2263
2267
  .px-1 {
2264
2268
  padding-inline: calc(var(--spacing) * 1);
2265
2269
  }
@@ -2260,6 +2260,10 @@
2260
2260
  padding-inline: calc(var(--spacing) * 0);
2261
2261
  }
2262
2262
 
2263
+ .px-0\! {
2264
+ padding-inline: calc(var(--spacing) * 0) !important;
2265
+ }
2266
+
2263
2267
  .px-1 {
2264
2268
  padding-inline: calc(var(--spacing) * 1);
2265
2269
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@k3-universe/react-kit",
3
- "version": "0.0.45",
3
+ "version": "0.0.47",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -12,7 +12,7 @@
12
12
  "./package.json": "./package.json",
13
13
  "./kit/themes/*": "./dist/kit/themes/*",
14
14
  ".": {
15
- "development": "./src/index.ts",
15
+ "development": "./dist/index.js",
16
16
  "types": "./dist/index.d.ts",
17
17
  "import": "./dist/index.js",
18
18
  "default": "./dist/index.js"
@@ -91,7 +91,7 @@ export function FormBuilder<TFieldValues extends FieldValues = FieldValues>({
91
91
 
92
92
  const handleFieldDependencies = useCallback(
93
93
  (
94
- field: FormBuilderFieldConfig<TFieldValues, string | Path<TFieldValues>>,
94
+ field: FormBuilderFieldConfig<TFieldValues>,
95
95
  ) => {
96
96
  if (!hasDependencies || !field.dependencies) return {};
97
97
 
@@ -167,7 +167,7 @@ export function FormBuilder<TFieldValues extends FieldValues = FieldValues>({
167
167
  // Handle field change with custom onChange
168
168
  const handleFieldChange = useCallback(
169
169
  (
170
- field: FormBuilderFieldConfig<TFieldValues, string | Path<TFieldValues>>,
170
+ field: FormBuilderFieldConfig<TFieldValues>,
171
171
  value: unknown,
172
172
  ...extras: unknown[]
173
173
  ) => {
@@ -25,10 +25,10 @@ export interface FormBuilderContextValue<
25
25
  allValues: TFieldValues,
26
26
  ) => void;
27
27
  handleFieldDependencies: (
28
- field: FormBuilderFieldConfig<TFieldValues, string | Path<TFieldValues>>,
28
+ field: FormBuilderFieldConfig<TFieldValues>,
29
29
  ) => DependencyState;
30
30
  handleFieldChange: (
31
- field: FormBuilderFieldConfig<TFieldValues, string | Path<TFieldValues>>,
31
+ field: FormBuilderFieldConfig<TFieldValues>,
32
32
  value: unknown,
33
33
  ...extras: unknown[]
34
34
  ) => void;
@@ -29,7 +29,7 @@ import {
29
29
 
30
30
  export interface FormBuilderFieldProps<
31
31
  TFieldValues extends FieldValues = FieldValues,
32
- TName extends string | Path<TFieldValues> = Path<TFieldValues>,
32
+ TName extends string = string,
33
33
  > {
34
34
  field: FormBuilderFieldConfig<TFieldValues, TName>;
35
35
  control: Control<TFieldValues>;
@@ -44,7 +44,7 @@ export interface FormBuilderFieldProps<
44
44
 
45
45
  export function FormBuilderField<
46
46
  TFieldValues extends FieldValues = FieldValues,
47
- TName extends string | Path<TFieldValues> = Path<TFieldValues>,
47
+ TName extends string = string,
48
48
  >({
49
49
  field,
50
50
  control,
@@ -1,12 +1,29 @@
1
+ import React from 'react';
1
2
  import { Input } from '../../../../../shadcn/ui/input';
2
3
  import type { FieldRenderProps } from './types';
4
+ import { useWatch } from 'react-hook-form';
3
5
 
4
6
  export function DateField({
5
7
  field,
8
+ control,
6
9
  value,
7
10
  onChange,
8
11
  className,
9
12
  }: FieldRenderProps) {
13
+ const formValues = useWatch({ control });
14
+
15
+ const minDate = React.useMemo(() => {
16
+ if (field.minDateFromField && formValues[field.minDateFromField])
17
+ return formValues[field.minDateFromField];
18
+ return field.minDate;
19
+ }, [field.minDate, field.minDateFromField, formValues]);
20
+
21
+ const maxDate = React.useMemo(() => {
22
+ if (field.maxDateFromField && formValues[field.maxDateFromField])
23
+ return formValues[field.maxDateFromField];
24
+ return field.maxDate;
25
+ }, [field.maxDate, field.maxDateFromField, formValues]);
26
+
10
27
  const parseDateValueForInput = (date: unknown) => {
11
28
  if (date instanceof Date) {
12
29
  return date.toISOString().split('T')[0];
@@ -27,8 +44,8 @@ export function DateField({
27
44
  type="date"
28
45
  value={parseDateValueForInput(value)}
29
46
  defaultValue={parseDateValueForInput(value)}
30
- min={parseDateValueForInput(field.minDate)}
31
- max={parseDateValueForInput(field.maxDate)}
47
+ min={parseDateValueForInput(minDate)}
48
+ max={parseDateValueForInput(maxDate)}
32
49
  onChange={(e) =>
33
50
  onChange(e.target.value ? new Date(e.target.value) : null)
34
51
  }
@@ -1,13 +1,29 @@
1
1
  import * as React from 'react';
2
2
  import type { FieldRenderProps } from './types';
3
3
  import { DatePicker } from '../../../../components/datepicker/DatePicker';
4
+ import { useWatch } from 'react-hook-form';
4
5
 
5
6
  export function DatePickerField({
6
7
  field,
8
+ control,
7
9
  value,
8
10
  onChange,
9
11
  className,
10
12
  }: FieldRenderProps) {
13
+ const formValues = useWatch({ control });
14
+
15
+ const minDate = React.useMemo(() => {
16
+ if (field.minDateFromField && formValues[field.minDateFromField])
17
+ return formValues[field.minDateFromField];
18
+ return field.minDate;
19
+ }, [field.minDate, field.minDateFromField, formValues]);
20
+
21
+ const maxDate = React.useMemo(() => {
22
+ if (field.maxDateFromField && formValues[field.maxDateFromField])
23
+ return formValues[field.maxDateFromField];
24
+ return field.maxDate;
25
+ }, [field.maxDate, field.maxDateFromField, formValues]);
26
+
11
27
  const v = React.useMemo(() => {
12
28
  if (!value) return null;
13
29
  if (value instanceof Date) return value;
@@ -20,8 +36,8 @@ export function DatePickerField({
20
36
  className={className}
21
37
  value={v}
22
38
  onChange={(d: Date | null) => onChange(d)}
23
- minDate={field.minDate}
24
- maxDate={field.maxDate}
39
+ minDate={minDate}
40
+ maxDate={maxDate}
25
41
  disabledDates={field.disabledDates}
26
42
  format={field.dateFormat}
27
43
  placeholder={field.placeholder}
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  import type { FieldRenderProps } from './types';
3
3
  import { DateRangePicker } from '../../../../components/datepicker/DateRangePicker';
4
4
  import type { DateRange } from 'react-day-picker';
5
+ import { useWatch } from 'react-hook-form';
5
6
 
6
7
  function coerceDate(input: unknown): Date | undefined {
7
8
  if (!input) return undefined;
@@ -12,10 +13,25 @@ function coerceDate(input: unknown): Date | undefined {
12
13
 
13
14
  export function DateRangePickerField({
14
15
  field,
16
+ control,
15
17
  value,
16
18
  onChange,
17
19
  className,
18
20
  }: FieldRenderProps) {
21
+ const formValues = useWatch({ control });
22
+
23
+ const minDate = React.useMemo(() => {
24
+ if (field.minDateFromField && formValues[field.minDateFromField])
25
+ return formValues[field.minDateFromField];
26
+ return field.minDate;
27
+ }, [field.minDate, field.minDateFromField, formValues]);
28
+
29
+ const maxDate = React.useMemo(() => {
30
+ if (field.maxDateFromField && formValues[field.maxDateFromField])
31
+ return formValues[field.maxDateFromField];
32
+ return field.maxDate;
33
+ }, [field.maxDate, field.maxDateFromField, formValues]);
34
+
19
35
  const v = React.useMemo<DateRange | null>(() => {
20
36
  if (!value) return null;
21
37
  if (typeof value === 'object' && value !== null) {
@@ -40,8 +56,8 @@ export function DateRangePickerField({
40
56
  className={className}
41
57
  value={v}
42
58
  onChange={(r) => onChange(r)}
43
- minDate={field.minDate}
44
- maxDate={field.maxDate}
59
+ minDate={minDate}
60
+ maxDate={maxDate}
45
61
  disabledDates={field.disabledDates}
46
62
  format={field.dateFormat ? dateFormat : undefined}
47
63
  placeholder={field.placeholder}
@@ -1,13 +1,29 @@
1
1
  import * as React from 'react';
2
2
  import type { FieldRenderProps } from './types';
3
3
  import { DateTimePicker } from '../../../../components/datetimepicker/DateTimePicker';
4
+ import { useWatch } from 'react-hook-form';
4
5
 
5
6
  export function DateTimePickerField({
6
7
  field,
8
+ control,
7
9
  value,
8
10
  onChange,
9
11
  className,
10
12
  }: FieldRenderProps) {
13
+ const formValues = useWatch({ control });
14
+
15
+ const minDate = React.useMemo(() => {
16
+ if (field.minDateFromField && formValues[field.minDateFromField])
17
+ return formValues[field.minDateFromField];
18
+ return field.minDate;
19
+ }, [field.minDate, field.minDateFromField, formValues]);
20
+
21
+ const maxDate = React.useMemo(() => {
22
+ if (field.maxDateFromField && formValues[field.maxDateFromField])
23
+ return formValues[field.maxDateFromField];
24
+ return field.maxDate;
25
+ }, [field.maxDate, field.maxDateFromField, formValues]);
26
+
11
27
  const v = React.useMemo(() => {
12
28
  if (!value) return null;
13
29
  if (value instanceof Date) return value;
@@ -21,8 +37,8 @@ export function DateTimePickerField({
21
37
  value={v}
22
38
  onChange={(d: Date | null) => onChange(d)}
23
39
  placeholder={field.placeholder}
24
- minDate={field.minDate}
25
- maxDate={field.maxDate}
40
+ minDate={minDate}
41
+ maxDate={maxDate}
26
42
  disabledDates={field.disabledDates}
27
43
  timePrecision={field.timePrecision ?? 'minute'}
28
44
  hourCycle={field.hourCycle ?? 24}
@@ -1,13 +1,29 @@
1
1
  import * as React from 'react';
2
2
  import type { FieldRenderProps } from './types';
3
3
  import { DateTimeRangePicker } from '../../../../components/datetimepicker/DateTimeRangePicker';
4
+ import { useWatch } from 'react-hook-form';
4
5
 
5
6
  export function DateTimeRangePickerField({
6
7
  field,
8
+ control,
7
9
  value,
8
10
  onChange,
9
11
  className,
10
12
  }: FieldRenderProps) {
13
+ const formValues = useWatch({ control });
14
+
15
+ const minDate = React.useMemo(() => {
16
+ if (field.minDateFromField && formValues[field.minDateFromField])
17
+ return formValues[field.minDateFromField];
18
+ return field.minDate;
19
+ }, [field.minDate, field.minDateFromField, formValues]);
20
+
21
+ const maxDate = React.useMemo(() => {
22
+ if (field.maxDateFromField && formValues[field.maxDateFromField])
23
+ return formValues[field.maxDateFromField];
24
+ return field.maxDate;
25
+ }, [field.maxDate, field.maxDateFromField, formValues]);
26
+
11
27
  const v = React.useMemo(() => {
12
28
  if (!value || typeof value !== 'object')
13
29
  return null as { from?: Date | null; to?: Date | null } | null;
@@ -29,8 +45,8 @@ export function DateTimeRangePickerField({
29
45
  value={v}
30
46
  onChange={(range) => onChange(range)}
31
47
  placeholder={field.placeholder}
32
- minDate={field.minDate}
33
- maxDate={field.maxDate}
48
+ minDate={minDate}
49
+ maxDate={maxDate}
34
50
  disabledDates={field.disabledDates}
35
51
  numberOfMonths={field.numberOfMonths ?? 2}
36
52
  popoverSide={field.popoverSide}
@@ -16,10 +16,10 @@ interface BuildSectionNodesOptions<TFieldValues extends FieldValues> {
16
16
  sections: Array<FormBuilderSectionConfig<TFieldValues>>;
17
17
  control: Control<TFieldValues>;
18
18
  handleFieldDependencies: (
19
- field: FormBuilderFieldConfig<TFieldValues, string | Path<TFieldValues>>,
19
+ field: FormBuilderFieldConfig<TFieldValues>,
20
20
  ) => { disabled?: boolean; hidden?: boolean, required?: boolean } | Record<string, never>;
21
21
  handleFieldChange: (
22
- field: FormBuilderFieldConfig<TFieldValues, string | Path<TFieldValues>>,
22
+ field: FormBuilderFieldConfig<TFieldValues>,
23
23
  value: unknown,
24
24
  ...extras: unknown[]
25
25
  ) => void;
@@ -44,9 +44,7 @@ export function buildSectionNodes<TFieldValues extends FieldValues>(
44
44
  } = options;
45
45
 
46
46
  const buildLeavesFromFields = (
47
- fields?: Array<
48
- FormBuilderFieldConfig<TFieldValues, string | Path<TFieldValues>>
49
- >,
47
+ fields?: Array<FormBuilderFieldConfig<TFieldValues>>,
50
48
  ): SectionNode['children'] =>
51
49
  (fields ?? [])
52
50
  .map((field) => {
@@ -61,7 +61,7 @@ export interface Dependency<TFieldValues extends FieldValues> {
61
61
 
62
62
  export interface FormBuilderFieldConfig<
63
63
  TFieldValues extends FieldValues = FieldValues,
64
- TName extends Path<TFieldValues> | string = Path<TFieldValues>,
64
+ TName extends string = string,
65
65
  > {
66
66
  id?: string;
67
67
  name: TName;
@@ -142,7 +142,9 @@ export interface FormBuilderFieldConfig<
142
142
  labelPlacement?: 'stacked' | 'inline' | 'hidden';
143
143
  wrapperClassName?: string;
144
144
  minDate?: Date;
145
+ minDateFromField?: string;
145
146
  maxDate?: Date;
147
+ maxDateFromField?: string;
146
148
  disabledDates?: Array<Date | { from: Date; to: Date }>;
147
149
  dateFormat?: (date: Date) => string;
148
150
  numberOfMonths?: number;
@@ -183,7 +185,7 @@ export interface FormBuilderSectionConfig<
183
185
  id?: string;
184
186
  title?: string;
185
187
  description?: string;
186
- fields?: Array<FormBuilderFieldConfig<TFieldValues>>;
188
+ fields?: Array<FormBuilderFieldConfig<TFieldValues, string>>;
187
189
  variant?: 'card' | 'separator' | 'plain';
188
190
  className?: string;
189
191
  collapsible?: boolean;
@@ -8,6 +8,7 @@ import {
8
8
  DropdownMenuSeparator,
9
9
  } from '../../../shadcn/ui/dropdown-menu';
10
10
  import { cn } from '../../../shadcn/lib/utils';
11
+ import { PageTitleWithBackButton } from './PageBackButton';
11
12
 
12
13
  export type PageContainerWidth = 'full' | 'sm' | 'md' | 'lg' | 'xl';
13
14
 
@@ -46,6 +47,8 @@ export type PageProps = {
46
47
  title: React.ReactNode;
47
48
  subtitle?: React.ReactNode;
48
49
  actions?: PageAction[];
50
+ backButton?: boolean;
51
+ onBackButtonClicked?: () => void;
49
52
  containerWidth?: PageContainerWidth;
50
53
  className?: string;
51
54
  headerClassName?: string;
@@ -142,6 +145,8 @@ export function Page({
142
145
  title,
143
146
  subtitle,
144
147
  actions,
148
+ backButton,
149
+ onBackButtonClicked,
145
150
  containerWidth = 'lg',
146
151
  className,
147
152
  headerClassName,
@@ -165,14 +170,12 @@ export function Page({
165
170
  headerClassName,
166
171
  )}
167
172
  >
168
- <div className="flex min-w-0 flex-col gap-1">
169
- <h1 className="text-2xl font-semibold leading-none tracking-tight text-foreground">
170
- {title}
171
- </h1>
172
- {subtitle ? (
173
- <p className="text-sm text-muted-foreground">{subtitle}</p>
174
- ) : null}
175
- </div>
173
+ <PageTitleWithBackButton
174
+ show={backButton}
175
+ onBack={onBackButtonClicked}
176
+ title={title}
177
+ subtitle={subtitle}
178
+ />
176
179
  {actions && actions.length > 0 ? (
177
180
  <div className="flex shrink-0 flex-wrap items-center justify-end gap-2">
178
181
  {actions.map(renderAction)}
@@ -0,0 +1,52 @@
1
+ import { Button } from "../../../shadcn/ui/button";
2
+ import { useRouter } from "@tanstack/react-router";
3
+ import { ChevronLeftIcon } from "lucide-react";
4
+ import { useCallback } from "react";
5
+
6
+ export function PageBackButton({
7
+ onBack
8
+ }: {
9
+ onBack?: () => void,
10
+ }) {
11
+ const router = useRouter();
12
+
13
+ const handleClick = useCallback(() => {
14
+ if (onBack == null) {
15
+ router.history.back();
16
+ return;
17
+ }
18
+ onBack();
19
+ }, [onBack, router]);
20
+
21
+ return (
22
+ <Button variant="ghost" className="px-0! cursor-pointer" onClick={handleClick}>
23
+ <ChevronLeftIcon/>
24
+ </Button>
25
+ )
26
+ }
27
+
28
+ export function PageTitleWithBackButton({
29
+ show = false,
30
+ title = "",
31
+ subtitle = "",
32
+ onBack,
33
+ }: {
34
+ show?: boolean,
35
+ title?: React.ReactNode,
36
+ subtitle?: React.ReactNode,
37
+ onBack?: () => void,
38
+ }) {
39
+ return (
40
+ <div className="flex min-w-0 flex-col gap-1">
41
+ <div className="inline-flex items-center gap-x-2">
42
+ {show && (<PageBackButton onBack={onBack} />)}
43
+ <h1 className="text-2xl font-semibold leading-none tracking-tight text-foreground">
44
+ {title}
45
+ </h1>
46
+ </div>
47
+ {subtitle ? (
48
+ <p className="text-sm text-muted-foreground">{subtitle}</p>
49
+ ) : null}
50
+ </div>
51
+ )
52
+ }