@questpie/admin 3.0.4 → 3.0.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 (58) hide show
  1. package/dist/client/components/blocks/block-editor-layout.mjs +2 -2
  2. package/dist/client/components/blocks/block-library-sidebar.mjs +89 -61
  3. package/dist/client/components/media/media-grid.mjs +95 -78
  4. package/dist/client/components/primitives/select-multi.mjs +388 -368
  5. package/dist/client/components/primitives/select-single.mjs +344 -331
  6. package/dist/client/components/widgets/chart-widget.mjs +78 -62
  7. package/dist/client/components/widgets/progress-widget.mjs +39 -37
  8. package/dist/client/components/widgets/quick-actions-widget.mjs +111 -90
  9. package/dist/client/components/widgets/recent-items-widget.mjs +40 -38
  10. package/dist/client/components/widgets/table-widget.mjs +4 -3
  11. package/dist/client/components/widgets/timeline-widget.mjs +92 -74
  12. package/dist/client/components/widgets/value-widget.mjs +164 -144
  13. package/dist/client/hooks/use-server-actions.mjs +21 -16
  14. package/dist/client/preview/block-scope-context.d.mts +2 -2
  15. package/dist/client/preview/preview-banner.d.mts +2 -2
  16. package/dist/client/preview/preview-banner.mjs +75 -46
  17. package/dist/client/views/auth/accept-invite-form.d.mts +2 -2
  18. package/dist/client/views/auth/auth-layout.d.mts +2 -2
  19. package/dist/client/views/auth/forgot-password-form.d.mts +2 -2
  20. package/dist/client/views/auth/login-form.d.mts +2 -2
  21. package/dist/client/views/auth/reset-password-form.d.mts +2 -2
  22. package/dist/client/views/auth/setup-form.d.mts +2 -2
  23. package/dist/client/views/collection/table-view.mjs +26 -26
  24. package/dist/client/views/layout/admin-layout.mjs +151 -131
  25. package/dist/client/views/layout/admin-router.mjs +297 -180
  26. package/dist/client/views/layout/admin-sidebar.mjs +126 -116
  27. package/dist/client/views/pages/login-page.d.mts +2 -2
  28. package/dist/client/views/pages/reset-password-page.d.mts +2 -2
  29. package/dist/client/views/pages/setup-page.mjs +67 -51
  30. package/dist/server/i18n/index.mjs +13 -7
  31. package/dist/server/i18n/messages/cs.mjs +391 -1
  32. package/dist/server/i18n/messages/de.mjs +389 -1
  33. package/dist/server/i18n/messages/en.mjs +102 -0
  34. package/dist/server/i18n/messages/es.mjs +389 -1
  35. package/dist/server/i18n/messages/fr.mjs +389 -1
  36. package/dist/server/i18n/messages/pl.mjs +393 -1
  37. package/dist/server/i18n/messages/pt.mjs +386 -1
  38. package/dist/server/i18n/messages/sk.mjs +133 -1
  39. package/dist/server/modules/admin/collections/account.d.mts +50 -50
  40. package/dist/server/modules/admin/collections/admin-locks.d.mts +54 -54
  41. package/dist/server/modules/admin/collections/admin-preferences.d.mts +39 -39
  42. package/dist/server/modules/admin/collections/admin-saved-views.d.mts +41 -41
  43. package/dist/server/modules/admin/collections/apikey.d.mts +68 -68
  44. package/dist/server/modules/admin/collections/assets.d.mts +20 -20
  45. package/dist/server/modules/admin/collections/session.d.mts +42 -42
  46. package/dist/server/modules/admin/collections/user.d.mts +32 -32
  47. package/dist/server/modules/admin/collections/verification.d.mts +36 -36
  48. package/dist/server/modules/admin/routes/admin-config.d.mts +2 -2
  49. package/dist/server/modules/admin/routes/execute-action.d.mts +9 -9
  50. package/dist/server/modules/admin/routes/execute-action.mjs +34 -28
  51. package/dist/server/modules/admin/routes/i18n-helpers.mjs +34 -0
  52. package/dist/server/modules/admin/routes/preview.d.mts +11 -11
  53. package/dist/server/modules/admin/routes/preview.mjs +25 -17
  54. package/dist/server/modules/admin/routes/route-helpers.mjs +1 -1
  55. package/dist/server/modules/admin/routes/setup.mjs +10 -7
  56. package/dist/server/modules/admin/routes/widget-data.d.mts +5 -5
  57. package/dist/server/modules/admin-preferences/collections/saved-views.d.mts +27 -27
  58. package/package.json +3 -3
@@ -138,7 +138,7 @@ function BlockEditorLayout(t0) {
138
138
  }),
139
139
  /* @__PURE__ */ jsx("p", {
140
140
  className: "text-sm font-medium",
141
- children: "No blocks yet"
141
+ children: t("blocks.emptyTitle")
142
142
  }),
143
143
  /* @__PURE__ */ jsx("p", {
144
144
  className: "text-muted-foreground mt-1 text-xs",
@@ -153,7 +153,7 @@ function BlockEditorLayout(t0) {
153
153
  children: [/* @__PURE__ */ jsx(Icon, {
154
154
  icon: "ph:plus",
155
155
  className: "mr-2 h-4 w-4"
156
- }), "Add block"]
156
+ }), t("blocks.add")]
157
157
  })]
158
158
  });
159
159
  $[19] = handleOpenSidebar;
@@ -19,7 +19,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
19
19
  * Uses shadcn Sheet component for mobile-friendly sidebar.
20
20
  */
21
21
  function BlockLibrarySidebar(t0) {
22
- const $ = c(32);
22
+ const $ = c(44);
23
23
  const { open, onClose } = t0;
24
24
  const { t } = useTranslation();
25
25
  const actions = useBlockEditorActions();
@@ -113,54 +113,80 @@ function BlockLibrarySidebar(t0) {
113
113
  $[12] = t4;
114
114
  } else t4 = $[12];
115
115
  let t5;
116
- if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
117
- t5 = /* @__PURE__ */ jsxs(SheetHeader, {
116
+ if ($[13] !== t) {
117
+ t5 = t("blocks.add");
118
+ $[13] = t;
119
+ $[14] = t5;
120
+ } else t5 = $[14];
121
+ let t6;
122
+ if ($[15] !== t5) {
123
+ t6 = /* @__PURE__ */ jsx(SheetTitle, { children: t5 });
124
+ $[15] = t5;
125
+ $[16] = t6;
126
+ } else t6 = $[16];
127
+ let t7;
128
+ if ($[17] !== t) {
129
+ t7 = t("blocks.libraryDescription");
130
+ $[17] = t;
131
+ $[18] = t7;
132
+ } else t7 = $[18];
133
+ let t8;
134
+ if ($[19] !== t7) {
135
+ t8 = /* @__PURE__ */ jsx(SheetDescription, { children: t7 });
136
+ $[19] = t7;
137
+ $[20] = t8;
138
+ } else t8 = $[20];
139
+ let t9;
140
+ if ($[21] !== t6 || $[22] !== t8) {
141
+ t9 = /* @__PURE__ */ jsxs(SheetHeader, {
118
142
  className: "space-y-2",
119
- children: [/* @__PURE__ */ jsx(SheetTitle, { children: "Add Block" }), /* @__PURE__ */ jsx(SheetDescription, { children: "Select a block type to add to your content" })]
143
+ children: [t6, t8]
120
144
  });
121
- $[13] = t5;
122
- } else t5 = $[13];
123
- let t6;
124
- if ($[14] === Symbol.for("react.memo_cache_sentinel")) {
125
- t6 = /* @__PURE__ */ jsx(Icon, {
145
+ $[21] = t6;
146
+ $[22] = t8;
147
+ $[23] = t9;
148
+ } else t9 = $[23];
149
+ let t10;
150
+ if ($[24] === Symbol.for("react.memo_cache_sentinel")) {
151
+ t10 = /* @__PURE__ */ jsx(Icon, {
126
152
  icon: "ph:magnifying-glass",
127
153
  className: "text-muted-foreground absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2"
128
154
  });
129
- $[14] = t6;
130
- } else t6 = $[14];
131
- let t7;
132
- if ($[15] !== t) {
133
- t7 = t("blocks.searchPlaceholder");
134
- $[15] = t;
135
- $[16] = t7;
136
- } else t7 = $[16];
137
- let t8;
138
- if ($[17] === Symbol.for("react.memo_cache_sentinel")) {
139
- t8 = (e) => setSearch(e.target.value);
140
- $[17] = t8;
141
- } else t8 = $[17];
142
- let t9;
143
- if ($[18] !== search || $[19] !== t7) {
144
- t9 = /* @__PURE__ */ jsx("div", {
155
+ $[24] = t10;
156
+ } else t10 = $[24];
157
+ let t11;
158
+ if ($[25] !== t) {
159
+ t11 = t("blocks.searchPlaceholder");
160
+ $[25] = t;
161
+ $[26] = t11;
162
+ } else t11 = $[26];
163
+ let t12;
164
+ if ($[27] === Symbol.for("react.memo_cache_sentinel")) {
165
+ t12 = (e) => setSearch(e.target.value);
166
+ $[27] = t12;
167
+ } else t12 = $[27];
168
+ let t13;
169
+ if ($[28] !== search || $[29] !== t11) {
170
+ t13 = /* @__PURE__ */ jsx("div", {
145
171
  className: "px-6 py-4",
146
172
  children: /* @__PURE__ */ jsxs("div", {
147
173
  className: "relative",
148
- children: [t6, /* @__PURE__ */ jsx(Input, {
174
+ children: [t10, /* @__PURE__ */ jsx(Input, {
149
175
  ref: searchInputRef,
150
- placeholder: t7,
176
+ placeholder: t11,
151
177
  value: search,
152
- onChange: t8,
178
+ onChange: t12,
153
179
  className: "pl-9"
154
180
  })]
155
181
  })
156
182
  });
157
- $[18] = search;
158
- $[19] = t7;
159
- $[20] = t9;
160
- } else t9 = $[20];
161
- let t10;
162
- if ($[21] !== categories || $[22] !== handleSelectBlock || $[23] !== search) {
163
- t10 = /* @__PURE__ */ jsx("div", {
183
+ $[28] = search;
184
+ $[29] = t11;
185
+ $[30] = t13;
186
+ } else t13 = $[30];
187
+ let t14;
188
+ if ($[31] !== categories || $[32] !== handleSelectBlock || $[33] !== search || $[34] !== t) {
189
+ t14 = /* @__PURE__ */ jsx("div", {
164
190
  className: "flex-1 overflow-y-auto px-6 pb-6",
165
191
  children: categories.length === 0 ? /* @__PURE__ */ jsxs("div", {
166
192
  className: "flex flex-col items-center justify-center py-12 text-center",
@@ -171,11 +197,11 @@ function BlockLibrarySidebar(t0) {
171
197
  }),
172
198
  /* @__PURE__ */ jsx("p", {
173
199
  className: "text-muted-foreground text-sm",
174
- children: "No blocks found"
200
+ children: t("blocks.noSearchResults")
175
201
  }),
176
202
  search && /* @__PURE__ */ jsx("p", {
177
203
  className: "text-muted-foreground mt-1 text-xs",
178
- children: "Try a different search term"
204
+ children: t("blocks.tryDifferentSearch")
179
205
  })
180
206
  ]
181
207
  }) : /* @__PURE__ */ jsx("div", {
@@ -213,39 +239,41 @@ function BlockLibrarySidebar(t0) {
213
239
  })] }, category_0.key))
214
240
  })
215
241
  });
216
- $[21] = categories;
217
- $[22] = handleSelectBlock;
218
- $[23] = search;
219
- $[24] = t10;
220
- } else t10 = $[24];
221
- let t11;
222
- if ($[25] !== t10 || $[26] !== t9) {
223
- t11 = /* @__PURE__ */ jsxs(SheetContent, {
242
+ $[31] = categories;
243
+ $[32] = handleSelectBlock;
244
+ $[33] = search;
245
+ $[34] = t;
246
+ $[35] = t14;
247
+ } else t14 = $[35];
248
+ let t15;
249
+ if ($[36] !== t13 || $[37] !== t14 || $[38] !== t9) {
250
+ t15 = /* @__PURE__ */ jsxs(SheetContent, {
224
251
  side: "left",
225
252
  className: "qa-block-library flex w-full flex-col sm:max-w-md",
226
253
  children: [
227
- t5,
228
254
  t9,
229
- t10
255
+ t13,
256
+ t14
230
257
  ]
231
258
  });
232
- $[25] = t10;
233
- $[26] = t9;
234
- $[27] = t11;
235
- } else t11 = $[27];
236
- let t12;
237
- if ($[28] !== open || $[29] !== t11 || $[30] !== t4) {
238
- t12 = /* @__PURE__ */ jsx(Sheet, {
259
+ $[36] = t13;
260
+ $[37] = t14;
261
+ $[38] = t9;
262
+ $[39] = t15;
263
+ } else t15 = $[39];
264
+ let t16;
265
+ if ($[40] !== open || $[41] !== t15 || $[42] !== t4) {
266
+ t16 = /* @__PURE__ */ jsx(Sheet, {
239
267
  open,
240
268
  onOpenChange: t4,
241
- children: t11
269
+ children: t15
242
270
  });
243
- $[28] = open;
244
- $[29] = t11;
245
- $[30] = t4;
246
- $[31] = t12;
247
- } else t12 = $[31];
248
- return t12;
271
+ $[40] = open;
272
+ $[41] = t15;
273
+ $[42] = t4;
274
+ $[43] = t16;
275
+ } else t16 = $[43];
276
+ return t16;
249
277
  }
250
278
  function _temp2(a_0, b_0) {
251
279
  return (a_0.admin?.order ?? 999) - (b_0.admin?.order ?? 999);
@@ -1,3 +1,4 @@
1
+ import { useSafeI18n } from "../../i18n/hooks.mjs";
1
2
  import { cn } from "../../lib/utils.mjs";
2
3
  import { Skeleton } from "../ui/skeleton.mjs";
3
4
  import { c } from "react/compiler-runtime";
@@ -198,15 +199,23 @@ function AssetItem(t0) {
198
199
  }
199
200
  const EMPTY_SET = /* @__PURE__ */ new Set();
200
201
  function MediaGrid(t0) {
201
- const $ = c(31);
202
+ const $ = c(37);
202
203
  const { assets, selectedIds: t1, onSelectionChange, selectionMode: t2, loading: t3, onAssetClick, columns: t4, className } = t0;
203
204
  const selectedIds = t1 === void 0 ? EMPTY_SET : t1;
204
205
  const selectionMode = t2 === void 0 ? "none" : t2;
205
206
  const loading = t3 === void 0 ? false : t3;
206
207
  const columns = t4 === void 0 ? 4 : t4;
208
+ const i18n = useSafeI18n();
207
209
  let t5;
208
- if ($[0] !== onSelectionChange || $[1] !== selectedIds || $[2] !== selectionMode) {
209
- t5 = (assetId) => {
210
+ if ($[0] !== i18n) {
211
+ t5 = (key, fallback) => i18n?.t(key) ?? fallback;
212
+ $[0] = i18n;
213
+ $[1] = t5;
214
+ } else t5 = $[1];
215
+ const t = t5;
216
+ let t6;
217
+ if ($[2] !== onSelectionChange || $[3] !== selectedIds || $[4] !== selectionMode) {
218
+ t6 = (assetId) => {
210
219
  if (!onSelectionChange) return;
211
220
  const newSelection = new Set(selectedIds);
212
221
  if (selectionMode === "single") {
@@ -216,101 +225,109 @@ function MediaGrid(t0) {
216
225
  else newSelection.add(assetId);
217
226
  onSelectionChange(newSelection);
218
227
  };
219
- $[0] = onSelectionChange;
220
- $[1] = selectedIds;
221
- $[2] = selectionMode;
222
- $[3] = t5;
223
- } else t5 = $[3];
224
- const handleToggle = t5;
228
+ $[2] = onSelectionChange;
229
+ $[3] = selectedIds;
230
+ $[4] = selectionMode;
231
+ $[5] = t6;
232
+ } else t6 = $[5];
233
+ const handleToggle = t6;
225
234
  if (loading) {
226
- let t6$1;
227
- if ($[4] !== columns) {
228
- t6$1 = /* @__PURE__ */ jsx(MediaGridSkeleton, { columns });
229
- $[4] = columns;
230
- $[5] = t6$1;
231
- } else t6$1 = $[5];
232
235
  let t7$1;
233
- if ($[6] !== className || $[7] !== t6$1) {
234
- t7$1 = /* @__PURE__ */ jsx("div", {
236
+ if ($[6] !== columns) {
237
+ t7$1 = /* @__PURE__ */ jsx(MediaGridSkeleton, { columns });
238
+ $[6] = columns;
239
+ $[7] = t7$1;
240
+ } else t7$1 = $[7];
241
+ let t8$1;
242
+ if ($[8] !== className || $[9] !== t7$1) {
243
+ t8$1 = /* @__PURE__ */ jsx("div", {
235
244
  className,
236
- children: t6$1
245
+ children: t7$1
237
246
  });
238
- $[6] = className;
239
- $[7] = t6$1;
240
- $[8] = t7$1;
241
- } else t7$1 = $[8];
242
- return t7$1;
247
+ $[8] = className;
248
+ $[9] = t7$1;
249
+ $[10] = t8$1;
250
+ } else t8$1 = $[10];
251
+ return t8$1;
243
252
  }
244
253
  if (assets.length === 0) {
245
- let t6$1;
246
- if ($[9] !== className) {
247
- t6$1 = cn("flex flex-col items-center justify-center p-8", "text-muted-foreground", className);
248
- $[9] = className;
249
- $[10] = t6$1;
250
- } else t6$1 = $[10];
251
254
  let t7$1;
252
- if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
253
- t7$1 = /* @__PURE__ */ jsx("p", {
255
+ if ($[11] !== className) {
256
+ t7$1 = cn("flex flex-col items-center justify-center p-8", "text-muted-foreground", className);
257
+ $[11] = className;
258
+ $[12] = t7$1;
259
+ } else t7$1 = $[12];
260
+ let t8$1;
261
+ if ($[13] !== t) {
262
+ t8$1 = t("media.noAssets", "No assets found");
263
+ $[13] = t;
264
+ $[14] = t8$1;
265
+ } else t8$1 = $[14];
266
+ let t9$1;
267
+ if ($[15] !== t8$1) {
268
+ t9$1 = /* @__PURE__ */ jsx("p", {
254
269
  className: "text-sm",
255
- children: "No assets found"
270
+ children: t8$1
256
271
  });
257
- $[11] = t7$1;
258
- } else t7$1 = $[11];
259
- let t8$1;
260
- if ($[12] !== t6$1) {
261
- t8$1 = /* @__PURE__ */ jsx("div", {
262
- className: t6$1,
263
- children: t7$1
272
+ $[15] = t8$1;
273
+ $[16] = t9$1;
274
+ } else t9$1 = $[16];
275
+ let t10;
276
+ if ($[17] !== t7$1 || $[18] !== t9$1) {
277
+ t10 = /* @__PURE__ */ jsx("div", {
278
+ className: t7$1,
279
+ children: t9$1
264
280
  });
265
- $[12] = t6$1;
266
- $[13] = t8$1;
267
- } else t8$1 = $[13];
268
- return t8$1;
281
+ $[17] = t7$1;
282
+ $[18] = t9$1;
283
+ $[19] = t10;
284
+ } else t10 = $[19];
285
+ return t10;
269
286
  }
270
287
  const gridClass = columns === 2 ? "grid-cols-2" : columns === 3 ? "grid-cols-2 sm:grid-cols-3" : columns === 5 ? "grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5" : "grid-cols-2 sm:grid-cols-3 lg:grid-cols-4";
271
- let t6;
272
- if ($[14] !== className || $[15] !== gridClass) {
273
- t6 = cn("grid gap-3", gridClass, className);
274
- $[14] = className;
275
- $[15] = gridClass;
276
- $[16] = t6;
277
- } else t6 = $[16];
278
288
  let t7;
279
- if ($[17] !== assets || $[18] !== handleToggle || $[19] !== onAssetClick || $[20] !== selectedIds || $[21] !== selectionMode) {
280
- let t8$1;
281
- if ($[23] !== handleToggle || $[24] !== onAssetClick || $[25] !== selectedIds || $[26] !== selectionMode) {
282
- t8$1 = (asset) => /* @__PURE__ */ jsx(AssetItem, {
289
+ if ($[20] !== className || $[21] !== gridClass) {
290
+ t7 = cn("grid gap-3", gridClass, className);
291
+ $[20] = className;
292
+ $[21] = gridClass;
293
+ $[22] = t7;
294
+ } else t7 = $[22];
295
+ let t8;
296
+ if ($[23] !== assets || $[24] !== handleToggle || $[25] !== onAssetClick || $[26] !== selectedIds || $[27] !== selectionMode) {
297
+ let t9$1;
298
+ if ($[29] !== handleToggle || $[30] !== onAssetClick || $[31] !== selectedIds || $[32] !== selectionMode) {
299
+ t9$1 = (asset) => /* @__PURE__ */ jsx(AssetItem, {
283
300
  asset,
284
301
  selected: selectedIds.has(asset.id),
285
302
  selectionMode,
286
303
  onToggle: () => handleToggle(asset.id),
287
304
  onClick: onAssetClick ? () => onAssetClick(asset) : void 0
288
305
  }, asset.id);
289
- $[23] = handleToggle;
290
- $[24] = onAssetClick;
291
- $[25] = selectedIds;
292
- $[26] = selectionMode;
293
- $[27] = t8$1;
294
- } else t8$1 = $[27];
295
- t7 = assets.map(t8$1);
296
- $[17] = assets;
297
- $[18] = handleToggle;
298
- $[19] = onAssetClick;
299
- $[20] = selectedIds;
300
- $[21] = selectionMode;
301
- $[22] = t7;
302
- } else t7 = $[22];
303
- let t8;
304
- if ($[28] !== t6 || $[29] !== t7) {
305
- t8 = /* @__PURE__ */ jsx("div", {
306
- className: t6,
307
- children: t7
306
+ $[29] = handleToggle;
307
+ $[30] = onAssetClick;
308
+ $[31] = selectedIds;
309
+ $[32] = selectionMode;
310
+ $[33] = t9$1;
311
+ } else t9$1 = $[33];
312
+ t8 = assets.map(t9$1);
313
+ $[23] = assets;
314
+ $[24] = handleToggle;
315
+ $[25] = onAssetClick;
316
+ $[26] = selectedIds;
317
+ $[27] = selectionMode;
318
+ $[28] = t8;
319
+ } else t8 = $[28];
320
+ let t9;
321
+ if ($[34] !== t7 || $[35] !== t8) {
322
+ t9 = /* @__PURE__ */ jsx("div", {
323
+ className: t7,
324
+ children: t8
308
325
  });
309
- $[28] = t6;
310
- $[29] = t7;
311
- $[30] = t8;
312
- } else t8 = $[30];
313
- return t8;
326
+ $[34] = t7;
327
+ $[35] = t8;
328
+ $[36] = t9;
329
+ } else t9 = $[36];
330
+ return t9;
314
331
  }
315
332
 
316
333
  //#endregion