@datum-cloud/datum-ui 0.5.0 → 0.6.0-alpha.a49f238

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 (90) hide show
  1. package/README.md +75 -40
  2. package/dist/adapter-context-BFqfq4Io.mjs +25 -0
  3. package/dist/components/features/form/adapter-context.d.ts +17 -0
  4. package/dist/components/features/form/adapter-context.d.ts.map +1 -0
  5. package/dist/components/features/form/adapter-types.d.ts +120 -0
  6. package/dist/components/features/form/adapter-types.d.ts.map +1 -0
  7. package/dist/components/features/form/adapters/conform/conform-adapter.d.ts +9 -0
  8. package/dist/components/features/form/adapters/conform/conform-adapter.d.ts.map +1 -0
  9. package/dist/components/features/form/adapters/conform/conform-provider.d.ts +22 -0
  10. package/dist/components/features/form/adapters/conform/conform-provider.d.ts.map +1 -0
  11. package/dist/components/features/form/adapters/conform/index.d.ts +3 -0
  12. package/dist/components/features/form/adapters/conform/index.d.ts.map +1 -0
  13. package/dist/components/features/form/adapters/rhf/index.d.ts +3 -0
  14. package/dist/components/features/form/adapters/rhf/index.d.ts.map +1 -0
  15. package/dist/components/features/form/adapters/rhf/rhf-adapter.d.ts +10 -0
  16. package/dist/components/features/form/adapters/rhf/rhf-adapter.d.ts.map +1 -0
  17. package/dist/components/features/form/adapters/rhf/rhf-provider.d.ts +22 -0
  18. package/dist/components/features/form/adapters/rhf/rhf-provider.d.ts.map +1 -0
  19. package/dist/components/features/form/components/form-autocomplete.d.ts.map +1 -1
  20. package/dist/components/features/form/components/form-checkbox.d.ts.map +1 -1
  21. package/dist/components/features/form/components/form-copy-box.d.ts.map +1 -1
  22. package/dist/components/features/form/components/form-custom.d.ts.map +1 -1
  23. package/dist/components/features/form/components/form-field-array.d.ts +5 -17
  24. package/dist/components/features/form/components/form-field-array.d.ts.map +1 -1
  25. package/dist/components/features/form/components/form-field.d.ts +7 -21
  26. package/dist/components/features/form/components/form-field.d.ts.map +1 -1
  27. package/dist/components/features/form/components/form-input-group.d.ts +4 -4
  28. package/dist/components/features/form/components/form-input-group.d.ts.map +1 -1
  29. package/dist/components/features/form/components/form-input.d.ts.map +1 -1
  30. package/dist/components/features/form/components/form-radio-group.d.ts.map +1 -1
  31. package/dist/components/features/form/components/form-root.d.ts +5 -25
  32. package/dist/components/features/form/components/form-root.d.ts.map +1 -1
  33. package/dist/components/features/form/components/form-select.d.ts.map +1 -1
  34. package/dist/components/features/form/components/form-switch.d.ts.map +1 -1
  35. package/dist/components/features/form/components/form-textarea.d.ts.map +1 -1
  36. package/dist/components/features/form/components/index.d.ts +0 -1
  37. package/dist/components/features/form/components/index.d.ts.map +1 -1
  38. package/dist/components/features/form/components/stepper/form-stepper.d.ts.map +1 -1
  39. package/dist/components/features/form/context/form-context.d.ts +2 -2
  40. package/dist/components/features/form/context/form-context.d.ts.map +1 -1
  41. package/dist/components/features/form/hooks/index.d.ts +1 -1
  42. package/dist/components/features/form/hooks/index.d.ts.map +1 -1
  43. package/dist/components/features/form/hooks/use-field.d.ts +12 -18
  44. package/dist/components/features/form/hooks/use-field.d.ts.map +1 -1
  45. package/dist/components/features/form/hooks/use-form-state.d.ts +36 -0
  46. package/dist/components/features/form/hooks/use-form-state.d.ts.map +1 -0
  47. package/dist/components/features/form/hooks/use-watch.d.ts +9 -20
  48. package/dist/components/features/form/hooks/use-watch.d.ts.map +1 -1
  49. package/dist/components/features/form/index.d.ts +63 -44
  50. package/dist/components/features/form/index.d.ts.map +1 -1
  51. package/dist/components/features/form/stepper/index.d.ts +17 -0
  52. package/dist/components/features/form/stepper/index.d.ts.map +1 -0
  53. package/dist/components/features/form/types/index.d.ts +68 -32
  54. package/dist/components/features/form/types/index.d.ts.map +1 -1
  55. package/dist/components/features/form/utils/get-field-constraints.d.ts +11 -0
  56. package/dist/components/features/form/utils/get-field-constraints.d.ts.map +1 -0
  57. package/dist/components/features/form/utils/get-schema-defaults.d.ts +24 -0
  58. package/dist/components/features/form/utils/get-schema-defaults.d.ts.map +1 -0
  59. package/dist/date-picker/index.mjs +1 -1
  60. package/dist/form/adapters/conform/index.mjs +320 -0
  61. package/dist/form/adapters/rhf/index.mjs +275 -0
  62. package/dist/form/index.mjs +3 -2
  63. package/dist/form/stepper/index.mjs +542 -0
  64. package/dist/form-C6AOB2f4.mjs +1397 -0
  65. package/dist/form-context-Ccxm-wqL.mjs +17 -0
  66. package/dist/get-field-constraints-D4xnXJEg.mjs +48 -0
  67. package/dist/grid/index.mjs +1 -1
  68. package/dist/hooks/index.mjs +2 -2
  69. package/dist/index.mjs +14 -13
  70. package/dist/input-number/index.mjs +1 -1
  71. package/dist/map/index.mjs +1 -1
  72. package/dist/{map-ClxB41Hg.mjs → map-BqpteT_8.mjs} +1 -1
  73. package/dist/more-actions/index.mjs +1 -1
  74. package/dist/page-title/index.mjs +1 -1
  75. package/dist/stepper/index.mjs +1 -320
  76. package/dist/stepper-C92Ib8Iy.mjs +321 -0
  77. package/dist/tag-input/index.mjs +1 -1
  78. package/dist/task-queue/index.mjs +1 -1
  79. package/package.json +27 -2
  80. package/dist/form-Co3fM4B7.mjs +0 -2114
  81. /package/dist/{col-q-J99UHe.mjs → col-CiSpQPUT.mjs} +0 -0
  82. /package/dist/{hooks-Cb7YlxN4.mjs → hooks-DNjmSsJT.mjs} +0 -0
  83. /package/dist/{input-number-mDB-5M5C.mjs → input-number-BTQdHqVZ.mjs} +0 -0
  84. /package/dist/{map-leaflet-imports-CaMm_rdF.mjs → map-leaflet-imports-CT4SpoDi.mjs} +0 -0
  85. /package/dist/{more-actions-CGagbIDT.mjs → more-actions-CucrYUnA.mjs} +0 -0
  86. /package/dist/{page-title-R7QbfbWp.mjs → page-title-CmsIi_A3.mjs} +0 -0
  87. /package/dist/{tag-input-BVSwNcRd.mjs → tag-input-B91C2wdr.mjs} +0 -0
  88. /package/dist/{task-queue-dropdown-DyM5R8KF.mjs → task-queue-dropdown-OOFuJcHb.mjs} +0 -0
  89. /package/dist/{to-api-format-BnbRFYQI.mjs → to-api-format-P0gmlqe8.mjs} +0 -0
  90. /package/dist/{use-copy-to-clipboard-BGdTmkFV.mjs → use-copy-to-clipboard-C2IEmhDn.mjs} +0 -0
@@ -0,0 +1,321 @@
1
+ import { t as cn } from "./cn-D2KYQ917.mjs";
2
+ import { t as Button } from "./button-D3RrsMfQ.mjs";
3
+ import { cva } from "class-variance-authority";
4
+ import * as React$1 from "react";
5
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
+ import { Slot } from "@radix-ui/react-slot";
7
+ import * as Stepperize from "@stepperize/react";
8
+ //#region src/components/features/stepper/stepper.tsx
9
+ const StepperContext = React$1.createContext(null);
10
+ function useStepperProvider() {
11
+ const context = React$1.use(StepperContext);
12
+ if (!context) throw new Error("useStepper must be used within a StepperProvider.");
13
+ return context;
14
+ }
15
+ const classForNavigationList = cva("flex gap-2", { variants: { variant: {
16
+ horizontal: "flex-row items-center justify-between",
17
+ vertical: "flex-col",
18
+ circle: "flex-row items-center justify-between"
19
+ } } });
20
+ const classForSeparator = cva([
21
+ "bg-muted",
22
+ "data-[state=completed]:bg-primary data-[disabled]:opacity-50",
23
+ "transition-all duration-300 ease-in-out"
24
+ ], { variants: {
25
+ orientation: {
26
+ horizontal: "h-0.5 flex-1",
27
+ vertical: "h-full w-0.5"
28
+ },
29
+ labelOrientation: { vertical: "absolute left-[calc(50%+30px)] right-[calc(-50%+20px)] top-5 block shrink-0" }
30
+ } });
31
+ function defineStepper(...steps) {
32
+ const { Scoped, useStepper, steps: stepList, Stepper: StepperizePrimitives } = Stepperize.defineStepper(...steps);
33
+ const StepperContainer = ({ children, className, ...props }) => {
34
+ const methods = useStepper();
35
+ return /* @__PURE__ */ jsx("div", {
36
+ "date-component": "stepper",
37
+ className: cn("w-full", className),
38
+ ...props,
39
+ children: typeof children === "function" ? children({ methods }) : children
40
+ });
41
+ };
42
+ return {
43
+ steps: stepList,
44
+ useStepper,
45
+ Stepper: {
46
+ ...StepperizePrimitives,
47
+ Provider: ({ variant = "horizontal", labelOrientation = "horizontal", tracking = false, children, className, ...props }) => {
48
+ return /* @__PURE__ */ jsx(StepperContext, {
49
+ value: {
50
+ variant,
51
+ labelOrientation,
52
+ tracking
53
+ },
54
+ children: /* @__PURE__ */ jsx(Scoped, {
55
+ initialStep: props.initialStep,
56
+ initialMetadata: props.initialMetadata,
57
+ children: /* @__PURE__ */ jsx(StepperContainer, {
58
+ className,
59
+ ...props,
60
+ children
61
+ })
62
+ })
63
+ });
64
+ },
65
+ Navigation: ({ children, "aria-label": ariaLabel = "Stepper Navigation", ...props }) => {
66
+ const { variant } = useStepperProvider();
67
+ return /* @__PURE__ */ jsx("nav", {
68
+ "date-component": "stepper-navigation",
69
+ "aria-label": ariaLabel,
70
+ role: "tablist",
71
+ ...props,
72
+ children: /* @__PURE__ */ jsx("ol", {
73
+ "date-component": "stepper-navigation-list",
74
+ className: classForNavigationList({ variant }),
75
+ children
76
+ })
77
+ });
78
+ },
79
+ Step: ({ children, className, icon, ...props }) => {
80
+ const { variant, labelOrientation } = useStepperProvider();
81
+ const stepper = useStepper();
82
+ const steps = stepList;
83
+ const stepIndex = stepper.lookup.getIndex(props.of);
84
+ const step = steps[stepIndex];
85
+ const currentIndex = stepper.lookup.getIndex(stepper.state.current.data.id);
86
+ const isLast = stepper.lookup.getLast().id === props.of;
87
+ const isActive = stepper.state.current.data.id === props.of;
88
+ const dataState = getStepState(currentIndex, stepIndex);
89
+ const childMap = useStepChildren(children);
90
+ const title = childMap.get("title");
91
+ const description = childMap.get("description");
92
+ const panel = childMap.get("panel");
93
+ if (variant === "circle") return /* @__PURE__ */ jsxs("li", {
94
+ "date-component": "stepper-step",
95
+ className: cn("flex shrink-0 items-center gap-4 rounded-md transition-colors", className),
96
+ children: [/* @__PURE__ */ jsx(CircleStepIndicator, {
97
+ currentStep: stepIndex + 1,
98
+ totalSteps: steps.length
99
+ }), /* @__PURE__ */ jsxs("div", {
100
+ "date-component": "stepper-step-content",
101
+ className: "flex flex-col items-start gap-1",
102
+ children: [title, description]
103
+ })]
104
+ });
105
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [
106
+ /* @__PURE__ */ jsxs("li", {
107
+ "date-component": "stepper-step",
108
+ className: cn([
109
+ "group peer relative flex items-center gap-2",
110
+ "data-[variant=vertical]:flex-row",
111
+ "data-[label-orientation=vertical]:w-full",
112
+ "data-[label-orientation=vertical]:flex-col",
113
+ "data-[label-orientation=vertical]:justify-center"
114
+ ]),
115
+ "data-variant": variant,
116
+ "data-label-orientation": labelOrientation,
117
+ "data-state": dataState,
118
+ "data-disabled": props.disabled,
119
+ children: [
120
+ /* @__PURE__ */ jsx(Button, {
121
+ id: `step-${step.id}`,
122
+ "date-component": "stepper-step-indicator",
123
+ type: "button",
124
+ role: "tab",
125
+ tabIndex: dataState !== "inactive" ? 0 : -1,
126
+ className: cn("rounded-full", className),
127
+ variant: dataState !== "inactive" ? "default" : "secondary",
128
+ size: "icon",
129
+ "aria-controls": `step-panel-${props.of}`,
130
+ "aria-current": isActive ? "step" : void 0,
131
+ "aria-posinset": stepIndex + 1,
132
+ "aria-setsize": steps.length,
133
+ "aria-selected": isActive,
134
+ onKeyDown: (e) => onStepKeyDown(e, stepper.lookup.getNext(props.of), stepper.lookup.getPrev(props.of)),
135
+ ...props,
136
+ children: icon ?? stepIndex + 1
137
+ }),
138
+ variant === "horizontal" && labelOrientation === "vertical" && /* @__PURE__ */ jsx(StepperSeparator, {
139
+ orientation: "horizontal",
140
+ labelOrientation,
141
+ isLast,
142
+ state: dataState,
143
+ disabled: props.disabled
144
+ }),
145
+ /* @__PURE__ */ jsxs("div", {
146
+ "date-component": "stepper-step-content",
147
+ className: "flex flex-col items-start",
148
+ children: [title, description]
149
+ })
150
+ ]
151
+ }),
152
+ variant === "horizontal" && labelOrientation === "horizontal" && /* @__PURE__ */ jsx(StepperSeparator, {
153
+ orientation: "horizontal",
154
+ isLast,
155
+ state: dataState,
156
+ disabled: props.disabled
157
+ }),
158
+ variant === "vertical" && /* @__PURE__ */ jsxs("div", {
159
+ className: "flex gap-4",
160
+ children: [!isLast && /* @__PURE__ */ jsx("div", {
161
+ className: "flex justify-center ps-[calc(var(--spacing)_*_4.5_-_1px)]",
162
+ children: /* @__PURE__ */ jsx(StepperSeparator, {
163
+ orientation: "vertical",
164
+ isLast,
165
+ state: dataState,
166
+ disabled: props.disabled
167
+ })
168
+ }), /* @__PURE__ */ jsx("div", {
169
+ className: "my-3 flex-1 ps-4",
170
+ children: panel
171
+ })]
172
+ })
173
+ ] });
174
+ },
175
+ Title,
176
+ Description,
177
+ Panel: ({ children, asChild, ...props }) => {
178
+ const Comp = asChild ? Slot : "div";
179
+ const { tracking } = useStepperProvider();
180
+ return /* @__PURE__ */ jsx(Comp, {
181
+ "date-component": "stepper-step-panel",
182
+ ref: (node) => scrollIntoStepperPanel(node, tracking),
183
+ ...props,
184
+ children
185
+ });
186
+ },
187
+ Controls: ({ children, className, asChild, ...props }) => {
188
+ return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
189
+ "date-component": "stepper-controls",
190
+ className: cn("flex justify-end gap-4", className),
191
+ ...props,
192
+ children
193
+ });
194
+ }
195
+ }
196
+ };
197
+ }
198
+ function Title({ children, className, asChild, ...props }) {
199
+ return /* @__PURE__ */ jsx(asChild ? Slot : "h4", {
200
+ "date-component": "stepper-step-title",
201
+ className: cn("text-base font-medium", className),
202
+ ...props,
203
+ children
204
+ });
205
+ }
206
+ function Description({ children, className, asChild, ...props }) {
207
+ return /* @__PURE__ */ jsx(asChild ? Slot : "p", {
208
+ "date-component": "stepper-step-description",
209
+ className: cn("text-muted-foreground text-sm", className),
210
+ ...props,
211
+ children
212
+ });
213
+ }
214
+ function StepperSeparator({ orientation, isLast, labelOrientation, state, disabled }) {
215
+ if (isLast) return null;
216
+ return /* @__PURE__ */ jsx("div", {
217
+ "date-component": "stepper-separator",
218
+ "data-orientation": orientation,
219
+ "data-state": state,
220
+ "data-disabled": disabled,
221
+ role: "separator",
222
+ tabIndex: -1,
223
+ className: classForSeparator({
224
+ orientation,
225
+ labelOrientation
226
+ })
227
+ });
228
+ }
229
+ function CircleStepIndicator({ currentStep, totalSteps, size = 80, strokeWidth = 6 }) {
230
+ const radius = (size - strokeWidth) / 2;
231
+ const circumference = radius * 2 * Math.PI;
232
+ const dashOffset = circumference - circumference * (currentStep / totalSteps * 100) / 100;
233
+ return /* @__PURE__ */ jsxs("div", {
234
+ "date-component": "stepper-step-indicator",
235
+ role: "progressbar",
236
+ "aria-valuenow": currentStep,
237
+ "aria-valuemin": 1,
238
+ "aria-valuemax": totalSteps,
239
+ tabIndex: -1,
240
+ className: "relative inline-flex items-center justify-center",
241
+ children: [/* @__PURE__ */ jsxs("svg", {
242
+ width: size,
243
+ height: size,
244
+ children: [
245
+ /* @__PURE__ */ jsx("title", { children: "Step Indicator" }),
246
+ /* @__PURE__ */ jsx("circle", {
247
+ cx: size / 2,
248
+ cy: size / 2,
249
+ r: radius,
250
+ fill: "none",
251
+ stroke: "currentColor",
252
+ strokeWidth,
253
+ className: "text-muted-foreground"
254
+ }),
255
+ /* @__PURE__ */ jsx("circle", {
256
+ cx: size / 2,
257
+ cy: size / 2,
258
+ r: radius,
259
+ fill: "none",
260
+ stroke: "currentColor",
261
+ strokeWidth,
262
+ strokeDasharray: circumference,
263
+ strokeDashoffset: dashOffset,
264
+ className: "text-primary transition-all duration-300 ease-in-out",
265
+ transform: `rotate(-90 ${size / 2} ${size / 2})`
266
+ })
267
+ ]
268
+ }), /* @__PURE__ */ jsx("div", {
269
+ className: "absolute inset-0 flex items-center justify-center",
270
+ children: /* @__PURE__ */ jsxs("span", {
271
+ className: "text-sm font-medium",
272
+ "aria-live": "polite",
273
+ children: [
274
+ currentStep,
275
+ " ",
276
+ "of",
277
+ totalSteps
278
+ ]
279
+ })
280
+ })]
281
+ });
282
+ }
283
+ function scrollIntoStepperPanel(node, tracking) {
284
+ if (tracking) node?.scrollIntoView({
285
+ behavior: "smooth",
286
+ block: "center"
287
+ });
288
+ }
289
+ function useStepChildren(children) {
290
+ return React$1.useMemo(() => extractChildren(children), [children]);
291
+ }
292
+ function extractChildren(children) {
293
+ const childrenArray = React$1.Children.toArray(children);
294
+ const map = /* @__PURE__ */ new Map();
295
+ for (const child of childrenArray) if (React$1.isValidElement(child)) if (child.type === Title) map.set("title", child);
296
+ else if (child.type === Description) map.set("description", child);
297
+ else map.set("panel", child);
298
+ return map;
299
+ }
300
+ function onStepKeyDown(e, nextStep, prevStep) {
301
+ const { key } = e;
302
+ const directions = {
303
+ next: ["ArrowRight", "ArrowDown"],
304
+ prev: ["ArrowLeft", "ArrowUp"]
305
+ };
306
+ if (directions.next.includes(key) || directions.prev.includes(key)) {
307
+ const direction = directions.next.includes(key) ? "next" : "prev";
308
+ const step = direction === "next" ? nextStep : prevStep;
309
+ if (!step) return;
310
+ const stepElement = document.getElementById(`step-${step.id}`);
311
+ if (!stepElement) return;
312
+ if (stepElement.parentElement?.getAttribute("data-state") !== "inactive" || direction === "prev") stepElement.focus();
313
+ }
314
+ }
315
+ function getStepState(currentIndex, stepIndex) {
316
+ if (currentIndex === stepIndex) return "active";
317
+ if (currentIndex > stepIndex) return "completed";
318
+ return "inactive";
319
+ }
320
+ //#endregion
321
+ export { defineStepper as t };
@@ -1,2 +1,2 @@
1
- import { t as TagsInput } from "../tag-input-BVSwNcRd.mjs";
1
+ import { t as TagsInput } from "../tag-input-B91C2wdr.mjs";
2
2
  export { TagsInput };
@@ -1,2 +1,2 @@
1
- import { _ as RedisTaskStorage, a as TaskPanelItem, b as createProjectMetadata, c as TaskPanelHeader, d as useCurrentScope, f as useTasksWithLabels, g as detectStorage, h as TaskQueue, i as TaskPanel, l as getContextLabel, m as TaskQueueProvider, n as TaskSummaryDialog, o as TaskPanelCounter, p as useTaskQueue, r as TaskQueueTrigger, s as TaskPanelActions, t as TaskQueueDropdown, u as matchesCurrentScope, v as LocalTaskStorage, x as createUserMetadata, y as createOrgMetadata } from "../task-queue-dropdown-DyM5R8KF.mjs";
1
+ import { _ as RedisTaskStorage, a as TaskPanelItem, b as createProjectMetadata, c as TaskPanelHeader, d as useCurrentScope, f as useTasksWithLabels, g as detectStorage, h as TaskQueue, i as TaskPanel, l as getContextLabel, m as TaskQueueProvider, n as TaskSummaryDialog, o as TaskPanelCounter, p as useTaskQueue, r as TaskQueueTrigger, s as TaskPanelActions, t as TaskQueueDropdown, u as matchesCurrentScope, v as LocalTaskStorage, x as createUserMetadata, y as createOrgMetadata } from "../task-queue-dropdown-OOFuJcHb.mjs";
2
2
  export { LocalTaskStorage, RedisTaskStorage, TaskPanel, TaskPanelActions, TaskPanelCounter, TaskPanelHeader, TaskPanelItem, TaskQueue, TaskQueueDropdown, TaskQueueProvider, TaskQueueTrigger, TaskSummaryDialog, createOrgMetadata, createProjectMetadata, createUserMetadata, detectStorage, getContextLabel, matchesCurrentScope, useCurrentScope, useTaskQueue, useTasksWithLabels };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@datum-cloud/datum-ui",
3
3
  "type": "module",
4
- "version": "0.5.0",
4
+ "version": "0.6.0-alpha.a49f238",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "url": "https://github.com/datum-cloud/datum-ui"
@@ -234,6 +234,21 @@
234
234
  "types": "./dist/components/features/form/index.d.ts",
235
235
  "default": "./dist/form/index.mjs"
236
236
  },
237
+ "./form/adapters/conform": {
238
+ "source": "./src/components/features/form/adapters/conform/index.ts",
239
+ "types": "./dist/components/features/form/adapters/conform/index.d.ts",
240
+ "default": "./dist/form/adapters/conform/index.mjs"
241
+ },
242
+ "./form/adapters/rhf": {
243
+ "source": "./src/components/features/form/adapters/rhf/index.ts",
244
+ "types": "./dist/components/features/form/adapters/rhf/index.d.ts",
245
+ "default": "./dist/form/adapters/rhf/index.mjs"
246
+ },
247
+ "./form/stepper": {
248
+ "source": "./src/components/features/form/stepper/index.ts",
249
+ "types": "./dist/components/features/form/stepper/index.d.ts",
250
+ "default": "./dist/form/stepper/index.mjs"
251
+ },
237
252
  "./grid": {
238
253
  "types": "./dist/components/features/grid/index.d.ts",
239
254
  "style": "./dist/grid/style.css",
@@ -321,6 +336,7 @@
321
336
  "peerDependencies": {
322
337
  "@conform-to/react": ">=1",
323
338
  "@conform-to/zod": ">=1",
339
+ "@hookform/resolvers": ">=5",
324
340
  "@monaco-editor/react": "^4.7.0",
325
341
  "@stepperize/react": ">=4",
326
342
  "@tanstack/react-table": ">=8",
@@ -341,12 +357,13 @@
341
357
  "react-day-picker": ">=9",
342
358
  "react-dom": ">=19",
343
359
  "react-dropzone": ">=14",
360
+ "react-hook-form": ">=7.55",
344
361
  "react-leaflet": ">=5",
345
362
  "react-leaflet-markercluster": ">=5.0.0-rc.0",
346
363
  "react-number-format": ">=5",
347
364
  "recharts": ">=2",
348
365
  "sonner": ">=2",
349
- "zod": ">=3"
366
+ "zod": ">=4"
350
367
  },
351
368
  "peerDependenciesMeta": {
352
369
  "@conform-to/react": {
@@ -355,6 +372,9 @@
355
372
  "@conform-to/zod": {
356
373
  "optional": true
357
374
  },
375
+ "@hookform/resolvers": {
376
+ "optional": true
377
+ },
358
378
  "@monaco-editor/react": {
359
379
  "optional": true
360
380
  },
@@ -407,6 +427,9 @@
407
427
  "react-dropzone": {
408
428
  "optional": true
409
429
  },
430
+ "react-hook-form": {
431
+ "optional": true
432
+ },
410
433
  "react-leaflet": {
411
434
  "optional": true
412
435
  },
@@ -452,6 +475,7 @@
452
475
  "devDependencies": {
453
476
  "@conform-to/react": "^1.17.1",
454
477
  "@conform-to/zod": "^1.17.1",
478
+ "@hookform/resolvers": "^5.2.2",
455
479
  "@monaco-editor/react": "^4.7.0",
456
480
  "@stepperize/react": "^6.1.0",
457
481
  "@tanstack/react-table": "^8.21.3",
@@ -485,6 +509,7 @@
485
509
  "react-day-picker": "^9.14.0",
486
510
  "react-dom": "^19",
487
511
  "react-dropzone": "^15.0.0",
512
+ "react-hook-form": "^7.71.2",
488
513
  "react-leaflet": "^5.0.0",
489
514
  "react-leaflet-markercluster": "5.0.0-rc.0",
490
515
  "react-number-format": "^5.4.4",