@questpie/admin 3.0.3 → 3.0.4

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 (249) hide show
  1. package/README.md +34 -5
  2. package/dist/client/blocks/block-renderer.d.mts +2 -2
  3. package/dist/client/blocks/block-renderer.mjs +4 -1
  4. package/dist/client/builder/types/action-types.d.mts +31 -3
  5. package/dist/client/builder/types/collection-types.d.mts +140 -0
  6. package/dist/client/builder/types/ui-config.d.mts +16 -2
  7. package/dist/client/builder/types/views.d.mts +57 -0
  8. package/dist/client/builder/types/widget-types.d.mts +5 -0
  9. package/dist/client/components/actions/action-button.mjs +137 -199
  10. package/dist/client/components/actions/action-dialog.mjs +198 -156
  11. package/dist/client/components/actions/confirmation-dialog.mjs +2 -2
  12. package/dist/client/components/actions/header-actions.mjs +52 -53
  13. package/dist/client/components/admin-link.d.mts +2 -2
  14. package/dist/client/components/auth/auth-loading.mjs +41 -18
  15. package/dist/client/components/blocks/block-fields-renderer.mjs +64 -28
  16. package/dist/client/components/blocks/block-insert-button.mjs +4 -4
  17. package/dist/client/components/blocks/block-item.mjs +2 -2
  18. package/dist/client/components/blocks/block-library-sidebar.mjs +2 -2
  19. package/dist/client/components/component-renderer.mjs +1 -1
  20. package/dist/client/components/fields/array-field.mjs +14 -14
  21. package/dist/client/components/fields/asset-preview-field.mjs +1 -1
  22. package/dist/client/components/fields/blocks-field/blocks-field.mjs +84 -104
  23. package/dist/client/components/fields/json-field.mjs +2 -2
  24. package/dist/client/components/fields/object-array-field.mjs +22 -22
  25. package/dist/client/components/fields/object-field.mjs +5 -5
  26. package/dist/client/components/fields/relation/displays/cards-display.mjs +16 -9
  27. package/dist/client/components/fields/relation/displays/chips-display.mjs +15 -12
  28. package/dist/client/components/fields/relation/displays/grid-display.mjs +15 -11
  29. package/dist/client/components/fields/relation/displays/list-display.mjs +33 -20
  30. package/dist/client/components/fields/relation/displays/table-display.mjs +62 -93
  31. package/dist/client/components/fields/relation/relation-items-display.mjs +1 -1
  32. package/dist/client/components/fields/relation-picker.mjs +7 -6
  33. package/dist/client/components/fields/relation-select.mjs +71 -47
  34. package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs +392 -82
  35. package/dist/client/components/fields/rich-text-editor/extensions.mjs +54 -23
  36. package/dist/client/components/fields/rich-text-editor/image-popover.mjs +24 -50
  37. package/dist/client/components/fields/rich-text-editor/image-upload.mjs +66 -0
  38. package/dist/client/components/fields/rich-text-editor/index.d.mts +38 -0
  39. package/dist/client/components/fields/rich-text-editor/index.mjs +637 -376
  40. package/dist/client/components/fields/rich-text-editor/link-utils.mjs +26 -0
  41. package/dist/client/components/fields/rich-text-editor/presets.d.mts +10 -0
  42. package/dist/client/components/fields/rich-text-editor/slash-commands.mjs +27 -6
  43. package/dist/client/components/fields/rich-text-editor/toolbar.mjs +464 -346
  44. package/dist/client/components/fields/rich-text-editor/types.d.mts +77 -0
  45. package/dist/client/components/fields/upload-field.mjs +45 -49
  46. package/dist/client/components/filter-builder/columns-tab.mjs +69 -62
  47. package/dist/client/components/filter-builder/filter-builder-sheet.mjs +473 -308
  48. package/dist/client/components/filter-builder/filters-tab.mjs +109 -82
  49. package/dist/client/components/filter-builder/saved-views-tab.mjs +300 -198
  50. package/dist/client/components/history-sidebar.mjs +850 -340
  51. package/dist/client/components/layout/field-layout-renderer.mjs +6 -5
  52. package/dist/client/components/locale-switcher.mjs +8 -8
  53. package/dist/client/components/media/media-grid.mjs +12 -9
  54. package/dist/client/components/media/media-picker-dialog.mjs +242 -230
  55. package/dist/client/components/preview/live-preview-mode.mjs +1 -1
  56. package/dist/client/components/primitives/asset-preview.mjs +37 -22
  57. package/dist/client/components/primitives/date-input.mjs +212 -249
  58. package/dist/client/components/primitives/dropzone.mjs +192 -159
  59. package/dist/client/components/primitives/field-select-control.mjs +93 -0
  60. package/dist/client/components/primitives/select-multi.mjs +251 -230
  61. package/dist/client/components/primitives/select-single.mjs +345 -290
  62. package/dist/client/components/primitives/time-input.mjs +2 -2
  63. package/dist/client/components/sheets/resource-sheet.mjs +2 -0
  64. package/dist/client/components/ui/accordion.mjs +4 -4
  65. package/dist/client/components/ui/alert.mjs +3 -3
  66. package/dist/client/components/ui/badge.mjs +4 -4
  67. package/dist/client/components/ui/button.mjs +47 -37
  68. package/dist/client/components/ui/card.mjs +2 -2
  69. package/dist/client/components/ui/checkbox.mjs +1 -1
  70. package/dist/client/components/ui/command.mjs +5 -5
  71. package/dist/client/components/ui/dialog.mjs +3 -3
  72. package/dist/client/components/ui/drawer.mjs +1 -1
  73. package/dist/client/components/ui/dropdown-menu.mjs +157 -15
  74. package/dist/client/components/ui/empty-state.mjs +88 -59
  75. package/dist/client/components/ui/field.mjs +2 -2
  76. package/dist/client/components/ui/input-group.mjs +3 -3
  77. package/dist/client/components/ui/input.mjs +1 -1
  78. package/dist/client/components/ui/kbd.mjs +1 -1
  79. package/dist/client/components/ui/label.mjs +1 -1
  80. package/dist/client/components/ui/popover.mjs +19 -11
  81. package/dist/client/components/ui/scroll-fade.mjs +170 -0
  82. package/dist/client/components/ui/search-input.mjs +1 -1
  83. package/dist/client/components/ui/select.mjs +129 -27
  84. package/dist/client/components/ui/sheet.mjs +54 -34
  85. package/dist/client/components/ui/sidebar.mjs +15 -14
  86. package/dist/client/components/ui/skeleton.mjs +28 -12
  87. package/dist/client/components/ui/switch.mjs +2 -2
  88. package/dist/client/components/ui/table.mjs +82 -74
  89. package/dist/client/components/ui/tabs.mjs +26 -31
  90. package/dist/client/components/ui/textarea.mjs +1 -1
  91. package/dist/client/components/ui/tooltip.mjs +1 -1
  92. package/dist/client/components/widgets/chart-widget.mjs +134 -96
  93. package/dist/client/components/widgets/progress-widget.mjs +59 -34
  94. package/dist/client/components/widgets/quick-actions-widget.mjs +184 -113
  95. package/dist/client/components/widgets/recent-items-widget.mjs +144 -102
  96. package/dist/client/components/widgets/stats-widget.mjs +91 -72
  97. package/dist/client/components/widgets/table-widget.mjs +159 -246
  98. package/dist/client/components/widgets/timeline-widget.mjs +66 -43
  99. package/dist/client/components/widgets/value-widget.mjs +261 -152
  100. package/dist/client/components/widgets/widget-empty-state.mjs +88 -0
  101. package/dist/client/components/widgets/widget-skeletons.mjs +53 -20
  102. package/dist/client/contexts/focus-context.d.mts +2 -2
  103. package/dist/client/hooks/use-action.mjs +63 -55
  104. package/dist/client/hooks/use-audit-history.mjs +1 -65
  105. package/dist/client/hooks/use-collection-validation.mjs +36 -23
  106. package/dist/client/hooks/use-collection.mjs +96 -1
  107. package/dist/client/hooks/use-saved-views.mjs +70 -49
  108. package/dist/client/hooks/use-server-actions.mjs +59 -40
  109. package/dist/client/hooks/use-server-validation.mjs +156 -41
  110. package/dist/client/hooks/use-server-widget-data.mjs +1 -1
  111. package/dist/client/hooks/use-setup-status.d.mts +3 -3
  112. package/dist/client/hooks/use-setup-status.mjs +2 -2
  113. package/dist/client/hooks/use-transition-stage.mjs +2 -10
  114. package/dist/client/hooks/use-validation-error-map.mjs +31 -13
  115. package/dist/client/hooks/use-view-state.mjs +238 -174
  116. package/dist/client/i18n/date-locale.mjs +33 -0
  117. package/dist/client/i18n/hooks.mjs +17 -1
  118. package/dist/client/lib/utils.mjs +3 -2
  119. package/dist/client/preview/block-scope-context.d.mts +2 -2
  120. package/dist/client/preview/preview-banner.d.mts +2 -2
  121. package/dist/client/preview/preview-field.d.mts +4 -4
  122. package/dist/client/preview/preview-field.mjs +2 -2
  123. package/dist/client/runtime/provider.mjs +8 -1
  124. package/dist/client/runtime/translations-provider.mjs +1 -1
  125. package/dist/client/scope/picker.d.mts +2 -2
  126. package/dist/client/scope/provider.d.mts +2 -2
  127. package/dist/client/styles/base.css +1022 -0
  128. package/dist/client/styles/index.css +3 -589
  129. package/dist/client/utils/auto-expand-fields.mjs +4 -2
  130. package/dist/client/utils/keyboard-shortcuts.mjs +26 -0
  131. package/dist/client/utils/use-lazy-component.mjs +80 -0
  132. package/dist/client/views/auth/auth-layout.d.mts +18 -11
  133. package/dist/client/views/auth/auth-layout.mjs +291 -80
  134. package/dist/client/views/auth/forgot-password-form.d.mts +2 -2
  135. package/dist/client/views/auth/forgot-password-form.mjs +2 -2
  136. package/dist/client/views/auth/login-form.d.mts +2 -2
  137. package/dist/client/views/auth/login-form.mjs +1 -1
  138. package/dist/client/views/auth/reset-password-form.d.mts +2 -2
  139. package/dist/client/views/auth/reset-password-form.mjs +2 -2
  140. package/dist/client/views/auth/setup-form.d.mts +2 -2
  141. package/dist/client/views/collection/auto-form-fields.mjs +11 -9
  142. package/dist/client/views/collection/bulk-action-toolbar.mjs +173 -138
  143. package/dist/client/views/collection/cells/complex-cells.mjs +22 -22
  144. package/dist/client/views/collection/cells/primitive-cells.mjs +1 -1
  145. package/dist/client/views/collection/cells/relation-cells.mjs +147 -129
  146. package/dist/client/views/collection/cells/shared/asset-thumbnail.mjs +224 -278
  147. package/dist/client/views/collection/cells/shared/relation-chip.mjs +64 -36
  148. package/dist/client/views/collection/cells/upload-cells.mjs +199 -9
  149. package/dist/client/views/collection/columns/build-columns.mjs +29 -9
  150. package/dist/client/views/collection/columns/column-defaults.mjs +2 -2
  151. package/dist/client/views/collection/field-renderer.mjs +50 -89
  152. package/dist/client/views/collection/form-view.mjs +237 -227
  153. package/dist/client/views/collection/table-view.mjs +1162 -229
  154. package/dist/client/views/collection/view-skeletons.mjs +222 -79
  155. package/dist/client/views/common/global-search.mjs +29 -18
  156. package/dist/client/views/dashboard/dashboard-grid.mjs +678 -501
  157. package/dist/client/views/dashboard/dashboard-widget.mjs +6 -3
  158. package/dist/client/views/dashboard/widget-card.mjs +23 -14
  159. package/dist/client/views/globals/global-form-view.mjs +634 -589
  160. package/dist/client/views/layout/admin-layout-provider.mjs +67 -70
  161. package/dist/client/views/layout/admin-layout.d.mts +3 -6
  162. package/dist/client/views/layout/admin-layout.mjs +149 -172
  163. package/dist/client/views/layout/admin-router.mjs +747 -544
  164. package/dist/client/views/layout/admin-sidebar.d.mts +38 -1
  165. package/dist/client/views/layout/admin-sidebar.mjs +751 -591
  166. package/dist/client/views/layout/admin-theme.d.mts +10 -0
  167. package/dist/client/views/layout/admin-theme.mjs +84 -0
  168. package/dist/client/views/layout/admin-view-layout.mjs +161 -0
  169. package/dist/client/views/pages/accept-invite-page.d.mts +2 -2
  170. package/dist/client/views/pages/accept-invite-page.mjs +49 -26
  171. package/dist/client/views/pages/dashboard-page.d.mts +2 -2
  172. package/dist/client/views/pages/forgot-password-page.d.mts +2 -2
  173. package/dist/client/views/pages/forgot-password-page.mjs +2 -19
  174. package/dist/client/views/pages/invite-page.d.mts +2 -2
  175. package/dist/client/views/pages/invite-page.mjs +2 -19
  176. package/dist/client/views/pages/login-page.d.mts +1 -1
  177. package/dist/client/views/pages/login-page.mjs +4 -21
  178. package/dist/client/views/pages/reset-password-page.d.mts +2 -2
  179. package/dist/client/views/pages/reset-password-page.mjs +3 -20
  180. package/dist/client/views/pages/setup-page.d.mts +2 -2
  181. package/dist/client/views/pages/setup-page.mjs +3 -20
  182. package/dist/client.d.mts +6 -2
  183. package/dist/client.mjs +2 -1
  184. package/dist/components/rich-text/rich-text-renderer.d.mts +2 -2
  185. package/dist/index.d.mts +6 -2
  186. package/dist/index.mjs +2 -1
  187. package/dist/server/augmentation/dashboard.d.mts +67 -3
  188. package/dist/server/augmentation/form-layout.d.mts +21 -0
  189. package/dist/server/augmentation/index.d.mts +1 -1
  190. package/dist/server/codegen/admin-client-template.mjs +4 -0
  191. package/dist/server/fields/blocks.d.mts +1 -1
  192. package/dist/server/fields/blocks.mjs +12 -0
  193. package/dist/server/fields/rich-text.d.mts +1 -1
  194. package/dist/server/fields/rich-text.mjs +8 -0
  195. package/dist/server/i18n/index.mjs +17 -1
  196. package/dist/server/i18n/messages/cs.mjs +23 -0
  197. package/dist/server/i18n/messages/de.mjs +23 -0
  198. package/dist/server/i18n/messages/en.mjs +64 -1
  199. package/dist/server/i18n/messages/es.mjs +23 -0
  200. package/dist/server/i18n/messages/fr.mjs +23 -0
  201. package/dist/server/i18n/messages/pl.mjs +23 -0
  202. package/dist/server/i18n/messages/pt.mjs +23 -0
  203. package/dist/server/i18n/messages/sk.mjs +83 -1
  204. package/dist/server/modules/admin/block/introspection.mjs +4 -1
  205. package/dist/server/modules/admin/block/prefetch.mjs +12 -2
  206. package/dist/server/modules/admin/collections/account.d.mts +50 -50
  207. package/dist/server/modules/admin/collections/admin-locks.d.mts +54 -54
  208. package/dist/server/modules/admin/collections/admin-preferences.d.mts +39 -39
  209. package/dist/server/modules/admin/collections/admin-saved-views.d.mts +47 -47
  210. package/dist/server/modules/admin/collections/apikey.d.mts +68 -68
  211. package/dist/server/modules/admin/collections/assets.d.mts +20 -20
  212. package/dist/server/modules/admin/collections/assets.mjs +0 -1
  213. package/dist/server/modules/admin/collections/session.d.mts +42 -42
  214. package/dist/server/modules/admin/collections/user.d.mts +12 -0
  215. package/dist/server/modules/admin/collections/user.mjs +40 -9
  216. package/dist/server/modules/admin/collections/verification.d.mts +2 -2
  217. package/dist/server/modules/admin/dto/admin-config.dto.mjs +2 -0
  218. package/dist/server/modules/admin/factories.mjs +7 -18
  219. package/dist/server/modules/admin/index.d.mts +1 -1
  220. package/dist/server/modules/admin/routes/admin-config.d.mts +2 -2
  221. package/dist/server/modules/admin/routes/admin-config.mjs +34 -16
  222. package/dist/server/modules/admin/routes/execute-action.d.mts +9 -9
  223. package/dist/server/modules/admin/routes/execute-action.mjs +33 -0
  224. package/dist/server/modules/admin/routes/locales.d.mts +2 -2
  225. package/dist/server/modules/admin/routes/preview.d.mts +11 -11
  226. package/dist/server/modules/admin/routes/reactive.d.mts +9 -9
  227. package/dist/server/modules/admin/routes/setup.d.mts +10 -10
  228. package/dist/server/modules/admin/routes/setup.mjs +7 -7
  229. package/dist/server/modules/admin/routes/translations.d.mts +4 -4
  230. package/dist/server/modules/admin/routes/translations.mjs +5 -1
  231. package/dist/server/modules/admin/routes/widget-data.d.mts +5 -5
  232. package/dist/server/modules/admin-preferences/collections/admin-preferences.mjs +1 -1
  233. package/dist/server/modules/admin-preferences/collections/saved-views.d.mts +27 -27
  234. package/dist/server/modules/audit/.generated/module.d.mts +1 -1
  235. package/dist/server/modules/audit/.generated/module.mjs +1 -1
  236. package/dist/server/modules/audit/collections/audit-log.d.mts +2 -2
  237. package/dist/server/modules/audit/collections/audit-log.mjs +1 -1
  238. package/dist/server/modules/audit/config/app.mjs +99 -42
  239. package/dist/server/modules/audit/jobs/audit-cleanup.mjs +1 -1
  240. package/dist/server/plugin.mjs +4 -2
  241. package/dist/server/proxy-factories.d.mts +4 -3
  242. package/dist/server/proxy-factories.mjs +34 -8
  243. package/dist/shared/types/saved-views.types.d.mts +2 -0
  244. package/package.json +6 -4
  245. package/dist/client/components/fields/rich-text-editor/link-popover.mjs +0 -85
  246. package/dist/client/components/ui/spinner.mjs +0 -52
  247. package/dist/client/components/ui/toolbar.mjs +0 -136
  248. package/dist/client/contexts/breadcrumb-context.mjs +0 -60
  249. package/dist/client/views/layout/admin-topbar.mjs +0 -236
@@ -36,7 +36,7 @@ function isAudio(mimeType) {
36
36
  return !!mimeType?.toLowerCase().startsWith("audio/");
37
37
  }
38
38
  function AssetThumbnail(t0) {
39
- const $ = c(107);
39
+ const $ = c(97);
40
40
  const { asset, size: t1, showFilename: t2, showControls: t3, onClick, className } = t0;
41
41
  const size = t1 === void 0 ? "sm" : t1;
42
42
  const showFilename = t2 === void 0 ? false : t2;
@@ -54,23 +54,34 @@ function AssetThumbnail(t0) {
54
54
  }
55
55
  if (typeof asset === "string") {
56
56
  let t4$1;
57
- if ($[1] !== asset) {
58
- t4$1 = asset.slice(0, 8);
59
- $[1] = asset;
57
+ if ($[1] !== className) {
58
+ t4$1 = cn("qa-asset-thumbnail text-muted-foreground inline-flex items-center gap-2", className);
59
+ $[1] = className;
60
60
  $[2] = t4$1;
61
61
  } else t4$1 = $[2];
62
62
  let t5$1;
63
- if ($[3] !== asset || $[4] !== t4$1) {
64
- t5$1 = /* @__PURE__ */ jsxs("span", {
65
- className: "text-muted-foreground max-w-[100px] truncate font-mono text-xs",
63
+ if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
64
+ t5$1 = /* @__PURE__ */ jsx("span", {
65
+ className: "bg-muted border-border-subtle flex size-8 shrink-0 items-center justify-center rounded border",
66
+ children: /* @__PURE__ */ jsx(Icon, {
67
+ icon: "ph:file",
68
+ className: "size-4"
69
+ })
70
+ });
71
+ $[3] = t5$1;
72
+ } else t5$1 = $[3];
73
+ let t6$1;
74
+ if ($[4] !== asset || $[5] !== t4$1) {
75
+ t6$1 = /* @__PURE__ */ jsx("span", {
76
+ className: t4$1,
66
77
  title: asset,
67
- children: [t4$1, "..."]
78
+ children: t5$1
68
79
  });
69
- $[3] = asset;
70
- $[4] = t4$1;
71
- $[5] = t5$1;
72
- } else t5$1 = $[5];
73
- return t5$1;
80
+ $[4] = asset;
81
+ $[5] = t4$1;
82
+ $[6] = t6$1;
83
+ } else t6$1 = $[6];
84
+ return t6$1;
74
85
  }
75
86
  const assetObj = asset;
76
87
  const url = assetObj.url;
@@ -78,181 +89,126 @@ function AssetThumbnail(t0) {
78
89
  const mimeType = assetObj.mimeType;
79
90
  const alt = assetObj.alt;
80
91
  let t4;
81
- if ($[6] !== mimeType) {
92
+ if ($[7] !== mimeType) {
82
93
  t4 = isImage(mimeType);
83
- $[6] = mimeType;
84
- $[7] = t4;
85
- } else t4 = $[7];
94
+ $[7] = mimeType;
95
+ $[8] = t4;
96
+ } else t4 = $[8];
86
97
  const isImageType = t4;
87
98
  let t5;
88
- if ($[8] !== mimeType) {
99
+ if ($[9] !== mimeType) {
89
100
  t5 = isVideo(mimeType);
90
- $[8] = mimeType;
91
- $[9] = t5;
92
- } else t5 = $[9];
101
+ $[9] = mimeType;
102
+ $[10] = t5;
103
+ } else t5 = $[10];
93
104
  const isVideoType = t5;
94
105
  let t6;
95
- if ($[10] !== mimeType) {
106
+ if ($[11] !== mimeType) {
96
107
  t6 = isAudio(mimeType);
97
- $[10] = mimeType;
98
- $[11] = t6;
99
- } else t6 = $[11];
108
+ $[11] = mimeType;
109
+ $[12] = t6;
110
+ } else t6 = $[12];
100
111
  const isAudioType = t6;
101
112
  let t7;
102
- if ($[12] !== mimeType) {
113
+ if ($[13] !== mimeType) {
103
114
  t7 = getFileIcon(mimeType);
104
- $[12] = mimeType;
105
- $[13] = t7;
106
- } else t7 = $[13];
115
+ $[13] = mimeType;
116
+ $[14] = t7;
117
+ } else t7 = $[14];
107
118
  const fileIcon = t7;
108
- if (!url) {
109
- if (assetObj.id) {
110
- const t8$2 = String(assetObj.id);
111
- let t9$1;
112
- if ($[14] !== t8$2) {
113
- t9$1 = t8$2.slice(0, 8);
114
- $[14] = t8$2;
115
- $[15] = t9$1;
116
- } else t9$1 = $[15];
117
- let t10$1;
118
- if ($[16] !== t9$1) {
119
- t10$1 = /* @__PURE__ */ jsxs("span", {
120
- className: "text-muted-foreground font-mono text-xs",
121
- children: [t9$1, "..."]
122
- });
123
- $[16] = t9$1;
124
- $[17] = t10$1;
125
- } else t10$1 = $[17];
126
- return t10$1;
127
- }
128
- let t8$1;
129
- if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
130
- t8$1 = /* @__PURE__ */ jsx("span", {
131
- className: "text-muted-foreground",
132
- children: "-"
133
- });
134
- $[18] = t8$1;
135
- } else t8$1 = $[18];
136
- return t8$1;
137
- }
138
119
  if (size === "sm") {
139
120
  const assetId = assetObj.id;
140
121
  let t8$1;
141
- if ($[19] !== assetId || $[20] !== onClick) {
122
+ if ($[15] !== assetId || $[16] !== onClick) {
142
123
  t8$1 = onClick && assetId ? () => onClick(assetId) : void 0;
143
- $[19] = assetId;
144
- $[20] = onClick;
145
- $[21] = t8$1;
146
- } else t8$1 = $[21];
124
+ $[15] = assetId;
125
+ $[16] = onClick;
126
+ $[17] = t8$1;
127
+ } else t8$1 = $[17];
147
128
  const handleClick = t8$1;
148
- if (isImageType) {
149
- let t9$2;
150
- if ($[22] !== handleClick) {
151
- t9$2 = handleClick ? {
152
- role: "button",
153
- tabIndex: 0,
154
- onClick: handleClick,
155
- onKeyDown: (e) => {
156
- if (e.key === "Enter" || e.key === " ") {
157
- e.preventDefault();
158
- handleClick();
159
- }
129
+ let t9$1;
130
+ if ($[18] !== handleClick) {
131
+ t9$1 = handleClick ? {
132
+ role: "button",
133
+ tabIndex: 0,
134
+ onClick: handleClick,
135
+ onKeyDown: (e) => {
136
+ if (e.key === "Enter" || e.key === " ") {
137
+ e.preventDefault();
138
+ handleClick();
160
139
  }
161
- } : {};
162
- $[22] = handleClick;
163
- $[23] = t9$2;
164
- } else t9$2 = $[23];
165
- const containerProps = t9$2;
166
- const t10$2 = onClick && "cursor-pointer hover:opacity-80";
167
- let t11$2;
168
- if ($[24] !== className || $[25] !== t10$2) {
169
- t11$2 = cn("qa-asset-thumbnail flex items-center gap-2", t10$2, className);
170
- $[24] = className;
171
- $[25] = t10$2;
172
- $[26] = t11$2;
173
- } else t11$2 = $[26];
174
- const t12$1 = filename || "Asset";
175
- let t13$1;
176
- if ($[27] !== t12$1 || $[28] !== url) {
177
- t13$1 = /* @__PURE__ */ jsx("img", {
178
- src: url,
179
- alt: t12$1,
180
- className: "size-8 rounded border object-cover"
181
- });
182
- $[27] = t12$1;
183
- $[28] = url;
184
- $[29] = t13$1;
185
- } else t13$1 = $[29];
186
- let t14$1;
187
- if ($[30] !== filename || $[31] !== showFilename) {
188
- t14$1 = showFilename && filename && /* @__PURE__ */ jsx("span", {
189
- className: "max-w-[100px] truncate text-xs",
190
- title: filename,
191
- children: filename
192
- });
193
- $[30] = filename;
194
- $[31] = showFilename;
195
- $[32] = t14$1;
196
- } else t14$1 = $[32];
197
- let t15$1;
198
- if ($[33] !== containerProps || $[34] !== t11$2 || $[35] !== t13$1 || $[36] !== t14$1) {
199
- t15$1 = /* @__PURE__ */ jsxs("div", {
200
- className: t11$2,
201
- ...containerProps,
202
- children: [t13$1, t14$1]
203
- });
204
- $[33] = containerProps;
205
- $[34] = t11$2;
206
- $[35] = t13$1;
207
- $[36] = t14$1;
208
- $[37] = t15$1;
209
- } else t15$1 = $[37];
210
- return t15$1;
211
- }
212
- if (showFilename && filename) {
213
- let t9$2;
214
- if ($[38] !== filename) {
215
- t9$2 = /* @__PURE__ */ jsx("span", {
216
- className: "max-w-[150px] truncate text-sm",
217
- title: filename,
218
- children: filename
219
- });
220
- $[38] = filename;
221
- $[39] = t9$2;
222
- } else t9$2 = $[39];
223
- return t9$2;
224
- }
225
- const t9$1 = String(assetObj.id || "");
226
- let t10$1;
227
- if ($[40] !== t9$1) {
228
- t10$1 = t9$1.slice(0, 8);
229
- $[40] = t9$1;
230
- $[41] = t10$1;
231
- } else t10$1 = $[41];
140
+ }
141
+ } : {};
142
+ $[18] = handleClick;
143
+ $[19] = t9$1;
144
+ } else t9$1 = $[19];
145
+ const containerProps = t9$1;
146
+ const t10$1 = onClick && "cursor-pointer hover:opacity-80";
232
147
  let t11$1;
233
- if ($[42] !== t10$1) {
234
- t11$1 = /* @__PURE__ */ jsxs("span", {
235
- className: "text-muted-foreground font-mono text-xs",
236
- children: [t10$1, "..."]
148
+ if ($[20] !== className || $[21] !== t10$1) {
149
+ t11$1 = cn("qa-asset-thumbnail flex items-center gap-2", t10$1, className);
150
+ $[20] = className;
151
+ $[21] = t10$1;
152
+ $[22] = t11$1;
153
+ } else t11$1 = $[22];
154
+ let t12$1;
155
+ if ($[23] !== fileIcon || $[24] !== filename || $[25] !== isImageType || $[26] !== url) {
156
+ t12$1 = isImageType && url ? /* @__PURE__ */ jsx("img", {
157
+ src: url,
158
+ alt: filename || "Asset",
159
+ className: "image-outline size-8 rounded object-cover"
160
+ }) : /* @__PURE__ */ jsx("span", {
161
+ className: "bg-muted border-border-subtle flex size-8 shrink-0 items-center justify-center rounded border",
162
+ children: /* @__PURE__ */ jsx(Icon, {
163
+ icon: fileIcon,
164
+ className: "text-muted-foreground size-4"
165
+ })
237
166
  });
238
- $[42] = t10$1;
239
- $[43] = t11$1;
240
- } else t11$1 = $[43];
241
- return t11$1;
167
+ $[23] = fileIcon;
168
+ $[24] = filename;
169
+ $[25] = isImageType;
170
+ $[26] = url;
171
+ $[27] = t12$1;
172
+ } else t12$1 = $[27];
173
+ let t13$1;
174
+ if ($[28] !== filename || $[29] !== showFilename) {
175
+ t13$1 = showFilename && filename && /* @__PURE__ */ jsx("span", {
176
+ className: "max-w-[120px] truncate text-xs",
177
+ title: filename,
178
+ children: filename
179
+ });
180
+ $[28] = filename;
181
+ $[29] = showFilename;
182
+ $[30] = t13$1;
183
+ } else t13$1 = $[30];
184
+ let t14$1;
185
+ if ($[31] !== containerProps || $[32] !== t11$1 || $[33] !== t12$1 || $[34] !== t13$1) {
186
+ t14$1 = /* @__PURE__ */ jsxs("div", {
187
+ className: t11$1,
188
+ ...containerProps,
189
+ children: [t12$1, t13$1]
190
+ });
191
+ $[31] = containerProps;
192
+ $[32] = t11$1;
193
+ $[33] = t12$1;
194
+ $[34] = t13$1;
195
+ $[35] = t14$1;
196
+ } else t14$1 = $[35];
197
+ return t14$1;
242
198
  }
243
199
  if (size === "md") {
244
200
  const assetId_0 = assetObj.id;
245
201
  let t8$1;
246
- if ($[44] !== assetId_0 || $[45] !== onClick) {
202
+ if ($[36] !== assetId_0 || $[37] !== onClick) {
247
203
  t8$1 = onClick && assetId_0 ? () => onClick(assetId_0) : void 0;
248
- $[44] = assetId_0;
249
- $[45] = onClick;
250
- $[46] = t8$1;
251
- } else t8$1 = $[46];
204
+ $[36] = assetId_0;
205
+ $[37] = onClick;
206
+ $[38] = t8$1;
207
+ } else t8$1 = $[38];
252
208
  const handleClick_0 = t8$1;
253
- if (isImageType) {
209
+ if (isImageType && url) {
254
210
  let t9$2;
255
- if ($[47] !== handleClick_0) {
211
+ if ($[39] !== handleClick_0) {
256
212
  t9$2 = handleClick_0 ? {
257
213
  role: "button",
258
214
  tabIndex: 0,
@@ -264,46 +220,46 @@ function AssetThumbnail(t0) {
264
220
  }
265
221
  }
266
222
  } : {};
267
- $[47] = handleClick_0;
268
- $[48] = t9$2;
269
- } else t9$2 = $[48];
223
+ $[39] = handleClick_0;
224
+ $[40] = t9$2;
225
+ } else t9$2 = $[40];
270
226
  const interactiveProps = t9$2;
271
227
  const t10$2 = onClick && "cursor-pointer hover:opacity-80";
272
228
  let t11$2;
273
- if ($[49] !== className || $[50] !== t10$2) {
229
+ if ($[41] !== className || $[42] !== t10$2) {
274
230
  t11$2 = cn("qa-asset-thumbnail flex items-center justify-center", t10$2, className);
275
- $[49] = className;
276
- $[50] = t10$2;
277
- $[51] = t11$2;
278
- } else t11$2 = $[51];
231
+ $[41] = className;
232
+ $[42] = t10$2;
233
+ $[43] = t11$2;
234
+ } else t11$2 = $[43];
279
235
  const t12$2 = filename || "Asset";
280
236
  let t13$2;
281
- if ($[52] !== t12$2 || $[53] !== url) {
237
+ if ($[44] !== t12$2 || $[45] !== url) {
282
238
  t13$2 = /* @__PURE__ */ jsx("img", {
283
239
  src: url,
284
240
  alt: t12$2,
285
- className: "size-10 rounded border object-cover"
241
+ className: "image-outline size-10 rounded object-cover"
286
242
  });
287
- $[52] = t12$2;
288
- $[53] = url;
289
- $[54] = t13$2;
290
- } else t13$2 = $[54];
243
+ $[44] = t12$2;
244
+ $[45] = url;
245
+ $[46] = t13$2;
246
+ } else t13$2 = $[46];
291
247
  let t14$1;
292
- if ($[55] !== interactiveProps || $[56] !== t11$2 || $[57] !== t13$2) {
248
+ if ($[47] !== interactiveProps || $[48] !== t11$2 || $[49] !== t13$2) {
293
249
  t14$1 = /* @__PURE__ */ jsx("div", {
294
250
  className: t11$2,
295
251
  ...interactiveProps,
296
252
  children: t13$2
297
253
  });
298
- $[55] = interactiveProps;
299
- $[56] = t11$2;
300
- $[57] = t13$2;
301
- $[58] = t14$1;
302
- } else t14$1 = $[58];
254
+ $[47] = interactiveProps;
255
+ $[48] = t11$2;
256
+ $[49] = t13$2;
257
+ $[50] = t14$1;
258
+ } else t14$1 = $[50];
303
259
  return t14$1;
304
260
  }
305
261
  let t9$1;
306
- if ($[59] !== handleClick_0) {
262
+ if ($[51] !== handleClick_0) {
307
263
  t9$1 = handleClick_0 ? {
308
264
  role: "button",
309
265
  tabIndex: 0,
@@ -315,20 +271,20 @@ function AssetThumbnail(t0) {
315
271
  }
316
272
  }
317
273
  } : {};
318
- $[59] = handleClick_0;
319
- $[60] = t9$1;
320
- } else t9$1 = $[60];
274
+ $[51] = handleClick_0;
275
+ $[52] = t9$1;
276
+ } else t9$1 = $[52];
321
277
  const interactiveProps_0 = t9$1;
322
278
  const t10$1 = onClick && "cursor-pointer hover:opacity-80";
323
279
  let t11$1;
324
- if ($[61] !== className || $[62] !== t10$1) {
280
+ if ($[53] !== className || $[54] !== t10$1) {
325
281
  t11$1 = cn("qa-asset-thumbnail flex items-center justify-center", t10$1, className);
326
- $[61] = className;
327
- $[62] = t10$1;
328
- $[63] = t11$1;
329
- } else t11$1 = $[63];
282
+ $[53] = className;
283
+ $[54] = t10$1;
284
+ $[55] = t11$1;
285
+ } else t11$1 = $[55];
330
286
  let t12$1;
331
- if ($[64] !== fileIcon) {
287
+ if ($[56] !== fileIcon) {
332
288
  t12$1 = /* @__PURE__ */ jsx("div", {
333
289
  className: "bg-muted flex size-10 items-center justify-center rounded border",
334
290
  children: /* @__PURE__ */ jsx(Icon, {
@@ -336,48 +292,48 @@ function AssetThumbnail(t0) {
336
292
  className: "text-muted-foreground size-5"
337
293
  })
338
294
  });
339
- $[64] = fileIcon;
340
- $[65] = t12$1;
341
- } else t12$1 = $[65];
295
+ $[56] = fileIcon;
296
+ $[57] = t12$1;
297
+ } else t12$1 = $[57];
342
298
  let t13$1;
343
- if ($[66] !== interactiveProps_0 || $[67] !== t11$1 || $[68] !== t12$1) {
299
+ if ($[58] !== interactiveProps_0 || $[59] !== t11$1 || $[60] !== t12$1) {
344
300
  t13$1 = /* @__PURE__ */ jsx("div", {
345
301
  className: t11$1,
346
302
  ...interactiveProps_0,
347
303
  children: t12$1
348
304
  });
349
- $[66] = interactiveProps_0;
350
- $[67] = t11$1;
351
- $[68] = t12$1;
352
- $[69] = t13$1;
353
- } else t13$1 = $[69];
305
+ $[58] = interactiveProps_0;
306
+ $[59] = t11$1;
307
+ $[60] = t12$1;
308
+ $[61] = t13$1;
309
+ } else t13$1 = $[61];
354
310
  return t13$1;
355
311
  }
356
312
  let t8;
357
- if ($[70] !== className) {
313
+ if ($[62] !== className) {
358
314
  t8 = cn("qa-asset-thumbnail bg-muted relative overflow-hidden border", className);
359
- $[70] = className;
360
- $[71] = t8;
361
- } else t8 = $[71];
315
+ $[62] = className;
316
+ $[63] = t8;
317
+ } else t8 = $[63];
362
318
  let t9;
363
- if ($[72] !== alt || $[73] !== filename || $[74] !== isImageType || $[75] !== url) {
364
- t9 = isImageType && /* @__PURE__ */ jsx("div", {
319
+ if ($[64] !== alt || $[65] !== filename || $[66] !== isImageType || $[67] !== url) {
320
+ t9 = isImageType && url && /* @__PURE__ */ jsx("div", {
365
321
  className: "relative",
366
322
  children: /* @__PURE__ */ jsx("img", {
367
323
  src: url,
368
324
  alt: alt || filename || "Asset preview",
369
- className: "max-h-[400px] w-full object-contain"
325
+ className: "image-outline max-h-[400px] w-full object-contain"
370
326
  })
371
327
  });
372
- $[72] = alt;
373
- $[73] = filename;
374
- $[74] = isImageType;
375
- $[75] = url;
376
- $[76] = t9;
377
- } else t9 = $[76];
328
+ $[64] = alt;
329
+ $[65] = filename;
330
+ $[66] = isImageType;
331
+ $[67] = url;
332
+ $[68] = t9;
333
+ } else t9 = $[68];
378
334
  let t10;
379
- if ($[77] !== fileIcon || $[78] !== filename || $[79] !== isVideoType || $[80] !== showControls || $[81] !== url) {
380
- t10 = isVideoType && /* @__PURE__ */ jsx("div", {
335
+ if ($[69] !== fileIcon || $[70] !== filename || $[71] !== isVideoType || $[72] !== showControls || $[73] !== url) {
336
+ t10 = isVideoType && url && /* @__PURE__ */ jsx("div", {
381
337
  className: "relative",
382
338
  children: showControls ? /* @__PURE__ */ jsxs("video", {
383
339
  src: url,
@@ -396,28 +352,28 @@ function AssetThumbnail(t0) {
396
352
  })]
397
353
  })
398
354
  });
399
- $[77] = fileIcon;
400
- $[78] = filename;
401
- $[79] = isVideoType;
402
- $[80] = showControls;
403
- $[81] = url;
404
- $[82] = t10;
405
- } else t10 = $[82];
355
+ $[69] = fileIcon;
356
+ $[70] = filename;
357
+ $[71] = isVideoType;
358
+ $[72] = showControls;
359
+ $[73] = url;
360
+ $[74] = t10;
361
+ } else t10 = $[74];
406
362
  let t11;
407
- if ($[83] !== fileIcon || $[84] !== filename || $[85] !== isAudioType || $[86] !== showControls || $[87] !== url) {
408
- t11 = isAudioType && /* @__PURE__ */ jsxs("div", {
363
+ if ($[75] !== fileIcon || $[76] !== filename || $[77] !== isAudioType || $[78] !== showControls || $[79] !== url) {
364
+ t11 = isAudioType && url && /* @__PURE__ */ jsxs("div", {
409
365
  className: "flex flex-col items-center justify-center gap-4 p-8",
410
366
  children: [
411
367
  /* @__PURE__ */ jsx(Icon, {
412
368
  icon: fileIcon,
413
369
  className: "text-muted-foreground size-16"
414
370
  }),
415
- showControls && /* @__PURE__ */ jsx("audio", {
371
+ showControls && /* @__PURE__ */ jsxs("audio", {
416
372
  src: url,
417
373
  controls: true,
418
374
  className: "w-full max-w-md",
419
375
  preload: "metadata",
420
- children: "Your browser does not support the audio tag."
376
+ children: [/* @__PURE__ */ jsx("track", { kind: "captions" }), "Your browser does not support the audio tag."]
421
377
  }),
422
378
  !showControls && /* @__PURE__ */ jsx("p", {
423
379
  className: "text-muted-foreground text-sm",
@@ -425,16 +381,16 @@ function AssetThumbnail(t0) {
425
381
  })
426
382
  ]
427
383
  });
428
- $[83] = fileIcon;
429
- $[84] = filename;
430
- $[85] = isAudioType;
431
- $[86] = showControls;
432
- $[87] = url;
433
- $[88] = t11;
434
- } else t11 = $[88];
384
+ $[75] = fileIcon;
385
+ $[76] = filename;
386
+ $[77] = isAudioType;
387
+ $[78] = showControls;
388
+ $[79] = url;
389
+ $[80] = t11;
390
+ } else t11 = $[80];
435
391
  let t12;
436
- if ($[89] !== fileIcon || $[90] !== filename || $[91] !== isAudioType || $[92] !== isImageType || $[93] !== isVideoType) {
437
- t12 = !isImageType && !isVideoType && !isAudioType && /* @__PURE__ */ jsxs("div", {
392
+ if ($[81] !== fileIcon || $[82] !== filename || $[83] !== isAudioType || $[84] !== isImageType || $[85] !== isVideoType || $[86] !== url) {
393
+ t12 = (!url || !isImageType && !isVideoType && !isAudioType) && /* @__PURE__ */ jsxs("div", {
438
394
  className: "flex flex-col items-center justify-center gap-4 p-12",
439
395
  children: [/* @__PURE__ */ jsx(Icon, {
440
396
  icon: fileIcon,
@@ -444,65 +400,55 @@ function AssetThumbnail(t0) {
444
400
  children: filename || "File"
445
401
  })]
446
402
  });
447
- $[89] = fileIcon;
448
- $[90] = filename;
449
- $[91] = isAudioType;
450
- $[92] = isImageType;
451
- $[93] = isVideoType;
452
- $[94] = t12;
453
- } else t12 = $[94];
403
+ $[81] = fileIcon;
404
+ $[82] = filename;
405
+ $[83] = isAudioType;
406
+ $[84] = isImageType;
407
+ $[85] = isVideoType;
408
+ $[86] = url;
409
+ $[87] = t12;
410
+ } else t12 = $[87];
454
411
  let t13;
455
- if ($[95] !== url) {
456
- t13 = /* @__PURE__ */ jsx("a", {
457
- href: url,
458
- target: "_blank",
459
- rel: "noopener noreferrer"
460
- });
461
- $[95] = url;
462
- $[96] = t13;
463
- } else t13 = $[96];
464
- let t14;
465
- if ($[97] === Symbol.for("react.memo_cache_sentinel")) {
466
- t14 = /* @__PURE__ */ jsx(Icon, { icon: "ph:arrow-square-out-bold" });
467
- $[97] = t14;
468
- } else t14 = $[97];
469
- let t15;
470
- if ($[98] !== t13) {
471
- t15 = /* @__PURE__ */ jsx("div", {
412
+ if ($[88] !== url) {
413
+ t13 = url && /* @__PURE__ */ jsx("div", {
472
414
  className: "absolute top-2 right-2",
473
415
  children: /* @__PURE__ */ jsx(Button, {
474
416
  type: "button",
475
417
  variant: "secondary",
476
418
  size: "icon-sm",
477
419
  nativeButton: false,
478
- render: t13,
479
- children: t14
420
+ render: /* @__PURE__ */ jsx("a", {
421
+ href: url,
422
+ target: "_blank",
423
+ rel: "noopener noreferrer"
424
+ }),
425
+ children: /* @__PURE__ */ jsx(Icon, { icon: "ph:arrow-square-out-bold" })
480
426
  })
481
427
  });
482
- $[98] = t13;
483
- $[99] = t15;
484
- } else t15 = $[99];
485
- let t16;
486
- if ($[100] !== t10 || $[101] !== t11 || $[102] !== t12 || $[103] !== t15 || $[104] !== t8 || $[105] !== t9) {
487
- t16 = /* @__PURE__ */ jsxs("div", {
428
+ $[88] = url;
429
+ $[89] = t13;
430
+ } else t13 = $[89];
431
+ let t14;
432
+ if ($[90] !== t10 || $[91] !== t11 || $[92] !== t12 || $[93] !== t13 || $[94] !== t8 || $[95] !== t9) {
433
+ t14 = /* @__PURE__ */ jsxs("div", {
488
434
  className: t8,
489
435
  children: [
490
436
  t9,
491
437
  t10,
492
438
  t11,
493
439
  t12,
494
- t15
440
+ t13
495
441
  ]
496
442
  });
497
- $[100] = t10;
498
- $[101] = t11;
499
- $[102] = t12;
500
- $[103] = t15;
501
- $[104] = t8;
502
- $[105] = t9;
503
- $[106] = t16;
504
- } else t16 = $[106];
505
- return t16;
443
+ $[90] = t10;
444
+ $[91] = t11;
445
+ $[92] = t12;
446
+ $[93] = t13;
447
+ $[94] = t8;
448
+ $[95] = t9;
449
+ $[96] = t14;
450
+ } else t14 = $[96];
451
+ return t14;
506
452
  }
507
453
 
508
454
  //#endregion