@questpie/admin 3.2.4 → 3.2.6

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 (255) hide show
  1. package/dist/client/blocks/block-renderer.d.mts +2 -2
  2. package/dist/client/blocks/block-renderer.mjs +164 -339
  3. package/dist/client/components/actions/action-button.mjs +9 -9
  4. package/dist/client/components/actions/action-dialog.mjs +195 -493
  5. package/dist/client/components/actions/confirmation-dialog.mjs +44 -159
  6. package/dist/client/components/actions/header-actions.mjs +73 -165
  7. package/dist/client/components/admin-link.d.mts +2 -2
  8. package/dist/client/components/admin-link.mjs +40 -126
  9. package/dist/client/components/auth/auth-loading.mjs +9 -44
  10. package/dist/client/components/blocks/block-canvas.mjs +31 -95
  11. package/dist/client/components/blocks/block-editor-context.mjs +13 -57
  12. package/dist/client/components/blocks/block-editor-layout.mjs +72 -166
  13. package/dist/client/components/blocks/block-editor-provider.mjs +184 -245
  14. package/dist/client/components/blocks/block-fields-renderer.mjs +54 -229
  15. package/dist/client/components/blocks/block-insert-button.mjs +49 -165
  16. package/dist/client/components/blocks/block-item-menu.mjs +102 -301
  17. package/dist/client/components/blocks/block-item.mjs +136 -370
  18. package/dist/client/components/blocks/block-library-sidebar.mjs +103 -230
  19. package/dist/client/components/blocks/block-tree.mjs +12 -68
  20. package/dist/client/components/blocks/block-type-icon.mjs +14 -56
  21. package/dist/client/components/brand-logo.mjs +35 -149
  22. package/dist/client/components/component-renderer.mjs +42 -118
  23. package/dist/client/components/error-boundary.mjs +14 -58
  24. package/dist/client/components/fields/array-field.mjs +209 -521
  25. package/dist/client/components/fields/asset-preview-field.mjs +41 -141
  26. package/dist/client/components/fields/blocks-field/blocks-field.mjs +60 -156
  27. package/dist/client/components/fields/boolean-field.mjs +29 -59
  28. package/dist/client/components/fields/date-field.mjs +7 -37
  29. package/dist/client/components/fields/datetime-field.mjs +7 -38
  30. package/dist/client/components/fields/email-field.mjs +25 -54
  31. package/dist/client/components/fields/field-wrapper.mjs +30 -105
  32. package/dist/client/components/fields/json-field.mjs +94 -296
  33. package/dist/client/components/fields/locale-badge.mjs +6 -15
  34. package/dist/client/components/fields/number-field.mjs +27 -60
  35. package/dist/client/components/fields/object-array-field.mjs +283 -659
  36. package/dist/client/components/fields/object-field.mjs +165 -633
  37. package/dist/client/components/fields/relation/displays/cards-display.mjs +106 -220
  38. package/dist/client/components/fields/relation/displays/chips-display.mjs +78 -150
  39. package/dist/client/components/fields/relation/displays/grid-display.mjs +92 -186
  40. package/dist/client/components/fields/relation/displays/list-display.mjs +122 -239
  41. package/dist/client/components/fields/relation/displays/table-display.mjs +70 -244
  42. package/dist/client/components/fields/relation/relation-items-display.mjs +30 -126
  43. package/dist/client/components/fields/relation-field.mjs +10 -66
  44. package/dist/client/components/fields/relation-picker.mjs +18 -18
  45. package/dist/client/components/fields/relation-select.mjs +12 -12
  46. package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs +80 -180
  47. package/dist/client/components/fields/rich-text-editor/image-popover.mjs +2 -2
  48. package/dist/client/components/fields/rich-text-editor/image-upload.mjs +13 -29
  49. package/dist/client/components/fields/rich-text-editor/index.mjs +195 -513
  50. package/dist/client/components/fields/rich-text-editor/slash-commands.mjs +61 -111
  51. package/dist/client/components/fields/rich-text-editor/table-controls.mjs +105 -415
  52. package/dist/client/components/fields/rich-text-editor/toolbar.mjs +256 -511
  53. package/dist/client/components/fields/rich-text-field.mjs +14 -53
  54. package/dist/client/components/fields/select-field.mjs +61 -72
  55. package/dist/client/components/fields/text-field.mjs +26 -59
  56. package/dist/client/components/fields/textarea-field.mjs +26 -58
  57. package/dist/client/components/fields/time-field.mjs +7 -35
  58. package/dist/client/components/fields/upload-field.mjs +47 -165
  59. package/dist/client/components/filter-builder/columns-tab.mjs +80 -280
  60. package/dist/client/components/filter-builder/filter-builder-sheet.mjs +197 -540
  61. package/dist/client/components/filter-builder/filters-tab.mjs +96 -386
  62. package/dist/client/components/filter-builder/saved-views-tab.mjs +133 -351
  63. package/dist/client/components/history-sidebar.mjs +285 -605
  64. package/dist/client/components/layout/field-layout-renderer.mjs +106 -254
  65. package/dist/client/components/locale-switcher.mjs +106 -228
  66. package/dist/client/components/media/media-grid.mjs +84 -273
  67. package/dist/client/components/media/media-picker-dialog.mjs +176 -476
  68. package/dist/client/components/preview/live-preview-mode.mjs +233 -458
  69. package/dist/client/components/preview/preview-pane.mjs +22 -22
  70. package/dist/client/components/primitives/asset-preview.mjs +290 -666
  71. package/dist/client/components/primitives/checkbox-input.mjs +9 -35
  72. package/dist/client/components/primitives/date-input.mjs +109 -327
  73. package/dist/client/components/primitives/dropzone.mjs +209 -336
  74. package/dist/client/components/primitives/field-select-control.mjs +12 -80
  75. package/dist/client/components/primitives/number-input.mjs +4 -4
  76. package/dist/client/components/primitives/select-multi.mjs +229 -572
  77. package/dist/client/components/primitives/select-single.mjs +179 -499
  78. package/dist/client/components/primitives/time-input.mjs +43 -117
  79. package/dist/client/components/primitives/toggle-input.mjs +9 -29
  80. package/dist/client/components/sheets/resource-sheet.mjs +61 -70
  81. package/dist/client/components/ui/accordion.mjs +35 -155
  82. package/dist/client/components/ui/alert.mjs +13 -68
  83. package/dist/client/components/ui/badge.mjs +9 -51
  84. package/dist/client/components/ui/button.mjs +8 -54
  85. package/dist/client/components/ui/card.mjs +37 -193
  86. package/dist/client/components/ui/checkbox.mjs +12 -68
  87. package/dist/client/components/ui/command.mjs +48 -219
  88. package/dist/client/components/ui/dialog.mjs +50 -262
  89. package/dist/client/components/ui/drawer.mjs +55 -259
  90. package/dist/client/components/ui/dropdown-menu.mjs +86 -427
  91. package/dist/client/components/ui/empty-state.mjs +28 -98
  92. package/dist/client/components/ui/field.mjs +73 -309
  93. package/dist/client/components/ui/input-group.mjs +42 -167
  94. package/dist/client/components/ui/input.mjs +7 -37
  95. package/dist/client/components/ui/kbd.mjs +6 -36
  96. package/dist/client/components/ui/label.mjs +7 -37
  97. package/dist/client/components/ui/popover.mjs +34 -169
  98. package/dist/client/components/ui/responsive-dialog.mjs +67 -273
  99. package/dist/client/components/ui/scroll-fade.mjs +63 -158
  100. package/dist/client/components/ui/search-input.mjs +33 -100
  101. package/dist/client/components/ui/select.mjs +72 -393
  102. package/dist/client/components/ui/separator.mjs +7 -38
  103. package/dist/client/components/ui/sheet.mjs +49 -269
  104. package/dist/client/components/ui/sidebar.mjs +171 -690
  105. package/dist/client/components/ui/skeleton.mjs +7 -38
  106. package/dist/client/components/ui/sonner.mjs +11 -42
  107. package/dist/client/components/ui/switch.mjs +9 -45
  108. package/dist/client/components/ui/table.mjs +48 -266
  109. package/dist/client/components/ui/tabs.mjs +26 -139
  110. package/dist/client/components/ui/textarea.mjs +6 -32
  111. package/dist/client/components/ui/tooltip.mjs +27 -129
  112. package/dist/client/components/widgets/chart-widget.mjs +174 -522
  113. package/dist/client/components/widgets/progress-widget.mjs +66 -172
  114. package/dist/client/components/widgets/quick-actions-widget.mjs +102 -261
  115. package/dist/client/components/widgets/recent-items-widget.mjs +69 -195
  116. package/dist/client/components/widgets/stats-widget.mjs +41 -175
  117. package/dist/client/components/widgets/table-widget.mjs +9 -9
  118. package/dist/client/components/widgets/timeline-widget.mjs +86 -226
  119. package/dist/client/components/widgets/value-widget.mjs +74 -381
  120. package/dist/client/components/widgets/widget-empty-state.mjs +26 -76
  121. package/dist/client/components/widgets/widget-skeletons.mjs +138 -421
  122. package/dist/client/contexts/focus-context.mjs +63 -146
  123. package/dist/client/hooks/typed-hooks.mjs +241 -701
  124. package/dist/client/hooks/use-action.mjs +62 -198
  125. package/dist/client/hooks/use-admin-config.mjs +5 -35
  126. package/dist/client/hooks/use-admin-preferences.mjs +16 -88
  127. package/dist/client/hooks/use-admin-routes.mjs +22 -56
  128. package/dist/client/hooks/use-audit-history.mjs +21 -69
  129. package/dist/client/hooks/use-brand.mjs +1 -9
  130. package/dist/client/hooks/use-collection-fields.mjs +17 -57
  131. package/dist/client/hooks/use-collection-meta.mjs +12 -44
  132. package/dist/client/hooks/use-collection-schema.mjs +10 -33
  133. package/dist/client/hooks/use-collection-validation.mjs +23 -53
  134. package/dist/client/hooks/use-collection.mjs +194 -614
  135. package/dist/client/hooks/use-current-user.mjs +0 -1
  136. package/dist/client/hooks/use-field-hooks.mjs +10 -10
  137. package/dist/client/hooks/use-field-options.mjs +61 -202
  138. package/dist/client/hooks/use-global-fields.mjs +14 -46
  139. package/dist/client/hooks/use-global-meta.mjs +9 -30
  140. package/dist/client/hooks/use-global-schema.mjs +9 -30
  141. package/dist/client/hooks/use-global.mjs +63 -219
  142. package/dist/client/hooks/use-locks.mjs +117 -325
  143. package/dist/client/hooks/use-media-query.mjs +16 -36
  144. package/dist/client/hooks/use-prefill-params.mjs +0 -1
  145. package/dist/client/hooks/use-questpie-query-options.mjs +12 -29
  146. package/dist/client/hooks/use-reactive-fields.mjs +1 -1
  147. package/dist/client/hooks/use-reactive-prop.mjs +65 -223
  148. package/dist/client/hooks/use-realtime-highlight.mjs +51 -114
  149. package/dist/client/hooks/use-saved-views.mjs +22 -103
  150. package/dist/client/hooks/use-search-param-toggle.mjs +28 -79
  151. package/dist/client/hooks/use-search.mjs +31 -143
  152. package/dist/client/hooks/use-server-actions.mjs +18 -50
  153. package/dist/client/hooks/use-server-validation.mjs +72 -166
  154. package/dist/client/hooks/use-server-widget-data.mjs +7 -33
  155. package/dist/client/hooks/use-setup-status.mjs +12 -25
  156. package/dist/client/hooks/use-sidebar-search-param.mjs +33 -78
  157. package/dist/client/hooks/use-transition-stage.mjs +8 -38
  158. package/dist/client/hooks/use-upload.mjs +54 -152
  159. package/dist/client/hooks/use-validation-error-map.mjs +6 -26
  160. package/dist/client/hooks/use-view-state.mjs +187 -437
  161. package/dist/client/i18n/hooks.mjs +65 -197
  162. package/dist/client/lib/render-profiler.mjs +14 -41
  163. package/dist/client/preview/block-scope-context.mjs +14 -36
  164. package/dist/client/preview/preview-banner.d.mts +2 -2
  165. package/dist/client/preview/preview-banner.mjs +42 -108
  166. package/dist/client/preview/preview-field.d.mts +4 -4
  167. package/dist/client/preview/preview-field.mjs +167 -348
  168. package/dist/client/preview/use-collection-preview.mjs +121 -215
  169. package/dist/client/runtime/content-locales-provider.mjs +31 -83
  170. package/dist/client/runtime/locale-scope.mjs +22 -63
  171. package/dist/client/runtime/provider.mjs +100 -255
  172. package/dist/client/runtime/translations-provider.mjs +41 -107
  173. package/dist/client/scope/picker.mjs +86 -321
  174. package/dist/client/scope/provider.mjs +8 -17
  175. package/dist/client/utils/build-field-definitions-from-schema.mjs +4 -2
  176. package/dist/client/views/auth/accept-invite-form.d.mts +2 -2
  177. package/dist/client/views/auth/accept-invite-form.mjs +121 -412
  178. package/dist/client/views/auth/auth-layout.d.mts +3 -3
  179. package/dist/client/views/auth/auth-layout.mjs +104 -284
  180. package/dist/client/views/auth/forgot-password-form.d.mts +2 -2
  181. package/dist/client/views/auth/forgot-password-form.mjs +94 -325
  182. package/dist/client/views/auth/invite-form.mjs +107 -442
  183. package/dist/client/views/auth/login-form.d.mts +2 -2
  184. package/dist/client/views/auth/login-form.mjs +116 -337
  185. package/dist/client/views/auth/reset-password-form.d.mts +2 -2
  186. package/dist/client/views/auth/reset-password-form.mjs +128 -453
  187. package/dist/client/views/auth/setup-form.d.mts +2 -2
  188. package/dist/client/views/auth/setup-form.mjs +140 -478
  189. package/dist/client/views/collection/auto-form-fields.mjs +243 -615
  190. package/dist/client/views/collection/bulk-action-toolbar.mjs +212 -379
  191. package/dist/client/views/collection/cells/complex-cells.mjs +183 -611
  192. package/dist/client/views/collection/cells/primitive-cells.mjs +116 -356
  193. package/dist/client/views/collection/cells/relation-cells.mjs +86 -233
  194. package/dist/client/views/collection/cells/shared/asset-thumbnail.mjs +142 -371
  195. package/dist/client/views/collection/cells/shared/relation-chip.mjs +35 -131
  196. package/dist/client/views/collection/cells/upload-cells.mjs +60 -177
  197. package/dist/client/views/collection/columns/build-columns.mjs +8 -48
  198. package/dist/client/views/collection/field-renderer.mjs +58 -182
  199. package/dist/client/views/collection/form-view.mjs +284 -518
  200. package/dist/client/views/collection/table-view.mjs +231 -463
  201. package/dist/client/views/collection/view-skeletons.mjs +112 -237
  202. package/dist/client/views/common/global-search.mjs +241 -560
  203. package/dist/client/views/dashboard/dashboard-grid.mjs +256 -775
  204. package/dist/client/views/dashboard/dashboard-widget.mjs +38 -126
  205. package/dist/client/views/dashboard/widget-card.mjs +61 -269
  206. package/dist/client/views/globals/global-form-view.mjs +477 -1301
  207. package/dist/client/views/layout/admin-layout-provider.mjs +28 -88
  208. package/dist/client/views/layout/admin-layout.mjs +83 -246
  209. package/dist/client/views/layout/admin-router.mjs +458 -1274
  210. package/dist/client/views/layout/admin-sidebar.mjs +510 -1292
  211. package/dist/client/views/layout/admin-theme.mjs +30 -64
  212. package/dist/client/views/layout/admin-view-layout.mjs +40 -144
  213. package/dist/client/views/pages/accept-invite-page.d.mts +2 -2
  214. package/dist/client/views/pages/accept-invite-page.mjs +95 -290
  215. package/dist/client/views/pages/dashboard-page.d.mts +2 -2
  216. package/dist/client/views/pages/dashboard-page.mjs +11 -57
  217. package/dist/client/views/pages/forgot-password-page.d.mts +2 -2
  218. package/dist/client/views/pages/forgot-password-page.mjs +31 -83
  219. package/dist/client/views/pages/invite-page.d.mts +2 -2
  220. package/dist/client/views/pages/invite-page.mjs +35 -90
  221. package/dist/client/views/pages/login-page.d.mts +2 -2
  222. package/dist/client/views/pages/login-page.mjs +41 -121
  223. package/dist/client/views/pages/reset-password-page.d.mts +2 -2
  224. package/dist/client/views/pages/reset-password-page.mjs +46 -173
  225. package/dist/client/views/pages/setup-page.d.mts +2 -2
  226. package/dist/client/views/pages/setup-page.mjs +33 -95
  227. package/dist/components/rich-text/rich-text-renderer.mjs +9 -33
  228. package/dist/server/adapters/index.d.mts +2 -0
  229. package/dist/server/adapters/nextjs.d.mts +1 -0
  230. package/dist/server/auth-helpers.d.mts +1 -0
  231. package/dist/server/modules/admin/.generated/module.d.mts +1 -0
  232. package/dist/server/modules/admin/collections/account.d.mts +46 -46
  233. package/dist/server/modules/admin/collections/admin-locks.d.mts +50 -50
  234. package/dist/server/modules/admin/collections/admin-preferences.d.mts +39 -39
  235. package/dist/server/modules/admin/collections/admin-saved-views.d.mts +47 -47
  236. package/dist/server/modules/admin/collections/apikey.d.mts +68 -68
  237. package/dist/server/modules/admin/collections/assets.d.mts +39 -39
  238. package/dist/server/modules/admin/collections/session.d.mts +42 -42
  239. package/dist/server/modules/admin/collections/user.d.mts +62 -62
  240. package/dist/server/modules/admin/collections/verification.d.mts +23 -23
  241. package/dist/server/modules/admin/index.d.mts +20 -19
  242. package/dist/server/modules/admin/routes/admin-config.d.mts +2 -2
  243. package/dist/server/modules/admin/routes/execute-action.d.mts +9 -9
  244. package/dist/server/modules/admin/routes/locales.d.mts +2 -2
  245. package/dist/server/modules/admin/routes/preview.d.mts +11 -11
  246. package/dist/server/modules/admin/routes/reactive.d.mts +9 -9
  247. package/dist/server/modules/admin/routes/setup.d.mts +7 -7
  248. package/dist/server/modules/admin/routes/translations.d.mts +4 -4
  249. package/dist/server/modules/admin/routes/widget-data.d.mts +5 -5
  250. package/dist/server/modules/admin-preferences/collections/saved-views.d.mts +45 -45
  251. package/dist/server/modules/audit/.generated/module.d.mts +6 -6
  252. package/dist/server/modules/audit/collections/audit-log.d.mts +78 -78
  253. package/dist/server/modules/audit/jobs/audit-cleanup.d.mts +2 -2
  254. package/dist/server.d.mts +2 -0
  255. package/package.json +3 -5
@@ -6,9 +6,8 @@ import { Select, SelectContent, SelectItem, SelectTrigger } from "../ui/select.m
6
6
  import { Textarea } from "../ui/textarea.mjs";
7
7
  import { LocaleBadge } from "./locale-badge.mjs";
8
8
  import { ObjectArrayField } from "./object-array-field.mjs";
9
- import { c } from "react/compiler-runtime";
10
9
  import { Icon } from "@iconify/react";
11
- import "react";
10
+ import * as React from "react";
12
11
  import { jsx, jsxs } from "react/jsx-runtime";
13
12
  import { useFieldArray, useFormContext, useWatch } from "react-hook-form";
14
13
 
@@ -19,546 +18,235 @@ import { useFieldArray, useFormContext, useWatch } from "react-hook-form";
19
18
  * Handles arrays of primitive values or objects with optional ordering.
20
19
  * When `item` prop is provided, delegates to ObjectArrayField for object items.
21
20
  */
22
- function ArrayItemInput(t0) {
23
- const $ = c(64);
24
- const { name, index, itemType, itemValue, placeholder, disabled, readOnly, options } = t0;
21
+ function ArrayItemInput({ name, index, itemType, itemValue, placeholder, disabled, readOnly, options }) {
25
22
  const resolveText = useResolveText();
26
23
  const i18n = useSafeI18n();
27
24
  const locale = i18n?.locale ?? "en";
28
- let t1;
29
- if ($[0] !== i18n) {
30
- t1 = (key) => i18n?.t(key) ?? key;
31
- $[0] = i18n;
32
- $[1] = t1;
33
- } else t1 = $[1];
34
- const t = t1;
35
- let t2;
36
- if ($[2] !== locale || $[3] !== resolveText || $[4] !== t) {
37
- t2 = (option) => resolveOptionLabel({
38
- value: option.value,
39
- label: option.label,
40
- resolveText,
41
- t,
42
- locale
43
- });
44
- $[2] = locale;
45
- $[3] = resolveText;
46
- $[4] = t;
47
- $[5] = t2;
48
- } else t2 = $[5];
49
- const getOptionLabel = t2;
25
+ const t = (key) => i18n?.t(key) ?? key;
26
+ const getOptionLabel = (option) => resolveOptionLabel({
27
+ value: option.value,
28
+ label: option.label,
29
+ resolveText,
30
+ t,
31
+ locale
32
+ });
50
33
  const form = useFormContext();
51
34
  const itemName = `${name}.${index}`;
52
35
  const itemPlaceholder = placeholder || `Item ${index + 1}`;
53
- if (itemType === "textarea") {
54
- const t3$1 = disabled || readOnly;
55
- const t4$1 = itemValue ?? "";
56
- let t5$1;
57
- if ($[6] !== form || $[7] !== itemName) {
58
- t5$1 = form.register(itemName);
59
- $[6] = form;
60
- $[7] = itemName;
61
- $[8] = t5$1;
62
- } else t5$1 = $[8];
63
- let t6$1;
64
- if ($[9] !== itemName || $[10] !== itemPlaceholder || $[11] !== t3$1 || $[12] !== t4$1 || $[13] !== t5$1) {
65
- t6$1 = /* @__PURE__ */ jsx(Textarea, {
66
- id: itemName,
67
- placeholder: itemPlaceholder,
68
- disabled: t3$1,
69
- defaultValue: t4$1,
70
- ...t5$1
71
- });
72
- $[9] = itemName;
73
- $[10] = itemPlaceholder;
74
- $[11] = t3$1;
75
- $[12] = t4$1;
76
- $[13] = t5$1;
77
- $[14] = t6$1;
78
- } else t6$1 = $[14];
79
- return t6$1;
80
- }
36
+ if (itemType === "textarea") return /* @__PURE__ */ jsx(Textarea, {
37
+ id: itemName,
38
+ placeholder: itemPlaceholder,
39
+ disabled: disabled || readOnly,
40
+ defaultValue: itemValue ?? "",
41
+ ...form.register(itemName)
42
+ });
81
43
  if (itemType === "select") {
82
- let T0;
83
- let T1;
84
- let t3$1;
85
- let t4$1;
86
- let t5$1;
87
- let t6$1;
88
- let t7$1;
89
- let t8;
90
- if ($[15] !== disabled || $[16] !== form || $[17] !== getOptionLabel || $[18] !== itemName || $[19] !== itemPlaceholder || $[20] !== itemValue || $[21] !== options || $[22] !== readOnly) {
91
- const selectedOption = options?.find((o) => o.value === itemValue);
92
- T1 = Select;
93
- t6$1 = itemValue ?? "";
94
- if ($[31] !== form || $[32] !== itemName) {
95
- t7$1 = (value) => form.setValue(itemName, value, {
96
- shouldDirty: true,
97
- shouldTouch: true
98
- });
99
- $[31] = form;
100
- $[32] = itemName;
101
- $[33] = t7$1;
102
- } else t7$1 = $[33];
103
- t8 = disabled || readOnly;
104
- T0 = SelectTrigger;
105
- t5$1 = itemName;
106
- t3$1 = "truncate";
107
- t4$1 = selectedOption ? getOptionLabel(selectedOption) : itemPlaceholder;
108
- $[15] = disabled;
109
- $[16] = form;
110
- $[17] = getOptionLabel;
111
- $[18] = itemName;
112
- $[19] = itemPlaceholder;
113
- $[20] = itemValue;
114
- $[21] = options;
115
- $[22] = readOnly;
116
- $[23] = T0;
117
- $[24] = T1;
118
- $[25] = t3$1;
119
- $[26] = t4$1;
120
- $[27] = t5$1;
121
- $[28] = t6$1;
122
- $[29] = t7$1;
123
- $[30] = t8;
124
- } else {
125
- T0 = $[23];
126
- T1 = $[24];
127
- t3$1 = $[25];
128
- t4$1 = $[26];
129
- t5$1 = $[27];
130
- t6$1 = $[28];
131
- t7$1 = $[29];
132
- t8 = $[30];
133
- }
134
- let t9;
135
- if ($[34] !== t3$1 || $[35] !== t4$1) {
136
- t9 = /* @__PURE__ */ jsx("span", {
137
- className: t3$1,
138
- children: t4$1
139
- });
140
- $[34] = t3$1;
141
- $[35] = t4$1;
142
- $[36] = t9;
143
- } else t9 = $[36];
144
- let t10;
145
- if ($[37] !== T0 || $[38] !== t5$1 || $[39] !== t9) {
146
- t10 = /* @__PURE__ */ jsx(T0, {
147
- id: t5$1,
148
- children: t9
149
- });
150
- $[37] = T0;
151
- $[38] = t5$1;
152
- $[39] = t9;
153
- $[40] = t10;
154
- } else t10 = $[40];
155
- let t11;
156
- if ($[41] !== getOptionLabel || $[42] !== options) {
157
- t11 = options?.map((option_0) => /* @__PURE__ */ jsx(SelectItem, {
158
- value: option_0.value,
159
- children: getOptionLabel(option_0)
160
- }, option_0.value));
161
- $[41] = getOptionLabel;
162
- $[42] = options;
163
- $[43] = t11;
164
- } else t11 = $[43];
165
- let t12;
166
- if ($[44] !== t11) {
167
- t12 = /* @__PURE__ */ jsx(SelectContent, { children: t11 });
168
- $[44] = t11;
169
- $[45] = t12;
170
- } else t12 = $[45];
171
- let t13;
172
- if ($[46] !== T1 || $[47] !== t10 || $[48] !== t12 || $[49] !== t6$1 || $[50] !== t7$1 || $[51] !== t8) {
173
- t13 = /* @__PURE__ */ jsxs(T1, {
174
- value: t6$1,
175
- onValueChange: t7$1,
176
- disabled: t8,
177
- children: [t10, t12]
178
- });
179
- $[46] = T1;
180
- $[47] = t10;
181
- $[48] = t12;
182
- $[49] = t6$1;
183
- $[50] = t7$1;
184
- $[51] = t8;
185
- $[52] = t13;
186
- } else t13 = $[52];
187
- return t13;
188
- }
189
- const t3 = itemType === "email" ? "email" : itemType;
190
- const t4 = disabled || readOnly;
191
- const t5 = itemValue ?? "";
192
- let t6;
193
- if ($[53] !== form || $[54] !== itemName || $[55] !== itemType) {
194
- t6 = form.register(itemName, itemType === "number" ? { valueAsNumber: true } : void 0);
195
- $[53] = form;
196
- $[54] = itemName;
197
- $[55] = itemType;
198
- $[56] = t6;
199
- } else t6 = $[56];
200
- let t7;
201
- if ($[57] !== itemName || $[58] !== itemPlaceholder || $[59] !== t3 || $[60] !== t4 || $[61] !== t5 || $[62] !== t6) {
202
- t7 = /* @__PURE__ */ jsx(Input, {
203
- id: itemName,
204
- type: t3,
205
- placeholder: itemPlaceholder,
206
- disabled: t4,
207
- defaultValue: t5,
208
- ...t6
44
+ const selectedOption = options?.find((o) => o.value === itemValue);
45
+ return /* @__PURE__ */ jsxs(Select, {
46
+ value: itemValue ?? "",
47
+ onValueChange: (value) => form.setValue(itemName, value, {
48
+ shouldDirty: true,
49
+ shouldTouch: true
50
+ }),
51
+ disabled: disabled || readOnly,
52
+ children: [/* @__PURE__ */ jsx(SelectTrigger, {
53
+ id: itemName,
54
+ children: /* @__PURE__ */ jsx("span", {
55
+ className: "truncate",
56
+ children: selectedOption ? getOptionLabel(selectedOption) : itemPlaceholder
57
+ })
58
+ }), /* @__PURE__ */ jsx(SelectContent, { children: options?.map((option) => /* @__PURE__ */ jsx(SelectItem, {
59
+ value: option.value,
60
+ children: getOptionLabel(option)
61
+ }, option.value)) })]
209
62
  });
210
- $[57] = itemName;
211
- $[58] = itemPlaceholder;
212
- $[59] = t3;
213
- $[60] = t4;
214
- $[61] = t5;
215
- $[62] = t6;
216
- $[63] = t7;
217
- } else t7 = $[63];
218
- return t7;
63
+ }
64
+ return /* @__PURE__ */ jsx(Input, {
65
+ id: itemName,
66
+ type: itemType === "email" ? "email" : itemType,
67
+ placeholder: itemPlaceholder,
68
+ disabled: disabled || readOnly,
69
+ defaultValue: itemValue ?? "",
70
+ ...form.register(itemName, itemType === "number" ? { valueAsNumber: true } : void 0)
71
+ });
219
72
  }
220
- function ArrayField(t0) {
221
- const $ = c(89);
222
- const { name, value, label, description, placeholder, required, disabled, readOnly, error, localized, locale, itemType: t1, options, orderable: t2, minItems, maxItems, item, mode, layout, columns, itemLabel } = t0;
223
- const itemType = t1 === void 0 ? "text" : t1;
224
- const orderable = t2 === void 0 ? false : t2;
73
+ function ArrayField({ name, value, label, description, placeholder, required, disabled, readOnly, error, localized, locale, itemType = "text", options, orderable = false, minItems, maxItems, item, mode, layout, columns, itemLabel }) {
225
74
  const { t } = useTranslation();
226
75
  const resolveText = useResolveText();
227
- let t3;
228
- if ($[0] !== placeholder || $[1] !== resolveText) {
229
- t3 = placeholder ? resolveText(placeholder) : void 0;
230
- $[0] = placeholder;
231
- $[1] = resolveText;
232
- $[2] = t3;
233
- } else t3 = $[2];
234
- const resolvedPlaceholder = t3;
235
- let t4;
236
- if ($[3] !== description || $[4] !== resolveText) {
237
- t4 = description ? resolveText(description) : void 0;
238
- $[3] = description;
239
- $[4] = resolveText;
240
- $[5] = t4;
241
- } else t4 = $[5];
242
- const resolvedDescription = t4;
243
- let emptyLabel;
244
- let resolvedLabel;
245
- let t5;
246
- if ($[6] !== label || $[7] !== resolveText || $[8] !== t) {
247
- resolvedLabel = label ? resolveText(label) : void 0;
248
- const fallbackLabel = resolvedLabel || "item";
249
- emptyLabel = t("array.empty", { name: fallbackLabel });
250
- t5 = t("array.addItem", { name: fallbackLabel });
251
- $[6] = label;
252
- $[7] = resolveText;
253
- $[8] = t;
254
- $[9] = emptyLabel;
255
- $[10] = resolvedLabel;
256
- $[11] = t5;
257
- } else {
258
- emptyLabel = $[9];
259
- resolvedLabel = $[10];
260
- t5 = $[11];
261
- }
262
- const addLabel = t5;
76
+ const resolvedPlaceholder = placeholder ? resolveText(placeholder) : void 0;
77
+ const resolvedDescription = description ? resolveText(description) : void 0;
78
+ const resolvedLabel = label ? resolveText(label) : void 0;
79
+ const fallbackLabel = resolvedLabel || "item";
80
+ const emptyLabel = t("array.empty", { name: fallbackLabel });
81
+ const addLabel = t("array.addItem", { name: fallbackLabel });
263
82
  const { control } = useFormContext();
264
- let t6;
265
- if ($[12] !== control || $[13] !== name) {
266
- t6 = {
267
- control,
268
- name
269
- };
270
- $[12] = control;
271
- $[13] = name;
272
- $[14] = t6;
273
- } else t6 = $[14];
274
- const { fields, append, remove, move } = useFieldArray(t6);
83
+ const { fields, append, remove, move } = useFieldArray({
84
+ control,
85
+ name
86
+ });
275
87
  const values = useWatch({
276
88
  control,
277
89
  name
278
90
  }) ?? value;
279
91
  const canAddMore = !maxItems || fields.length < maxItems;
280
92
  const canRemove = !readOnly && (!minItems || fields.length > minItems);
281
- let t7;
282
- if ($[15] !== itemType || $[16] !== options?.[0]?.value) {
283
- t7 = () => {
284
- if (itemType === "number") return;
285
- if (itemType === "select") return options?.[0]?.value ?? "";
286
- return "";
287
- };
288
- $[15] = itemType;
289
- $[16] = options?.[0]?.value;
290
- $[17] = t7;
291
- } else t7 = $[17];
292
- const createEmptyItem = t7;
293
- if (item) {
294
- let t8$1;
295
- if ($[18] !== columns || $[19] !== description || $[20] !== disabled || $[21] !== item || $[22] !== itemLabel || $[23] !== label || $[24] !== layout || $[25] !== locale || $[26] !== localized || $[27] !== maxItems || $[28] !== minItems || $[29] !== mode || $[30] !== name || $[31] !== orderable || $[32] !== placeholder || $[33] !== required) {
296
- t8$1 = /* @__PURE__ */ jsx(ObjectArrayField, {
297
- name,
298
- label,
299
- description,
300
- placeholder,
301
- required,
302
- disabled,
303
- localized,
304
- locale,
305
- item,
306
- mode,
307
- layout,
308
- columns,
309
- itemLabel,
310
- orderable,
311
- minItems,
312
- maxItems
313
- });
314
- $[18] = columns;
315
- $[19] = description;
316
- $[20] = disabled;
317
- $[21] = item;
318
- $[22] = itemLabel;
319
- $[23] = label;
320
- $[24] = layout;
321
- $[25] = locale;
322
- $[26] = localized;
323
- $[27] = maxItems;
324
- $[28] = minItems;
325
- $[29] = mode;
326
- $[30] = name;
327
- $[31] = orderable;
328
- $[32] = placeholder;
329
- $[33] = required;
330
- $[34] = t8$1;
331
- } else t8$1 = $[34];
332
- return t8$1;
333
- }
334
- let t8;
335
- if ($[35] !== append || $[36] !== canAddMore || $[37] !== createEmptyItem || $[38] !== disabled || $[39] !== readOnly) {
336
- t8 = () => {
337
- if (disabled || readOnly || !canAddMore) return;
338
- append(createEmptyItem());
339
- };
340
- $[35] = append;
341
- $[36] = canAddMore;
342
- $[37] = createEmptyItem;
343
- $[38] = disabled;
344
- $[39] = readOnly;
345
- $[40] = t8;
346
- } else t8 = $[40];
347
- const handleAdd = t8;
348
- let t9;
349
- if ($[41] !== canRemove || $[42] !== remove) {
350
- t9 = (index) => {
351
- if (!canRemove) return;
352
- remove(index);
353
- };
354
- $[41] = canRemove;
355
- $[42] = remove;
356
- $[43] = t9;
357
- } else t9 = $[43];
358
- const handleRemove = t9;
359
- let t10;
360
- if ($[44] !== fields.length || $[45] !== move) {
361
- t10 = (from, to) => {
362
- if (to < 0 || to >= fields.length) return;
363
- move(from, to);
364
- };
365
- $[44] = fields.length;
366
- $[45] = move;
367
- $[46] = t10;
368
- } else t10 = $[46];
369
- const handleMove = t10;
370
- let t11;
371
- if ($[47] !== fields.length || $[48] !== label || $[49] !== locale || $[50] !== localized || $[51] !== maxItems || $[52] !== name || $[53] !== required || $[54] !== resolvedLabel) {
372
- t11 = label && /* @__PURE__ */ jsxs("div", {
373
- className: "flex items-center gap-2",
374
- children: [/* @__PURE__ */ jsxs("label", {
375
- htmlFor: name,
376
- className: "text-sm font-medium",
377
- children: [
378
- resolvedLabel,
379
- required && /* @__PURE__ */ jsx("span", {
380
- className: "text-destructive",
381
- children: "*"
382
- }),
383
- maxItems && /* @__PURE__ */ jsxs("span", {
384
- className: "text-muted-foreground ml-2 text-xs tabular-nums",
93
+ const createEmptyItem = React.useCallback(() => {
94
+ if (itemType === "number") return void 0;
95
+ if (itemType === "select") return options?.[0]?.value ?? "";
96
+ return "";
97
+ }, [itemType, options]);
98
+ if (item) return /* @__PURE__ */ jsx(ObjectArrayField, {
99
+ name,
100
+ label,
101
+ description,
102
+ placeholder,
103
+ required,
104
+ disabled,
105
+ localized,
106
+ locale,
107
+ item,
108
+ mode,
109
+ layout,
110
+ columns,
111
+ itemLabel,
112
+ orderable,
113
+ minItems,
114
+ maxItems
115
+ });
116
+ const handleAdd = () => {
117
+ if (disabled || readOnly || !canAddMore) return;
118
+ append(createEmptyItem());
119
+ };
120
+ const handleRemove = (index) => {
121
+ if (!canRemove) return;
122
+ remove(index);
123
+ };
124
+ const handleMove = (from, to) => {
125
+ if (to < 0 || to >= fields.length) return;
126
+ move(from, to);
127
+ };
128
+ return /* @__PURE__ */ jsxs("div", {
129
+ className: "qa-array-field space-y-2",
130
+ children: [
131
+ label && /* @__PURE__ */ jsxs("div", {
132
+ className: "flex items-center gap-2",
133
+ children: [/* @__PURE__ */ jsxs("label", {
134
+ htmlFor: name,
135
+ className: "text-sm font-medium",
136
+ children: [
137
+ resolvedLabel,
138
+ required && /* @__PURE__ */ jsx("span", {
139
+ className: "text-destructive",
140
+ children: "*"
141
+ }),
142
+ maxItems && /* @__PURE__ */ jsxs("span", {
143
+ className: "text-muted-foreground ml-2 text-xs tabular-nums",
144
+ children: [
145
+ "(",
146
+ fields.length,
147
+ "/",
148
+ maxItems,
149
+ ")"
150
+ ]
151
+ })
152
+ ]
153
+ }), localized && /* @__PURE__ */ jsx(LocaleBadge, { locale: locale || "i18n" })]
154
+ }),
155
+ resolvedDescription && /* @__PURE__ */ jsx("p", {
156
+ className: "text-muted-foreground text-sm text-pretty",
157
+ children: resolvedDescription
158
+ }),
159
+ /* @__PURE__ */ jsx("div", {
160
+ className: "space-y-2",
161
+ children: fields.length === 0 ? /* @__PURE__ */ jsx("div", {
162
+ className: "py-2",
163
+ children: /* @__PURE__ */ jsx("p", {
164
+ className: "text-muted-foreground text-sm text-pretty",
165
+ children: resolvedPlaceholder || emptyLabel
166
+ })
167
+ }) : fields.map((field, index) => {
168
+ const canMoveUp = orderable && index > 0;
169
+ const canMoveDown = orderable && index < fields.length - 1;
170
+ return /* @__PURE__ */ jsxs("div", {
171
+ className: "flex items-start gap-2",
385
172
  children: [
386
- "(",
387
- fields.length,
388
- "/",
389
- maxItems,
390
- ")"
173
+ /* @__PURE__ */ jsx("div", {
174
+ className: "flex-1",
175
+ children: /* @__PURE__ */ jsx(ArrayItemInput, {
176
+ name,
177
+ index,
178
+ itemType,
179
+ itemValue: values?.[index],
180
+ placeholder: resolvedPlaceholder,
181
+ disabled,
182
+ readOnly,
183
+ options
184
+ })
185
+ }),
186
+ orderable && !readOnly && /* @__PURE__ */ jsxs("div", {
187
+ className: "flex flex-col gap-1",
188
+ children: [/* @__PURE__ */ jsx(Button, {
189
+ type: "button",
190
+ variant: "ghost",
191
+ size: "icon-sm",
192
+ className: "relative after:absolute after:-inset-1",
193
+ onClick: () => handleMove(index, index - 1),
194
+ disabled: !canMoveUp || disabled,
195
+ title: t("field.moveUp"),
196
+ "aria-label": t("field.moveUp"),
197
+ children: /* @__PURE__ */ jsx(Icon, {
198
+ icon: "ph:caret-up",
199
+ className: "size-3.5"
200
+ })
201
+ }), /* @__PURE__ */ jsx(Button, {
202
+ type: "button",
203
+ variant: "ghost",
204
+ size: "icon-sm",
205
+ className: "relative after:absolute after:-inset-1",
206
+ onClick: () => handleMove(index, index + 1),
207
+ disabled: !canMoveDown || disabled,
208
+ title: t("field.moveDown"),
209
+ "aria-label": t("field.moveDown"),
210
+ children: /* @__PURE__ */ jsx(Icon, {
211
+ icon: "ph:caret-down",
212
+ className: "size-3.5"
213
+ })
214
+ })]
215
+ }),
216
+ !readOnly && canRemove && /* @__PURE__ */ jsx(Button, {
217
+ type: "button",
218
+ variant: "ghost",
219
+ size: "icon-sm",
220
+ className: "relative after:absolute after:-inset-1",
221
+ onClick: () => handleRemove(index),
222
+ disabled,
223
+ title: t("common.remove"),
224
+ "aria-label": t("field.removeItem"),
225
+ children: /* @__PURE__ */ jsx(Icon, {
226
+ icon: "ph:trash",
227
+ className: "size-3.5"
228
+ })
229
+ })
391
230
  ]
392
- })
393
- ]
394
- }), localized && /* @__PURE__ */ jsx(LocaleBadge, { locale: locale || "i18n" })]
395
- });
396
- $[47] = fields.length;
397
- $[48] = label;
398
- $[49] = locale;
399
- $[50] = localized;
400
- $[51] = maxItems;
401
- $[52] = name;
402
- $[53] = required;
403
- $[54] = resolvedLabel;
404
- $[55] = t11;
405
- } else t11 = $[55];
406
- let t12;
407
- if ($[56] !== resolvedDescription) {
408
- t12 = resolvedDescription && /* @__PURE__ */ jsx("p", {
409
- className: "text-muted-foreground text-sm text-pretty",
410
- children: resolvedDescription
411
- });
412
- $[56] = resolvedDescription;
413
- $[57] = t12;
414
- } else t12 = $[57];
415
- let t13;
416
- if ($[58] !== canRemove || $[59] !== disabled || $[60] !== emptyLabel || $[61] !== fields || $[62] !== handleMove || $[63] !== handleRemove || $[64] !== itemType || $[65] !== name || $[66] !== options || $[67] !== orderable || $[68] !== readOnly || $[69] !== resolvedPlaceholder || $[70] !== t || $[71] !== values) {
417
- t13 = fields.length === 0 ? /* @__PURE__ */ jsx("div", {
418
- className: "py-2",
419
- children: /* @__PURE__ */ jsx("p", {
420
- className: "text-muted-foreground text-sm text-pretty",
421
- children: resolvedPlaceholder || emptyLabel
231
+ }, field.id);
232
+ })
233
+ }),
234
+ !readOnly && canAddMore && /* @__PURE__ */ jsxs(Button, {
235
+ type: "button",
236
+ variant: "outline",
237
+ onClick: handleAdd,
238
+ disabled,
239
+ children: [/* @__PURE__ */ jsx(Icon, {
240
+ icon: "ph:plus",
241
+ className: "h-4 w-4"
242
+ }), addLabel]
243
+ }),
244
+ error && /* @__PURE__ */ jsx("p", {
245
+ className: "text-destructive text-sm text-pretty",
246
+ children: error
422
247
  })
423
- }) : fields.map((field, index_0) => {
424
- const canMoveUp = orderable && index_0 > 0;
425
- const canMoveDown = orderable && index_0 < fields.length - 1;
426
- return /* @__PURE__ */ jsxs("div", {
427
- className: "flex items-start gap-2",
428
- children: [
429
- /* @__PURE__ */ jsx("div", {
430
- className: "flex-1",
431
- children: /* @__PURE__ */ jsx(ArrayItemInput, {
432
- name,
433
- index: index_0,
434
- itemType,
435
- itemValue: values?.[index_0],
436
- placeholder: resolvedPlaceholder,
437
- disabled,
438
- readOnly,
439
- options
440
- })
441
- }),
442
- orderable && !readOnly && /* @__PURE__ */ jsxs("div", {
443
- className: "flex flex-col gap-1",
444
- children: [/* @__PURE__ */ jsx(Button, {
445
- type: "button",
446
- variant: "ghost",
447
- size: "icon-sm",
448
- className: "relative after:absolute after:-inset-1",
449
- onClick: () => handleMove(index_0, index_0 - 1),
450
- disabled: !canMoveUp || disabled,
451
- title: t("field.moveUp"),
452
- "aria-label": t("field.moveUp"),
453
- children: /* @__PURE__ */ jsx(Icon, {
454
- icon: "ph:caret-up",
455
- className: "size-3.5"
456
- })
457
- }), /* @__PURE__ */ jsx(Button, {
458
- type: "button",
459
- variant: "ghost",
460
- size: "icon-sm",
461
- className: "relative after:absolute after:-inset-1",
462
- onClick: () => handleMove(index_0, index_0 + 1),
463
- disabled: !canMoveDown || disabled,
464
- title: t("field.moveDown"),
465
- "aria-label": t("field.moveDown"),
466
- children: /* @__PURE__ */ jsx(Icon, {
467
- icon: "ph:caret-down",
468
- className: "size-3.5"
469
- })
470
- })]
471
- }),
472
- !readOnly && canRemove && /* @__PURE__ */ jsx(Button, {
473
- type: "button",
474
- variant: "ghost",
475
- size: "icon-sm",
476
- className: "relative after:absolute after:-inset-1",
477
- onClick: () => handleRemove(index_0),
478
- disabled,
479
- title: t("common.remove"),
480
- "aria-label": t("field.removeItem"),
481
- children: /* @__PURE__ */ jsx(Icon, {
482
- icon: "ph:trash",
483
- className: "size-3.5"
484
- })
485
- })
486
- ]
487
- }, field.id);
488
- });
489
- $[58] = canRemove;
490
- $[59] = disabled;
491
- $[60] = emptyLabel;
492
- $[61] = fields;
493
- $[62] = handleMove;
494
- $[63] = handleRemove;
495
- $[64] = itemType;
496
- $[65] = name;
497
- $[66] = options;
498
- $[67] = orderable;
499
- $[68] = readOnly;
500
- $[69] = resolvedPlaceholder;
501
- $[70] = t;
502
- $[71] = values;
503
- $[72] = t13;
504
- } else t13 = $[72];
505
- let t14;
506
- if ($[73] !== t13) {
507
- t14 = /* @__PURE__ */ jsx("div", {
508
- className: "space-y-2",
509
- children: t13
510
- });
511
- $[73] = t13;
512
- $[74] = t14;
513
- } else t14 = $[74];
514
- let t15;
515
- if ($[75] !== addLabel || $[76] !== canAddMore || $[77] !== disabled || $[78] !== handleAdd || $[79] !== readOnly) {
516
- t15 = !readOnly && canAddMore && /* @__PURE__ */ jsxs(Button, {
517
- type: "button",
518
- variant: "outline",
519
- onClick: handleAdd,
520
- disabled,
521
- children: [/* @__PURE__ */ jsx(Icon, {
522
- icon: "ph:plus",
523
- className: "h-4 w-4"
524
- }), addLabel]
525
- });
526
- $[75] = addLabel;
527
- $[76] = canAddMore;
528
- $[77] = disabled;
529
- $[78] = handleAdd;
530
- $[79] = readOnly;
531
- $[80] = t15;
532
- } else t15 = $[80];
533
- let t16;
534
- if ($[81] !== error) {
535
- t16 = error && /* @__PURE__ */ jsx("p", {
536
- className: "text-destructive text-sm text-pretty",
537
- children: error
538
- });
539
- $[81] = error;
540
- $[82] = t16;
541
- } else t16 = $[82];
542
- let t17;
543
- if ($[83] !== t11 || $[84] !== t12 || $[85] !== t14 || $[86] !== t15 || $[87] !== t16) {
544
- t17 = /* @__PURE__ */ jsxs("div", {
545
- className: "qa-array-field space-y-2",
546
- children: [
547
- t11,
548
- t12,
549
- t14,
550
- t15,
551
- t16
552
- ]
553
- });
554
- $[83] = t11;
555
- $[84] = t12;
556
- $[85] = t14;
557
- $[86] = t15;
558
- $[87] = t16;
559
- $[88] = t17;
560
- } else t17 = $[88];
561
- return t17;
248
+ ]
249
+ });
562
250
  }
563
251
 
564
252
  //#endregion