@questpie/admin 3.2.4 → 3.2.5

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 (248) 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.mjs +40 -126
  8. package/dist/client/components/auth/auth-loading.mjs +9 -44
  9. package/dist/client/components/blocks/block-canvas.mjs +31 -95
  10. package/dist/client/components/blocks/block-editor-context.mjs +13 -57
  11. package/dist/client/components/blocks/block-editor-layout.mjs +72 -166
  12. package/dist/client/components/blocks/block-editor-provider.mjs +184 -245
  13. package/dist/client/components/blocks/block-fields-renderer.mjs +54 -229
  14. package/dist/client/components/blocks/block-insert-button.mjs +49 -165
  15. package/dist/client/components/blocks/block-item-menu.mjs +102 -301
  16. package/dist/client/components/blocks/block-item.mjs +136 -370
  17. package/dist/client/components/blocks/block-library-sidebar.mjs +103 -230
  18. package/dist/client/components/blocks/block-tree.mjs +12 -68
  19. package/dist/client/components/blocks/block-type-icon.mjs +14 -56
  20. package/dist/client/components/brand-logo.mjs +35 -149
  21. package/dist/client/components/component-renderer.mjs +42 -118
  22. package/dist/client/components/error-boundary.mjs +14 -58
  23. package/dist/client/components/fields/array-field.mjs +209 -521
  24. package/dist/client/components/fields/asset-preview-field.mjs +41 -141
  25. package/dist/client/components/fields/blocks-field/blocks-field.mjs +60 -156
  26. package/dist/client/components/fields/boolean-field.mjs +29 -59
  27. package/dist/client/components/fields/date-field.mjs +7 -37
  28. package/dist/client/components/fields/datetime-field.mjs +7 -38
  29. package/dist/client/components/fields/email-field.mjs +25 -54
  30. package/dist/client/components/fields/field-wrapper.mjs +30 -105
  31. package/dist/client/components/fields/json-field.mjs +94 -296
  32. package/dist/client/components/fields/locale-badge.mjs +6 -15
  33. package/dist/client/components/fields/number-field.mjs +27 -60
  34. package/dist/client/components/fields/object-array-field.mjs +283 -659
  35. package/dist/client/components/fields/object-field.mjs +165 -633
  36. package/dist/client/components/fields/relation/displays/cards-display.mjs +106 -220
  37. package/dist/client/components/fields/relation/displays/chips-display.mjs +78 -150
  38. package/dist/client/components/fields/relation/displays/grid-display.mjs +92 -186
  39. package/dist/client/components/fields/relation/displays/list-display.mjs +122 -239
  40. package/dist/client/components/fields/relation/displays/table-display.mjs +70 -244
  41. package/dist/client/components/fields/relation/relation-items-display.mjs +30 -126
  42. package/dist/client/components/fields/relation-field.mjs +10 -66
  43. package/dist/client/components/fields/relation-picker.mjs +18 -18
  44. package/dist/client/components/fields/relation-select.mjs +12 -12
  45. package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs +80 -180
  46. package/dist/client/components/fields/rich-text-editor/image-popover.mjs +2 -2
  47. package/dist/client/components/fields/rich-text-editor/image-upload.mjs +13 -29
  48. package/dist/client/components/fields/rich-text-editor/index.mjs +195 -513
  49. package/dist/client/components/fields/rich-text-editor/slash-commands.mjs +61 -111
  50. package/dist/client/components/fields/rich-text-editor/table-controls.mjs +105 -415
  51. package/dist/client/components/fields/rich-text-editor/toolbar.mjs +256 -511
  52. package/dist/client/components/fields/rich-text-field.mjs +14 -53
  53. package/dist/client/components/fields/select-field.mjs +39 -74
  54. package/dist/client/components/fields/text-field.mjs +26 -59
  55. package/dist/client/components/fields/textarea-field.mjs +26 -58
  56. package/dist/client/components/fields/time-field.mjs +7 -35
  57. package/dist/client/components/fields/upload-field.mjs +47 -165
  58. package/dist/client/components/filter-builder/columns-tab.mjs +80 -280
  59. package/dist/client/components/filter-builder/filter-builder-sheet.mjs +197 -540
  60. package/dist/client/components/filter-builder/filters-tab.mjs +96 -386
  61. package/dist/client/components/filter-builder/saved-views-tab.mjs +133 -351
  62. package/dist/client/components/history-sidebar.mjs +285 -605
  63. package/dist/client/components/layout/field-layout-renderer.mjs +106 -254
  64. package/dist/client/components/locale-switcher.mjs +106 -228
  65. package/dist/client/components/media/media-grid.mjs +84 -273
  66. package/dist/client/components/media/media-picker-dialog.mjs +176 -476
  67. package/dist/client/components/preview/live-preview-mode.mjs +233 -458
  68. package/dist/client/components/preview/preview-pane.mjs +22 -22
  69. package/dist/client/components/primitives/asset-preview.mjs +290 -666
  70. package/dist/client/components/primitives/checkbox-input.mjs +9 -35
  71. package/dist/client/components/primitives/date-input.mjs +109 -327
  72. package/dist/client/components/primitives/dropzone.mjs +209 -336
  73. package/dist/client/components/primitives/field-select-control.mjs +12 -80
  74. package/dist/client/components/primitives/number-input.mjs +4 -4
  75. package/dist/client/components/primitives/select-multi.mjs +200 -559
  76. package/dist/client/components/primitives/select-single.mjs +165 -499
  77. package/dist/client/components/primitives/time-input.mjs +43 -117
  78. package/dist/client/components/primitives/toggle-input.mjs +9 -29
  79. package/dist/client/components/sheets/resource-sheet.mjs +61 -70
  80. package/dist/client/components/ui/accordion.mjs +35 -155
  81. package/dist/client/components/ui/alert.mjs +13 -68
  82. package/dist/client/components/ui/badge.mjs +9 -51
  83. package/dist/client/components/ui/button.mjs +8 -54
  84. package/dist/client/components/ui/card.mjs +37 -193
  85. package/dist/client/components/ui/checkbox.mjs +12 -68
  86. package/dist/client/components/ui/command.mjs +48 -219
  87. package/dist/client/components/ui/dialog.mjs +50 -262
  88. package/dist/client/components/ui/drawer.mjs +55 -259
  89. package/dist/client/components/ui/dropdown-menu.mjs +86 -427
  90. package/dist/client/components/ui/empty-state.mjs +28 -98
  91. package/dist/client/components/ui/field.mjs +73 -309
  92. package/dist/client/components/ui/input-group.mjs +42 -167
  93. package/dist/client/components/ui/input.mjs +7 -37
  94. package/dist/client/components/ui/kbd.mjs +6 -36
  95. package/dist/client/components/ui/label.mjs +7 -37
  96. package/dist/client/components/ui/popover.mjs +34 -169
  97. package/dist/client/components/ui/responsive-dialog.mjs +67 -273
  98. package/dist/client/components/ui/scroll-fade.mjs +63 -158
  99. package/dist/client/components/ui/search-input.mjs +33 -100
  100. package/dist/client/components/ui/select.mjs +72 -393
  101. package/dist/client/components/ui/separator.mjs +7 -38
  102. package/dist/client/components/ui/sheet.mjs +49 -269
  103. package/dist/client/components/ui/sidebar.mjs +171 -690
  104. package/dist/client/components/ui/skeleton.mjs +7 -38
  105. package/dist/client/components/ui/sonner.mjs +11 -42
  106. package/dist/client/components/ui/switch.mjs +9 -45
  107. package/dist/client/components/ui/table.mjs +48 -266
  108. package/dist/client/components/ui/tabs.mjs +26 -139
  109. package/dist/client/components/ui/textarea.mjs +6 -32
  110. package/dist/client/components/ui/tooltip.mjs +27 -129
  111. package/dist/client/components/widgets/chart-widget.mjs +174 -522
  112. package/dist/client/components/widgets/progress-widget.mjs +66 -172
  113. package/dist/client/components/widgets/quick-actions-widget.mjs +102 -261
  114. package/dist/client/components/widgets/recent-items-widget.mjs +69 -195
  115. package/dist/client/components/widgets/stats-widget.mjs +41 -175
  116. package/dist/client/components/widgets/table-widget.mjs +9 -9
  117. package/dist/client/components/widgets/timeline-widget.mjs +86 -226
  118. package/dist/client/components/widgets/value-widget.mjs +74 -381
  119. package/dist/client/components/widgets/widget-empty-state.mjs +26 -76
  120. package/dist/client/components/widgets/widget-skeletons.mjs +138 -421
  121. package/dist/client/contexts/focus-context.mjs +63 -146
  122. package/dist/client/hooks/typed-hooks.mjs +241 -701
  123. package/dist/client/hooks/use-action.mjs +62 -198
  124. package/dist/client/hooks/use-admin-config.mjs +5 -35
  125. package/dist/client/hooks/use-admin-preferences.mjs +16 -88
  126. package/dist/client/hooks/use-admin-routes.mjs +22 -56
  127. package/dist/client/hooks/use-audit-history.mjs +21 -69
  128. package/dist/client/hooks/use-brand.mjs +1 -9
  129. package/dist/client/hooks/use-collection-fields.mjs +17 -57
  130. package/dist/client/hooks/use-collection-meta.mjs +12 -44
  131. package/dist/client/hooks/use-collection-schema.mjs +10 -33
  132. package/dist/client/hooks/use-collection-validation.mjs +23 -53
  133. package/dist/client/hooks/use-collection.mjs +194 -614
  134. package/dist/client/hooks/use-current-user.mjs +0 -1
  135. package/dist/client/hooks/use-field-hooks.mjs +10 -10
  136. package/dist/client/hooks/use-field-options.mjs +61 -202
  137. package/dist/client/hooks/use-global-fields.mjs +14 -46
  138. package/dist/client/hooks/use-global-meta.mjs +9 -30
  139. package/dist/client/hooks/use-global-schema.mjs +9 -30
  140. package/dist/client/hooks/use-global.mjs +63 -219
  141. package/dist/client/hooks/use-locks.mjs +117 -325
  142. package/dist/client/hooks/use-media-query.mjs +16 -36
  143. package/dist/client/hooks/use-prefill-params.mjs +0 -1
  144. package/dist/client/hooks/use-questpie-query-options.mjs +12 -29
  145. package/dist/client/hooks/use-reactive-fields.mjs +1 -1
  146. package/dist/client/hooks/use-reactive-prop.mjs +65 -223
  147. package/dist/client/hooks/use-realtime-highlight.mjs +51 -114
  148. package/dist/client/hooks/use-saved-views.mjs +22 -103
  149. package/dist/client/hooks/use-search-param-toggle.mjs +28 -79
  150. package/dist/client/hooks/use-search.mjs +31 -143
  151. package/dist/client/hooks/use-server-actions.mjs +18 -50
  152. package/dist/client/hooks/use-server-validation.mjs +72 -166
  153. package/dist/client/hooks/use-server-widget-data.mjs +7 -33
  154. package/dist/client/hooks/use-setup-status.mjs +12 -25
  155. package/dist/client/hooks/use-sidebar-search-param.mjs +33 -78
  156. package/dist/client/hooks/use-transition-stage.mjs +8 -38
  157. package/dist/client/hooks/use-upload.mjs +54 -152
  158. package/dist/client/hooks/use-validation-error-map.mjs +6 -26
  159. package/dist/client/hooks/use-view-state.mjs +187 -437
  160. package/dist/client/i18n/hooks.mjs +65 -197
  161. package/dist/client/lib/render-profiler.mjs +14 -41
  162. package/dist/client/preview/block-scope-context.d.mts +2 -2
  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.d.mts +2 -2
  174. package/dist/client/scope/picker.mjs +86 -321
  175. package/dist/client/scope/provider.d.mts +2 -2
  176. package/dist/client/scope/provider.mjs +8 -17
  177. package/dist/client/views/auth/accept-invite-form.d.mts +2 -2
  178. package/dist/client/views/auth/accept-invite-form.mjs +121 -412
  179. package/dist/client/views/auth/auth-layout.d.mts +3 -3
  180. package/dist/client/views/auth/auth-layout.mjs +104 -284
  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 +109 -363
  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.mjs +41 -121
  222. package/dist/client/views/pages/reset-password-page.mjs +46 -173
  223. package/dist/client/views/pages/setup-page.mjs +33 -95
  224. package/dist/components/rich-text/rich-text-renderer.d.mts +2 -2
  225. package/dist/components/rich-text/rich-text-renderer.mjs +9 -33
  226. package/dist/server/modules/admin/collections/account.d.mts +46 -46
  227. package/dist/server/modules/admin/collections/admin-locks.d.mts +50 -50
  228. package/dist/server/modules/admin/collections/admin-preferences.d.mts +39 -39
  229. package/dist/server/modules/admin/collections/admin-saved-views.d.mts +47 -47
  230. package/dist/server/modules/admin/collections/apikey.d.mts +68 -68
  231. package/dist/server/modules/admin/collections/assets.d.mts +39 -39
  232. package/dist/server/modules/admin/collections/session.d.mts +41 -41
  233. package/dist/server/modules/admin/collections/user.d.mts +63 -63
  234. package/dist/server/modules/admin/collections/verification.d.mts +36 -36
  235. package/dist/server/modules/admin/index.d.mts +20 -19
  236. package/dist/server/modules/admin/routes/admin-config.d.mts +2 -2
  237. package/dist/server/modules/admin/routes/execute-action.d.mts +9 -9
  238. package/dist/server/modules/admin/routes/locales.d.mts +2 -2
  239. package/dist/server/modules/admin/routes/preview.d.mts +11 -11
  240. package/dist/server/modules/admin/routes/reactive.d.mts +9 -9
  241. package/dist/server/modules/admin/routes/setup.d.mts +7 -7
  242. package/dist/server/modules/admin/routes/translations.d.mts +4 -4
  243. package/dist/server/modules/admin/routes/widget-data.d.mts +5 -5
  244. package/dist/server/modules/admin-preferences/collections/saved-views.d.mts +45 -45
  245. package/dist/server/modules/audit/.generated/module.d.mts +6 -6
  246. package/dist/server/modules/audit/collections/audit-log.d.mts +78 -78
  247. package/dist/server/modules/audit/jobs/audit-cleanup.d.mts +2 -2
  248. 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