@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
@@ -9,9 +9,8 @@ import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "./
9
9
  import { Skeleton } from "./ui/skeleton.mjs";
10
10
  import { EmptyState } from "./ui/empty-state.mjs";
11
11
  import { ScrollFade } from "./ui/scroll-fade.mjs";
12
- import { c } from "react/compiler-runtime";
13
12
  import { Icon } from "@iconify/react";
14
- import "react";
13
+ import * as React from "react";
15
14
  import { jsx, jsxs } from "react/jsx-runtime";
16
15
 
17
16
  //#region src/client/components/history-sidebar.tsx
@@ -245,38 +244,20 @@ function formatFieldValue({ field, value, t, locale, resolveText }) {
245
244
  }
246
245
  return { summary: String(value) };
247
246
  }
248
- function ValuePreview(t0) {
249
- const $ = c(13);
250
- const { field, value, t, locale, resolveText } = t0;
251
- let t1;
252
- if ($[0] !== field || $[1] !== locale || $[2] !== resolveText || $[3] !== t || $[4] !== value) {
253
- t1 = formatFieldValue({
254
- field,
255
- value,
256
- t,
257
- locale,
258
- resolveText
259
- });
260
- $[0] = field;
261
- $[1] = locale;
262
- $[2] = resolveText;
263
- $[3] = t;
264
- $[4] = value;
265
- $[5] = t1;
266
- } else t1 = $[5];
267
- const formatted = t1;
268
- let t2;
269
- if ($[6] !== formatted.summary) {
270
- t2 = /* @__PURE__ */ jsx("div", {
247
+ function ValuePreview({ field, value, t, locale, resolveText }) {
248
+ const formatted = formatFieldValue({
249
+ field,
250
+ value,
251
+ t,
252
+ locale,
253
+ resolveText
254
+ });
255
+ return /* @__PURE__ */ jsxs("div", {
256
+ className: "min-w-0 space-y-2",
257
+ children: [/* @__PURE__ */ jsx("div", {
271
258
  className: "text-foreground text-xs leading-relaxed text-pretty break-words",
272
259
  children: formatted.summary
273
- });
274
- $[6] = formatted.summary;
275
- $[7] = t2;
276
- } else t2 = $[7];
277
- let t3;
278
- if ($[8] !== formatted.detail) {
279
- t3 = formatted.detail && /* @__PURE__ */ jsx(ScrollFade, {
260
+ }), formatted.detail && /* @__PURE__ */ jsx(ScrollFade, {
280
261
  orientation: "both",
281
262
  fadeSize: 16,
282
263
  children: /* @__PURE__ */ jsx("pre", {
@@ -284,21 +265,8 @@ function ValuePreview(t0) {
284
265
  className: "control-surface text-muted-foreground h-auto max-h-36 overflow-auto p-2 font-mono text-[0.6875rem] leading-relaxed whitespace-pre-wrap",
285
266
  children: formatted.detail
286
267
  })
287
- });
288
- $[8] = formatted.detail;
289
- $[9] = t3;
290
- } else t3 = $[9];
291
- let t4;
292
- if ($[10] !== t2 || $[11] !== t3) {
293
- t4 = /* @__PURE__ */ jsxs("div", {
294
- className: "min-w-0 space-y-2",
295
- children: [t2, t3]
296
- });
297
- $[10] = t2;
298
- $[11] = t3;
299
- $[12] = t4;
300
- } else t4 = $[12];
301
- return t4;
268
+ })]
269
+ });
302
270
  }
303
271
  function getDiffKind(from, to) {
304
272
  if (isEmptyValue(from) && !isEmptyValue(to)) return "added";
@@ -324,61 +292,27 @@ function getDiffKindConfig(kind) {
324
292
  };
325
293
  }
326
294
  }
327
- function VersionDiffPanel(t0) {
328
- const $ = c(26);
329
- const { previousVersion, changes, fields } = t0;
295
+ function VersionDiffPanel({ previousVersion, changes, fields }) {
330
296
  const { t, locale } = useTranslation();
331
297
  const resolveText = useResolveText();
332
298
  const previousNumber = previousVersion?.versionNumber;
333
- if (changes.length === 0) {
334
- let t1$1;
335
- if ($[0] !== t) {
336
- t1$1 = t("history.noFieldChanges");
337
- $[0] = t;
338
- $[1] = t1$1;
339
- } else t1$1 = $[1];
340
- let t2$1;
341
- if ($[2] !== t1$1) {
342
- t2$1 = /* @__PURE__ */ jsx(EmptyState, {
343
- title: t1$1,
344
- iconName: "ph:git-diff",
345
- height: "h-32",
346
- className: "panel-surface"
347
- });
348
- $[2] = t1$1;
349
- $[3] = t2$1;
350
- } else t2$1 = $[3];
351
- return t2$1;
352
- }
353
- let t1;
354
- if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
355
- t1 = /* @__PURE__ */ jsx(Icon, {
356
- icon: "ph:git-diff",
357
- className: "size-3.5"
358
- });
359
- $[4] = t1;
360
- } else t1 = $[4];
361
- let t2;
362
- if ($[5] !== previousNumber || $[6] !== t) {
363
- t2 = previousNumber ? t("history.diffAgainstVersion", { number: previousNumber }) : t("history.initialSnapshot");
364
- $[5] = previousNumber;
365
- $[6] = t;
366
- $[7] = t2;
367
- } else t2 = $[7];
368
- let t3;
369
- if ($[8] !== t2) {
370
- t3 = /* @__PURE__ */ jsxs("div", {
299
+ if (changes.length === 0) return /* @__PURE__ */ jsx(EmptyState, {
300
+ title: t("history.noFieldChanges"),
301
+ iconName: "ph:git-diff",
302
+ height: "h-32",
303
+ className: "panel-surface"
304
+ });
305
+ return /* @__PURE__ */ jsxs("div", {
306
+ className: "space-y-3",
307
+ children: [/* @__PURE__ */ jsxs("div", {
371
308
  className: "text-muted-foreground flex items-center gap-2 text-xs text-pretty",
372
- children: [t1, /* @__PURE__ */ jsx("span", { children: t2 })]
373
- });
374
- $[8] = t2;
375
- $[9] = t3;
376
- } else t3 = $[9];
377
- let t4;
378
- if ($[10] !== changes || $[11] !== fields || $[12] !== locale || $[13] !== resolveText || $[14] !== t) {
379
- let t5$1;
380
- if ($[16] !== fields || $[17] !== locale || $[18] !== resolveText || $[19] !== t) {
381
- t5$1 = (change) => {
309
+ children: [/* @__PURE__ */ jsx(Icon, {
310
+ icon: "ph:git-diff",
311
+ className: "size-3.5"
312
+ }), /* @__PURE__ */ jsx("span", { children: previousNumber ? t("history.diffAgainstVersion", { number: previousNumber }) : t("history.initialSnapshot") })]
313
+ }), /* @__PURE__ */ jsx("div", {
314
+ className: "space-y-2",
315
+ children: changes.map((change) => {
382
316
  const field = fields?.[change.name];
383
317
  const kind = getDiffKindConfig(change.kind);
384
318
  return /* @__PURE__ */ jsxs("div", {
@@ -459,430 +393,244 @@ function VersionDiffPanel(t0) {
459
393
  })
460
394
  ]
461
395
  }, change.name);
462
- };
463
- $[16] = fields;
464
- $[17] = locale;
465
- $[18] = resolveText;
466
- $[19] = t;
467
- $[20] = t5$1;
468
- } else t5$1 = $[20];
469
- t4 = changes.map(t5$1);
470
- $[10] = changes;
471
- $[11] = fields;
472
- $[12] = locale;
473
- $[13] = resolveText;
474
- $[14] = t;
475
- $[15] = t4;
476
- } else t4 = $[15];
477
- let t5;
478
- if ($[21] !== t4) {
479
- t5 = /* @__PURE__ */ jsx("div", {
480
- className: "space-y-2",
481
- children: t4
482
- });
483
- $[21] = t4;
484
- $[22] = t5;
485
- } else t5 = $[22];
486
- let t6;
487
- if ($[23] !== t3 || $[24] !== t5) {
488
- t6 = /* @__PURE__ */ jsxs("div", {
489
- className: "space-y-3",
490
- children: [t3, t5]
491
- });
492
- $[23] = t3;
493
- $[24] = t5;
494
- $[25] = t6;
495
- } else t6 = $[25];
496
- return t6;
497
- }
498
- function HistoryListSkeleton(t0) {
499
- const $ = c(2);
500
- const { rows: t1 } = t0;
501
- const rows = t1 === void 0 ? 4 : t1;
502
- let t2;
503
- if ($[0] !== rows) {
504
- t2 = /* @__PURE__ */ jsx("div", {
505
- className: "space-y-4 py-2",
506
- "aria-busy": "true",
507
- children: Array.from({ length: rows }, _temp)
508
- });
509
- $[0] = rows;
510
- $[1] = t2;
511
- } else t2 = $[1];
512
- return t2;
396
+ })
397
+ })]
398
+ });
513
399
  }
514
- function _temp(_, index) {
515
- return /* @__PURE__ */ jsxs("div", {
516
- className: "flex gap-3",
517
- children: [/* @__PURE__ */ jsx(Skeleton, { className: "mt-1 size-7 shrink-0 rounded-full" }), /* @__PURE__ */ jsxs("div", {
518
- className: "min-w-0 flex-1 space-y-2",
519
- children: [/* @__PURE__ */ jsx(Skeleton, {
520
- variant: "text",
521
- className: "h-4 w-28"
522
- }), /* @__PURE__ */ jsx(Skeleton, {
523
- variant: "text",
524
- className: "h-3 w-40"
400
+ function HistoryListSkeleton({ rows = 4 }) {
401
+ return /* @__PURE__ */ jsx("div", {
402
+ className: "space-y-4 py-2",
403
+ "aria-busy": "true",
404
+ children: Array.from({ length: rows }, (_, index) => /* @__PURE__ */ jsxs("div", {
405
+ className: "flex gap-3",
406
+ children: [/* @__PURE__ */ jsx(Skeleton, { className: "mt-1 size-7 shrink-0 rounded-full" }), /* @__PURE__ */ jsxs("div", {
407
+ className: "min-w-0 flex-1 space-y-2",
408
+ children: [/* @__PURE__ */ jsx(Skeleton, {
409
+ variant: "text",
410
+ className: "h-4 w-28"
411
+ }), /* @__PURE__ */ jsx(Skeleton, {
412
+ variant: "text",
413
+ className: "h-3 w-40"
414
+ })]
525
415
  })]
526
- })]
527
- }, index);
416
+ }, index))
417
+ });
528
418
  }
529
- function ActivityTimeline(t0) {
530
- const $ = c(13);
531
- const { entries, isLoading } = t0;
419
+ function ActivityTimeline({ entries, isLoading }) {
532
420
  const { locale, t } = useTranslation();
533
- if (isLoading) {
534
- let t1$1;
535
- if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
536
- t1$1 = /* @__PURE__ */ jsx(HistoryListSkeleton, {});
537
- $[0] = t1$1;
538
- } else t1$1 = $[0];
539
- return t1$1;
540
- }
541
- if (entries.length === 0) {
542
- let t1$1;
543
- if ($[1] !== t) {
544
- t1$1 = t("history.empty");
545
- $[1] = t;
546
- $[2] = t1$1;
547
- } else t1$1 = $[2];
548
- let t2$1;
549
- if ($[3] !== t1$1) {
550
- t2$1 = /* @__PURE__ */ jsx(EmptyState, {
551
- title: t1$1,
552
- iconName: "ph:clock-counter-clockwise",
553
- height: "h-48"
554
- });
555
- $[3] = t1$1;
556
- $[4] = t2$1;
557
- } else t2$1 = $[4];
558
- return t2$1;
559
- }
560
- let t1;
561
- if ($[5] !== entries || $[6] !== locale) {
562
- let t2$1;
563
- if ($[8] !== entries.length || $[9] !== locale) {
564
- t2$1 = (entry, index) => {
565
- const config = getActionConfig(entry.action);
566
- const date = new Date(entry.createdAt);
567
- const isLast = index === entries.length - 1;
568
- return /* @__PURE__ */ jsxs("div", {
569
- className: "flex gap-3",
570
- children: [/* @__PURE__ */ jsxs("div", {
571
- className: "flex flex-col items-center",
572
- children: [/* @__PURE__ */ jsx("div", { className: `mt-1.5 size-2.5 shrink-0 rounded-full ${config.color}` }), !isLast && /* @__PURE__ */ jsx("div", { className: "bg-border min-h-4 w-px flex-1" })]
573
- }), /* @__PURE__ */ jsx("div", {
574
- className: "min-w-0 flex-1 pb-4",
575
- children: /* @__PURE__ */ jsxs("div", {
576
- className: "flex items-start justify-between gap-2",
577
- children: [/* @__PURE__ */ jsx("p", {
578
- className: "text-sm leading-snug",
579
- children: entry.title
580
- }), /* @__PURE__ */ jsx("span", {
581
- className: "text-muted-foreground shrink-0 text-xs whitespace-nowrap",
582
- children: formatRelativeTime(date, locale)
583
- })]
584
- })
585
- })]
586
- }, entry.id);
587
- };
588
- $[8] = entries.length;
589
- $[9] = locale;
590
- $[10] = t2$1;
591
- } else t2$1 = $[10];
592
- t1 = entries.map(t2$1);
593
- $[5] = entries;
594
- $[6] = locale;
595
- $[7] = t1;
596
- } else t1 = $[7];
597
- let t2;
598
- if ($[11] !== t1) {
599
- t2 = /* @__PURE__ */ jsx("div", {
600
- className: "space-y-0",
601
- children: t1
602
- });
603
- $[11] = t1;
604
- $[12] = t2;
605
- } else t2 = $[12];
606
- return t2;
421
+ if (isLoading) return /* @__PURE__ */ jsx(HistoryListSkeleton, {});
422
+ if (entries.length === 0) return /* @__PURE__ */ jsx(EmptyState, {
423
+ title: t("history.empty"),
424
+ iconName: "ph:clock-counter-clockwise",
425
+ height: "h-48"
426
+ });
427
+ return /* @__PURE__ */ jsx("div", {
428
+ className: "space-y-0",
429
+ children: entries.map((entry, index) => {
430
+ const config = getActionConfig(entry.action);
431
+ const date = new Date(entry.createdAt);
432
+ const isLast = index === entries.length - 1;
433
+ return /* @__PURE__ */ jsxs("div", {
434
+ className: "flex gap-3",
435
+ children: [/* @__PURE__ */ jsxs("div", {
436
+ className: "flex flex-col items-center",
437
+ children: [/* @__PURE__ */ jsx("div", { className: `mt-1.5 size-2.5 shrink-0 rounded-full ${config.color}` }), !isLast && /* @__PURE__ */ jsx("div", { className: "bg-border min-h-4 w-px flex-1" })]
438
+ }), /* @__PURE__ */ jsx("div", {
439
+ className: "min-w-0 flex-1 pb-4",
440
+ children: /* @__PURE__ */ jsxs("div", {
441
+ className: "flex items-start justify-between gap-2",
442
+ children: [/* @__PURE__ */ jsx("p", {
443
+ className: "text-sm leading-snug",
444
+ children: entry.title
445
+ }), /* @__PURE__ */ jsx("span", {
446
+ className: "text-muted-foreground shrink-0 text-xs whitespace-nowrap",
447
+ children: formatRelativeTime(date, locale)
448
+ })]
449
+ })
450
+ })]
451
+ }, entry.id);
452
+ })
453
+ });
607
454
  }
608
- function VersionsList(t0) {
609
- const $ = c(41);
610
- const { versions, fields, isLoading, isReverting, onRevert } = t0;
455
+ function VersionsList({ versions, fields, isLoading, isReverting, onRevert }) {
611
456
  const { formatDate, locale, t } = useTranslation();
612
457
  const resolveText = useResolveText();
613
- let t1;
614
- if ($[0] !== versions) {
615
- t1 = versions.slice().sort(_temp2);
616
- $[0] = versions;
617
- $[1] = t1;
618
- } else t1 = $[1];
619
- const sortedAscVersions = t1;
620
- let t2;
621
- if ($[2] !== versions) {
622
- t2 = versions.slice().sort(_temp3);
623
- $[2] = versions;
624
- $[3] = t2;
625
- } else t2 = $[3];
626
- const sortedVersions = t2;
627
- let t3;
628
- bb0: {
629
- if (fields && Object.keys(fields).length > 0) {
630
- t3 = fields;
631
- break bb0;
458
+ const sortedAscVersions = React.useMemo(() => {
459
+ return versions.slice().sort((a, b) => {
460
+ return (a.versionNumber ?? 0) - (b.versionNumber ?? 0);
461
+ });
462
+ }, [versions]);
463
+ const sortedVersions = React.useMemo(() => versions.slice().sort((a, b) => {
464
+ const aNum = a.versionNumber ?? 0;
465
+ return (b.versionNumber ?? 0) - aNum;
466
+ }), [versions]);
467
+ const fieldsForDiff = React.useMemo(() => {
468
+ if (fields && Object.keys(fields).length > 0) return fields;
469
+ const inferred = {};
470
+ for (const version of versions) for (const key of Object.keys(version)) {
471
+ if (VERSION_META_KEYS.has(key)) continue;
472
+ inferred[key] = {
473
+ name: key,
474
+ metadata: {
475
+ type: "unknown",
476
+ label: formatLabel(key)
477
+ }
478
+ };
632
479
  }
633
- let inferred;
634
- if ($[4] !== versions) {
635
- inferred = {};
636
- for (const version of versions) for (const key of Object.keys(version)) {
637
- if (VERSION_META_KEYS.has(key)) continue;
638
- inferred[key] = {
639
- name: key,
640
- metadata: {
641
- type: "unknown",
642
- label: formatLabel(key)
643
- }
644
- };
645
- }
646
- $[4] = versions;
647
- $[5] = inferred;
648
- } else inferred = $[5];
649
- t3 = inferred;
650
- }
651
- const fieldsForDiff = t3;
652
- let byKey;
653
- if ($[6] !== fieldsForDiff || $[7] !== resolveText || $[8] !== sortedAscVersions) {
654
- byKey = /* @__PURE__ */ new Map();
655
- for (let index = 0; index < sortedAscVersions.length; index = index + 1) {
656
- const version_0 = sortedAscVersions[index];
480
+ return inferred;
481
+ }, [fields, versions]);
482
+ const versionDetails = React.useMemo(() => {
483
+ const byKey = /* @__PURE__ */ new Map();
484
+ for (let index = 0; index < sortedAscVersions.length; index += 1) {
485
+ const version = sortedAscVersions[index];
657
486
  const previousVersion = sortedAscVersions[index - 1];
658
- const key_0 = getVersionKey(version_0, index);
659
- byKey.set(key_0, {
660
- key: key_0,
487
+ const key = getVersionKey(version, index);
488
+ byKey.set(key, {
489
+ key,
661
490
  previousVersion,
662
491
  changes: buildVersionDiff({
663
- version: version_0,
492
+ version,
664
493
  previousVersion,
665
494
  fields: fieldsForDiff,
666
495
  resolveText
667
496
  })
668
497
  });
669
498
  }
670
- $[6] = fieldsForDiff;
671
- $[7] = resolveText;
672
- $[8] = sortedAscVersions;
673
- $[9] = byKey;
674
- } else byKey = $[9];
675
- const versionDetails = byKey;
676
- let t4;
677
- if ($[10] !== t) {
678
- t4 = function operationLabel$1(operation) {
679
- switch (operation) {
680
- case "create": return t("version.operationCreate");
681
- case "delete": return t("version.operationDelete");
682
- case "update": return t("version.operationUpdate");
683
- default: return operation || t("version.operationUnknown");
684
- }
685
- };
686
- $[10] = t;
687
- $[11] = t4;
688
- } else t4 = $[11];
689
- const operationLabel = t4;
690
- let t5;
691
- if ($[12] !== formatDate) {
692
- t5 = (value) => {
693
- if (!value) return "-";
694
- const date = new Date(value);
695
- if (Number.isNaN(date.getTime())) return "-";
696
- return formatDate(date, {
697
- dateStyle: "medium",
698
- timeStyle: "short"
699
- });
700
- };
701
- $[12] = formatDate;
702
- $[13] = t5;
703
- } else t5 = $[13];
704
- const formatDateTime = t5;
705
- if (isLoading) {
706
- let t6$1;
707
- if ($[14] === Symbol.for("react.memo_cache_sentinel")) {
708
- t6$1 = /* @__PURE__ */ jsx(HistoryListSkeleton, {});
709
- $[14] = t6$1;
710
- } else t6$1 = $[14];
711
- return t6$1;
712
- }
713
- if (sortedVersions.length === 0) {
714
- let t6$1;
715
- if ($[15] !== t) {
716
- t6$1 = t("version.empty");
717
- $[15] = t;
718
- $[16] = t6$1;
719
- } else t6$1 = $[16];
720
- let t7$1;
721
- if ($[17] !== t6$1) {
722
- t7$1 = /* @__PURE__ */ jsx(EmptyState, {
723
- title: t6$1,
724
- iconName: "ph:clock-counter-clockwise",
725
- height: "h-48"
726
- });
727
- $[17] = t6$1;
728
- $[18] = t7$1;
729
- } else t7$1 = $[18];
730
- return t7$1;
499
+ return byKey;
500
+ }, [
501
+ fieldsForDiff,
502
+ resolveText,
503
+ sortedAscVersions
504
+ ]);
505
+ function operationLabel(operation) {
506
+ switch (operation) {
507
+ case "create": return t("version.operationCreate");
508
+ case "delete": return t("version.operationDelete");
509
+ case "update": return t("version.operationUpdate");
510
+ default: return operation || t("version.operationUnknown");
511
+ }
731
512
  }
732
- let t6;
733
- if ($[19] === Symbol.for("react.memo_cache_sentinel")) {
734
- t6 = [];
735
- $[19] = t6;
736
- } else t6 = $[19];
737
- let t7;
738
- if ($[20] !== fieldsForDiff || $[21] !== formatDateTime || $[22] !== isReverting || $[23] !== locale || $[24] !== onRevert || $[25] !== operationLabel || $[26] !== sortedVersions || $[27] !== t || $[28] !== versionDetails) {
739
- let t8$1;
740
- if ($[30] !== fieldsForDiff || $[31] !== formatDateTime || $[32] !== isReverting || $[33] !== locale || $[34] !== onRevert || $[35] !== operationLabel || $[36] !== t || $[37] !== versionDetails) {
741
- t8$1 = (version_1, index_0) => {
742
- const key_1 = getVersionKey(version_1, index_0);
743
- const details = versionDetails.get(key_1);
744
- const changes = details?.changes ?? [];
745
- const visibleChangedFields = changes.slice(0, 3);
746
- const remainingChangedFields = Math.max(0, changes.length - visibleChangedFields.length);
747
- const changedPreview = visibleChangedFields.map(_temp4).join(", ");
748
- const date_0 = version_1.versionCreatedAt ? new Date(version_1.versionCreatedAt) : null;
749
- const canRevert = typeof version_1.versionId === "string" || typeof version_1.versionNumber === "number";
750
- const action = getActionConfig(version_1.versionOperation ?? "");
751
- return /* @__PURE__ */ jsxs(AccordionItem, {
752
- value: key_1,
753
- className: "px-0",
754
- children: [/* @__PURE__ */ jsx(AccordionTrigger, {
755
- className: "min-h-20 items-start px-3 py-3 hover:no-underline",
756
- children: /* @__PURE__ */ jsxs("div", {
757
- className: "flex min-w-0 flex-1 flex-col gap-2",
758
- children: [
759
- /* @__PURE__ */ jsxs("div", {
760
- className: "flex flex-wrap items-center gap-2",
761
- children: [
762
- /* @__PURE__ */ jsx(Badge, {
763
- variant: "secondary",
764
- className: "tabular-nums",
765
- children: t("version.label", { number: version_1.versionNumber ?? "-" })
766
- }),
767
- /* @__PURE__ */ jsxs(Badge, {
768
- variant: "outline",
769
- className: cn(action.badge),
770
- children: [/* @__PURE__ */ jsx(Icon, {
771
- icon: action.icon,
772
- className: "size-2.5"
773
- }), operationLabel(version_1.versionOperation)]
774
- }),
775
- version_1.versionStage && /* @__PURE__ */ jsxs(Badge, {
776
- variant: "outline",
777
- children: [
778
- t("history.stage"),
779
- ": ",
780
- version_1.versionStage
781
- ]
782
- }),
783
- /* @__PURE__ */ jsx(Badge, {
784
- variant: "outline",
785
- className: "tabular-nums",
786
- children: t("history.changedFields", { count: changes.length })
787
- })
788
- ]
789
- }),
790
- /* @__PURE__ */ jsxs("div", {
791
- className: "text-muted-foreground flex flex-wrap items-center gap-x-3 gap-y-1 text-xs",
792
- children: [
793
- /* @__PURE__ */ jsx("span", {
794
- className: "tabular-nums",
795
- children: date_0 ? formatDateTime(version_1.versionCreatedAt) : "-"
796
- }),
797
- date_0 && /* @__PURE__ */ jsx("span", {
798
- className: "tabular-nums",
799
- children: formatRelativeTime(date_0, locale)
800
- }),
801
- /* @__PURE__ */ jsxs("span", { children: [
802
- t("version.user"),
803
- ":",
804
- " ",
805
- version_1.versionUserId || t("history.systemUser")
806
- ] })
807
- ]
808
- }),
809
- /* @__PURE__ */ jsxs("p", {
810
- className: "text-muted-foreground truncate text-xs text-pretty",
811
- children: [changedPreview || t("history.noFieldChanges"), remainingChangedFields > 0 && ` + ${t("history.moreFields", { count: remainingChangedFields })}`]
812
- })
813
- ]
814
- })
815
- }), /* @__PURE__ */ jsxs(AccordionContent, {
816
- className: "px-3 pt-0 pb-3",
513
+ const formatDateTime = (value) => {
514
+ if (!value) return "-";
515
+ const date = new Date(value);
516
+ if (Number.isNaN(date.getTime())) return "-";
517
+ return formatDate(date, {
518
+ dateStyle: "medium",
519
+ timeStyle: "short"
520
+ });
521
+ };
522
+ if (isLoading) return /* @__PURE__ */ jsx(HistoryListSkeleton, {});
523
+ if (sortedVersions.length === 0) return /* @__PURE__ */ jsx(EmptyState, {
524
+ title: t("version.empty"),
525
+ iconName: "ph:clock-counter-clockwise",
526
+ height: "h-48"
527
+ });
528
+ return /* @__PURE__ */ jsx(Accordion, {
529
+ defaultValue: [],
530
+ className: "panel-surface bg-card",
531
+ children: sortedVersions.map((version, index) => {
532
+ const key = getVersionKey(version, index);
533
+ const details = versionDetails.get(key);
534
+ const changes = details?.changes ?? [];
535
+ const visibleChangedFields = changes.slice(0, 3);
536
+ const remainingChangedFields = Math.max(0, changes.length - visibleChangedFields.length);
537
+ const changedPreview = visibleChangedFields.map((change) => change.label).join(", ");
538
+ const date = version.versionCreatedAt ? new Date(version.versionCreatedAt) : null;
539
+ const canRevert = typeof version.versionId === "string" || typeof version.versionNumber === "number";
540
+ const action = getActionConfig(version.versionOperation ?? "");
541
+ return /* @__PURE__ */ jsxs(AccordionItem, {
542
+ value: key,
543
+ className: "px-0",
544
+ children: [/* @__PURE__ */ jsx(AccordionTrigger, {
545
+ className: "min-h-20 items-start px-3 py-3 hover:no-underline",
546
+ children: /* @__PURE__ */ jsxs("div", {
547
+ className: "flex min-w-0 flex-1 flex-col gap-2",
817
548
  children: [
818
- /* @__PURE__ */ jsx(Separator, { className: "mb-3" }),
819
- /* @__PURE__ */ jsx("div", {
820
- className: "space-y-3",
821
- children: /* @__PURE__ */ jsx(VersionDiffPanel, {
822
- previousVersion: details?.previousVersion,
823
- changes,
824
- fields: fieldsForDiff
825
- })
549
+ /* @__PURE__ */ jsxs("div", {
550
+ className: "flex flex-wrap items-center gap-2",
551
+ children: [
552
+ /* @__PURE__ */ jsx(Badge, {
553
+ variant: "secondary",
554
+ className: "tabular-nums",
555
+ children: t("version.label", { number: version.versionNumber ?? "-" })
556
+ }),
557
+ /* @__PURE__ */ jsxs(Badge, {
558
+ variant: "outline",
559
+ className: cn(action.badge),
560
+ children: [/* @__PURE__ */ jsx(Icon, {
561
+ icon: action.icon,
562
+ className: "size-2.5"
563
+ }), operationLabel(version.versionOperation)]
564
+ }),
565
+ version.versionStage && /* @__PURE__ */ jsxs(Badge, {
566
+ variant: "outline",
567
+ children: [
568
+ t("history.stage"),
569
+ ": ",
570
+ version.versionStage
571
+ ]
572
+ }),
573
+ /* @__PURE__ */ jsx(Badge, {
574
+ variant: "outline",
575
+ className: "tabular-nums",
576
+ children: t("history.changedFields", { count: changes.length })
577
+ })
578
+ ]
826
579
  }),
827
- onRevert && /* @__PURE__ */ jsx("div", {
828
- className: "mt-3 flex justify-end",
829
- children: /* @__PURE__ */ jsx(Button, {
830
- variant: "outline",
831
- size: "sm",
832
- disabled: !canRevert || isReverting,
833
- onClick: () => {
834
- onRevert(version_1);
835
- },
836
- children: t("version.revert")
837
- })
580
+ /* @__PURE__ */ jsxs("div", {
581
+ className: "text-muted-foreground flex flex-wrap items-center gap-x-3 gap-y-1 text-xs",
582
+ children: [
583
+ /* @__PURE__ */ jsx("span", {
584
+ className: "tabular-nums",
585
+ children: date ? formatDateTime(version.versionCreatedAt) : "-"
586
+ }),
587
+ date && /* @__PURE__ */ jsx("span", {
588
+ className: "tabular-nums",
589
+ children: formatRelativeTime(date, locale)
590
+ }),
591
+ /* @__PURE__ */ jsxs("span", { children: [
592
+ t("version.user"),
593
+ ":",
594
+ " ",
595
+ version.versionUserId || t("history.systemUser")
596
+ ] })
597
+ ]
598
+ }),
599
+ /* @__PURE__ */ jsxs("p", {
600
+ className: "text-muted-foreground truncate text-xs text-pretty",
601
+ children: [changedPreview || t("history.noFieldChanges"), remainingChangedFields > 0 && ` + ${t("history.moreFields", { count: remainingChangedFields })}`]
838
602
  })
839
603
  ]
840
- })]
841
- }, key_1);
842
- };
843
- $[30] = fieldsForDiff;
844
- $[31] = formatDateTime;
845
- $[32] = isReverting;
846
- $[33] = locale;
847
- $[34] = onRevert;
848
- $[35] = operationLabel;
849
- $[36] = t;
850
- $[37] = versionDetails;
851
- $[38] = t8$1;
852
- } else t8$1 = $[38];
853
- t7 = sortedVersions.map(t8$1);
854
- $[20] = fieldsForDiff;
855
- $[21] = formatDateTime;
856
- $[22] = isReverting;
857
- $[23] = locale;
858
- $[24] = onRevert;
859
- $[25] = operationLabel;
860
- $[26] = sortedVersions;
861
- $[27] = t;
862
- $[28] = versionDetails;
863
- $[29] = t7;
864
- } else t7 = $[29];
865
- let t8;
866
- if ($[39] !== t7) {
867
- t8 = /* @__PURE__ */ jsx(Accordion, {
868
- defaultValue: t6,
869
- className: "panel-surface bg-card",
870
- children: t7
871
- });
872
- $[39] = t7;
873
- $[40] = t8;
874
- } else t8 = $[40];
875
- return t8;
876
- }
877
- function _temp4(change) {
878
- return change.label;
879
- }
880
- function _temp3(a_0, b_0) {
881
- const aNum_0 = a_0.versionNumber ?? 0;
882
- return (b_0.versionNumber ?? 0) - aNum_0;
883
- }
884
- function _temp2(a, b) {
885
- return (a.versionNumber ?? 0) - (b.versionNumber ?? 0);
604
+ })
605
+ }), /* @__PURE__ */ jsxs(AccordionContent, {
606
+ className: "px-3 pt-0 pb-3",
607
+ children: [
608
+ /* @__PURE__ */ jsx(Separator, { className: "mb-3" }),
609
+ /* @__PURE__ */ jsx("div", {
610
+ className: "space-y-3",
611
+ children: /* @__PURE__ */ jsx(VersionDiffPanel, {
612
+ previousVersion: details?.previousVersion,
613
+ changes,
614
+ fields: fieldsForDiff
615
+ })
616
+ }),
617
+ onRevert && /* @__PURE__ */ jsx("div", {
618
+ className: "mt-3 flex justify-end",
619
+ children: /* @__PURE__ */ jsx(Button, {
620
+ variant: "outline",
621
+ size: "sm",
622
+ disabled: !canRevert || isReverting,
623
+ onClick: () => {
624
+ onRevert(version);
625
+ },
626
+ children: t("version.revert")
627
+ })
628
+ })
629
+ ]
630
+ })]
631
+ }, key);
632
+ })
633
+ });
886
634
  }
887
635
  function getVersionKey(version, index) {
888
636
  if (version.versionId) return version.versionId;
@@ -912,116 +660,48 @@ function buildVersionDiff({ version, previousVersion, fields, resolveText }) {
912
660
  }
913
661
  return changes;
914
662
  }
915
- function HistorySidebar(t0) {
916
- const $ = c(29);
917
- const { open, onOpenChange, auditEntries: t1, isLoadingAudit: t2, versions, fields, isLoadingVersions: t3, isReverting: t4, onRevert, showVersionsTab: t5 } = t0;
918
- const auditEntries = t1 === void 0 ? EMPTY_AUDIT_ENTRIES : t1;
919
- const isLoadingAudit = t2 === void 0 ? false : t2;
920
- const isLoadingVersions = t3 === void 0 ? false : t3;
921
- const isReverting = t4 === void 0 ? false : t4;
922
- const showVersionsTab = t5 === void 0 ? false : t5;
663
+ function HistorySidebar({ open, onOpenChange, auditEntries = EMPTY_AUDIT_ENTRIES, isLoadingAudit = false, versions, fields, isLoadingVersions = false, isReverting = false, onRevert, showVersionsTab = false }) {
923
664
  const { t } = useTranslation();
924
- let t6;
925
- if ($[0] !== showVersionsTab || $[1] !== t) {
926
- t6 = showVersionsTab ? t("version.history") : t("history.title");
927
- $[0] = showVersionsTab;
928
- $[1] = t;
929
- $[2] = t6;
930
- } else t6 = $[2];
931
- let t7;
932
- if ($[3] !== t6) {
933
- t7 = /* @__PURE__ */ jsx(SheetTitle, { children: t6 });
934
- $[3] = t6;
935
- $[4] = t7;
936
- } else t7 = $[4];
937
- let t8;
938
- if ($[5] !== showVersionsTab || $[6] !== t) {
939
- t8 = showVersionsTab ? t("history.versionDescription") : t("history.description");
940
- $[5] = showVersionsTab;
941
- $[6] = t;
942
- $[7] = t8;
943
- } else t8 = $[7];
944
- let t9;
945
- if ($[8] !== t8) {
946
- t9 = /* @__PURE__ */ jsx(SheetDescription, { children: t8 });
947
- $[8] = t8;
948
- $[9] = t9;
949
- } else t9 = $[9];
950
- let t10;
951
- if ($[10] !== t7 || $[11] !== t9) {
952
- t10 = /* @__PURE__ */ jsxs(SheetHeader, {
953
- className: "border-b px-6 py-5",
954
- children: [t7, t9]
955
- });
956
- $[10] = t7;
957
- $[11] = t9;
958
- $[12] = t10;
959
- } else t10 = $[12];
960
- let t11;
961
- if ($[13] !== auditEntries || $[14] !== fields || $[15] !== isLoadingAudit || $[16] !== isLoadingVersions || $[17] !== isReverting || $[18] !== onRevert || $[19] !== showVersionsTab || $[20] !== versions) {
962
- t11 = showVersionsTab ? /* @__PURE__ */ jsx(ScrollFade, {
963
- orientation: "vertical",
964
- className: "min-h-0 flex-1",
965
- children: /* @__PURE__ */ jsx("div", {
966
- "data-scroll-fade-target": true,
967
- className: "h-full overflow-y-auto px-6 py-4",
968
- children: /* @__PURE__ */ jsx(VersionsList, {
969
- versions: versions ?? [],
970
- fields,
971
- isLoading: isLoadingVersions,
972
- isReverting,
973
- onRevert
974
- })
975
- })
976
- }) : /* @__PURE__ */ jsx(ScrollFade, {
977
- orientation: "vertical",
978
- className: "min-h-0 flex-1",
979
- children: /* @__PURE__ */ jsx("div", {
980
- "data-scroll-fade-target": true,
981
- className: "h-full overflow-y-auto px-6 py-4",
982
- children: /* @__PURE__ */ jsx(ActivityTimeline, {
983
- entries: auditEntries,
984
- isLoading: isLoadingAudit
985
- })
986
- })
987
- });
988
- $[13] = auditEntries;
989
- $[14] = fields;
990
- $[15] = isLoadingAudit;
991
- $[16] = isLoadingVersions;
992
- $[17] = isReverting;
993
- $[18] = onRevert;
994
- $[19] = showVersionsTab;
995
- $[20] = versions;
996
- $[21] = t11;
997
- } else t11 = $[21];
998
- let t12;
999
- if ($[22] !== t10 || $[23] !== t11) {
1000
- t12 = /* @__PURE__ */ jsxs(SheetContent, {
665
+ return /* @__PURE__ */ jsx(Sheet, {
666
+ open,
667
+ onOpenChange,
668
+ modal: false,
669
+ children: /* @__PURE__ */ jsxs(SheetContent, {
1001
670
  side: "right",
1002
671
  animated: false,
1003
672
  showOverlay: false,
1004
673
  className: "qa-history-sidebar flex flex-col p-0 sm:max-w-2xl",
1005
- children: [t10, t11]
1006
- });
1007
- $[22] = t10;
1008
- $[23] = t11;
1009
- $[24] = t12;
1010
- } else t12 = $[24];
1011
- let t13;
1012
- if ($[25] !== onOpenChange || $[26] !== open || $[27] !== t12) {
1013
- t13 = /* @__PURE__ */ jsx(Sheet, {
1014
- open,
1015
- onOpenChange,
1016
- modal: false,
1017
- children: t12
1018
- });
1019
- $[25] = onOpenChange;
1020
- $[26] = open;
1021
- $[27] = t12;
1022
- $[28] = t13;
1023
- } else t13 = $[28];
1024
- return t13;
674
+ children: [/* @__PURE__ */ jsxs(SheetHeader, {
675
+ className: "border-b px-6 py-5",
676
+ children: [/* @__PURE__ */ jsx(SheetTitle, { children: showVersionsTab ? t("version.history") : t("history.title") }), /* @__PURE__ */ jsx(SheetDescription, { children: showVersionsTab ? t("history.versionDescription") : t("history.description") })]
677
+ }), showVersionsTab ? /* @__PURE__ */ jsx(ScrollFade, {
678
+ orientation: "vertical",
679
+ className: "min-h-0 flex-1",
680
+ children: /* @__PURE__ */ jsx("div", {
681
+ "data-scroll-fade-target": true,
682
+ className: "h-full overflow-y-auto px-6 py-4",
683
+ children: /* @__PURE__ */ jsx(VersionsList, {
684
+ versions: versions ?? [],
685
+ fields,
686
+ isLoading: isLoadingVersions,
687
+ isReverting,
688
+ onRevert
689
+ })
690
+ })
691
+ }) : /* @__PURE__ */ jsx(ScrollFade, {
692
+ orientation: "vertical",
693
+ className: "min-h-0 flex-1",
694
+ children: /* @__PURE__ */ jsx("div", {
695
+ "data-scroll-fade-target": true,
696
+ className: "h-full overflow-y-auto px-6 py-4",
697
+ children: /* @__PURE__ */ jsx(ActivityTimeline, {
698
+ entries: auditEntries,
699
+ isLoading: isLoadingAudit
700
+ })
701
+ })
702
+ })]
703
+ })
704
+ });
1025
705
  }
1026
706
 
1027
707
  //#endregion