@dyrected/admin 2.5.61 → 2.5.63

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.
package/dist/admin.css CHANGED
@@ -221,8 +221,8 @@
221
221
  --destructive: 0 72% 58%;
222
222
  --destructive-foreground: 0 0% 100%;
223
223
 
224
- --border: 256 20% 21%;
225
- --input: 256 20% 21%;
224
+ --border: 256 18% 28%;
225
+ --input: 256 18% 28%;
226
226
  --ring: 259 100% 70% / 0.34;
227
227
 
228
228
  --sidebar-background: 240 10% 4%;
@@ -2771,6 +2771,11 @@
2771
2771
  border-color: rgb(16 185 129 / 0.2);
2772
2772
  }
2773
2773
 
2774
+ .dy-border-green-200{
2775
+ --tw-border-opacity: 1;
2776
+ border-color: rgb(187 247 208 / var(--tw-border-opacity, 1));
2777
+ }
2778
+
2774
2779
  .dy-border-input{
2775
2780
  border-color: hsl(var(--input));
2776
2781
  }
@@ -3024,11 +3029,6 @@
3024
3029
  background-color: hsl(var(--destructive) / 0.9);
3025
3030
  }
3026
3031
 
3027
- .dy-bg-emerald-100{
3028
- --tw-bg-opacity: 1;
3029
- background-color: rgb(209 250 229 / var(--tw-bg-opacity, 1));
3030
- }
3031
-
3032
3032
  .dy-bg-emerald-50{
3033
3033
  --tw-bg-opacity: 1;
3034
3034
  background-color: rgb(236 253 245 / var(--tw-bg-opacity, 1));
@@ -3043,6 +3043,11 @@
3043
3043
  background-color: rgb(16 185 129 / 0.1);
3044
3044
  }
3045
3045
 
3046
+ .dy-bg-green-100{
3047
+ --tw-bg-opacity: 1;
3048
+ background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1));
3049
+ }
3050
+
3046
3051
  .dy-bg-green-500\/10{
3047
3052
  background-color: rgb(34 197 94 / 0.1);
3048
3053
  }
@@ -3770,6 +3775,11 @@
3770
3775
  color: rgb(22 163 74 / var(--tw-text-opacity, 1));
3771
3776
  }
3772
3777
 
3778
+ .dy-text-green-700{
3779
+ --tw-text-opacity: 1;
3780
+ color: rgb(21 128 61 / var(--tw-text-opacity, 1));
3781
+ }
3782
+
3773
3783
  .dy-text-muted-foreground{
3774
3784
  color: hsl(var(--muted-foreground));
3775
3785
  }
@@ -5566,25 +5576,121 @@
5566
5576
  padding: 0px !important;
5567
5577
  }
5568
5578
 
5579
+ .dark\:dy-border-amber-500\/30:is(.dy-dark *){
5580
+ border-color: rgb(245 158 11 / 0.3);
5581
+ }
5582
+
5583
+ .dark\:dy-border-blue-500\/30:is(.dy-dark *){
5584
+ border-color: rgb(59 130 246 / 0.3);
5585
+ }
5586
+
5587
+ .dark\:dy-border-border\/80:is(.dy-dark *){
5588
+ border-color: hsl(var(--border) / 0.8);
5589
+ }
5590
+
5591
+ .dark\:dy-border-emerald-500\/30:is(.dy-dark *){
5592
+ border-color: rgb(16 185 129 / 0.3);
5593
+ }
5594
+
5595
+ .dark\:dy-border-green-500\/30:is(.dy-dark *){
5596
+ border-color: rgb(34 197 94 / 0.3);
5597
+ }
5598
+
5599
+ .dark\:dy-border-red-500\/30:is(.dy-dark *){
5600
+ border-color: rgb(239 68 68 / 0.3);
5601
+ }
5602
+
5603
+ .dark\:dy-bg-amber-400:is(.dy-dark *){
5604
+ --tw-bg-opacity: 1;
5605
+ background-color: rgb(251 191 36 / var(--tw-bg-opacity, 1));
5606
+ }
5607
+
5608
+ .dark\:dy-bg-amber-600:is(.dy-dark *){
5609
+ --tw-bg-opacity: 1;
5610
+ background-color: rgb(217 119 6 / var(--tw-bg-opacity, 1));
5611
+ }
5612
+
5613
+ .dark\:dy-bg-blue-400:is(.dy-dark *){
5614
+ --tw-bg-opacity: 1;
5615
+ background-color: rgb(96 165 250 / var(--tw-bg-opacity, 1));
5616
+ }
5617
+
5618
+ .dark\:dy-bg-blue-600:is(.dy-dark *){
5619
+ --tw-bg-opacity: 1;
5620
+ background-color: rgb(37 99 235 / var(--tw-bg-opacity, 1));
5621
+ }
5622
+
5623
+ .dark\:dy-bg-emerald-400:is(.dy-dark *){
5624
+ --tw-bg-opacity: 1;
5625
+ background-color: rgb(52 211 153 / var(--tw-bg-opacity, 1));
5626
+ }
5627
+
5628
+ .dark\:dy-bg-foreground\/60:is(.dy-dark *){
5629
+ background-color: hsl(var(--foreground) / 0.6);
5630
+ }
5631
+
5632
+ .dark\:dy-bg-green-600:is(.dy-dark *){
5633
+ --tw-bg-opacity: 1;
5634
+ background-color: rgb(22 163 74 / var(--tw-bg-opacity, 1));
5635
+ }
5636
+
5637
+ .dark\:dy-bg-muted\/60:is(.dy-dark *){
5638
+ background-color: hsl(var(--muted) / 0.6);
5639
+ }
5640
+
5641
+ .dark\:dy-bg-red-400:is(.dy-dark *){
5642
+ --tw-bg-opacity: 1;
5643
+ background-color: rgb(248 113 113 / var(--tw-bg-opacity, 1));
5644
+ }
5645
+
5646
+ .dark\:dy-bg-red-600:is(.dy-dark *){
5647
+ --tw-bg-opacity: 1;
5648
+ background-color: rgb(220 38 38 / var(--tw-bg-opacity, 1));
5649
+ }
5650
+
5569
5651
  .dark\:dy-bg-white\/5:is(.dy-dark *){
5570
5652
  background-color: rgb(255 255 255 / 0.05);
5571
5653
  }
5572
5654
 
5655
+ .dark\:dy-text-amber-300:is(.dy-dark *){
5656
+ --tw-text-opacity: 1;
5657
+ color: rgb(252 211 77 / var(--tw-text-opacity, 1));
5658
+ }
5659
+
5573
5660
  .dark\:dy-text-amber-400:is(.dy-dark *){
5574
5661
  --tw-text-opacity: 1;
5575
5662
  color: rgb(251 191 36 / var(--tw-text-opacity, 1));
5576
5663
  }
5577
5664
 
5665
+ .dark\:dy-text-blue-300:is(.dy-dark *){
5666
+ --tw-text-opacity: 1;
5667
+ color: rgb(147 197 253 / var(--tw-text-opacity, 1));
5668
+ }
5669
+
5578
5670
  .dark\:dy-text-blue-400:is(.dy-dark *){
5579
5671
  --tw-text-opacity: 1;
5580
5672
  color: rgb(96 165 250 / var(--tw-text-opacity, 1));
5581
5673
  }
5582
5674
 
5675
+ .dark\:dy-text-emerald-300:is(.dy-dark *){
5676
+ --tw-text-opacity: 1;
5677
+ color: rgb(110 231 183 / var(--tw-text-opacity, 1));
5678
+ }
5679
+
5583
5680
  .dark\:dy-text-emerald-400:is(.dy-dark *){
5584
5681
  --tw-text-opacity: 1;
5585
5682
  color: rgb(52 211 153 / var(--tw-text-opacity, 1));
5586
5683
  }
5587
5684
 
5685
+ .dark\:dy-text-foreground\/80:is(.dy-dark *){
5686
+ color: hsl(var(--foreground) / 0.8);
5687
+ }
5688
+
5689
+ .dark\:dy-text-green-300:is(.dy-dark *){
5690
+ --tw-text-opacity: 1;
5691
+ color: rgb(134 239 172 / var(--tw-text-opacity, 1));
5692
+ }
5693
+
5588
5694
  .dark\:dy-text-green-400:is(.dy-dark *){
5589
5695
  --tw-text-opacity: 1;
5590
5696
  color: rgb(74 222 128 / var(--tw-text-opacity, 1));
@@ -5595,6 +5701,15 @@
5595
5701
  color: rgb(192 132 252 / var(--tw-text-opacity, 1));
5596
5702
  }
5597
5703
 
5704
+ .dark\:dy-text-red-300:is(.dy-dark *){
5705
+ --tw-text-opacity: 1;
5706
+ color: rgb(252 165 165 / var(--tw-text-opacity, 1));
5707
+ }
5708
+
5709
+ .dark\:focus-visible\:dy-border-primary\/45:focus-visible:is(.dy-dark *){
5710
+ border-color: hsl(var(--primary) / 0.45);
5711
+ }
5712
+
5598
5713
  @media (min-width: 640px){
5599
5714
 
5600
5715
  .sm\:dy-order-1{
@@ -2,7 +2,7 @@ import { VariantProps } from 'class-variance-authority';
2
2
  import * as React from "react";
3
3
  declare const buttonVariants: (props?: {
4
4
  variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost";
5
- size?: "default" | "sm" | "lg" | "icon";
5
+ size?: "icon" | "default" | "sm" | "lg";
6
6
  } & import('class-variance-authority/types').ClassProp) => string;
7
7
  export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
8
8
  asChild?: boolean;
@@ -48,7 +48,7 @@ declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
48
48
  ref?: React.Ref<HTMLDivElement>;
49
49
  } & {
50
50
  asChild?: boolean;
51
- }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "value" | "heading"> & {
51
+ }, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "heading" | "value"> & {
52
52
  heading?: React.ReactNode;
53
53
  value?: string;
54
54
  forceMount?: boolean;
package/dist/index.mjs CHANGED
@@ -3,7 +3,7 @@ import React, { Component, StrictMode, createContext, createElement, useCallback
3
3
  import { createRoot } from "react-dom/client";
4
4
  import { HashRouter, Link, MemoryRouter, Route, Routes, useLocation, useNavigate, useParams, useSearchParams } from "react-router-dom";
5
5
  import { QueryClient, QueryClientProvider, keepPreviousData, useInfiniteQuery, useMutation, useQueries, useQuery, useQueryClient } from "@tanstack/react-query";
6
- import { PREVIEW_TOKEN_PARAM, createClient } from "@dyrected/sdk";
6
+ import { DyrectedError, PREVIEW_TOKEN_PARAM, createClient } from "@dyrected/sdk";
7
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
8
  import { AlertCircle, AlertTriangle, AlignCenter, AlignLeft, AlignRight, Archive, ArrowDown, ArrowLeft, ArrowRight, ArrowUp, ArrowUpDown, ArrowUpRight, Bold, Braces, Calendar, Check, CheckCircle, CheckCircle2, ChevronDown, ChevronLeft, ChevronLeftIcon, ChevronRight, ChevronRightIcon, ChevronUp, ChevronsUpDown, Circle, Clock, Clock3, Code, Copy, Database, Download, ExternalLink, Eye, EyeOff, FileDown, FileIcon, FileText, FileUp, Filter, Globe, GripVertical, Heading1, Heading2, Heading3, Heading4, Heading5, Heading6, History, Home, Image as Image$1, Info, Italic, KeyRound, Layers, LayoutDashboard, LayoutGrid, Library, Link as Link$1, List, ListOrdered, Loader2, Lock, LogOut, Mail, Menu, Monitor, Moon, MoreHorizontal, MousePointer2, PanelLeftClose, PanelLeftOpen, Pencil, Play, Plus, Quote, RotateCcw, Save, Scissors, Search, Settings, Settings2, Share2, Shield, Smartphone, Sparkles, Star, Strikethrough, Sun, Table, Trash2, Underline, Undo2, Upload, UploadCloud, Users, Video, Volume2, Workflow, X, XCircle, icons } from "lucide-react";
9
9
  import { clsx } from "clsx";
@@ -67,6 +67,35 @@ function useDyrected() {
67
67
  }
68
68
  //#endregion
69
69
  //#region src/providers/dyrected-provider.tsx
70
+ function resolveBlock(block, registry) {
71
+ return {
72
+ ...block,
73
+ fields: block.fields.map((field) => resolveFieldBlocks(field, registry))
74
+ };
75
+ }
76
+ function resolveFieldBlocks(field, registry) {
77
+ const next = { ...field };
78
+ if (next.fields) next.fields = next.fields.map((child) => resolveFieldBlocks(child, registry));
79
+ if (next.type === "blocks" && next.blockReferences?.length) {
80
+ next.blocks = next.blockReferences.map((slug) => registry.get(slug)).filter((block) => !!block);
81
+ next.blocks = next.blocks.map((block) => resolveBlock(block, registry));
82
+ } else if (next.blocks) next.blocks = next.blocks.map((block) => resolveBlock(block, registry));
83
+ return next;
84
+ }
85
+ function resolveSchemas(schema) {
86
+ const registry = new Map((schema.blocks ?? []).map((block) => [block.slug, block]));
87
+ return {
88
+ ...schema,
89
+ collections: schema.collections.map((collection) => ({
90
+ ...collection,
91
+ fields: collection.fields.map((field) => resolveFieldBlocks(field, registry))
92
+ })),
93
+ globals: schema.globals.map((global) => ({
94
+ ...global,
95
+ fields: global.fields.map((field) => resolveFieldBlocks(field, registry))
96
+ }))
97
+ };
98
+ }
70
99
  function DyrectedProvider({ children, apiKey: initialApiKey, baseUrl: initialBaseUrl, siteId: initialSiteId, initialToken, defaultTechStack, components }) {
71
100
  const [baseUrl, setBaseUrl] = useState(() => initialBaseUrl || (typeof window !== "undefined" ? localStorage.getItem("dyrected_url") : null) || "");
72
101
  const [apiKey, setApiKey] = useState(() => initialApiKey || (typeof window !== "undefined" ? localStorage.getItem("dyrected_key") : null) || void 0);
@@ -94,7 +123,8 @@ function DyrectedProvider({ children, apiKey: initialApiKey, baseUrl: initialBas
94
123
  };
95
124
  client.getSchemas().then((nextSchemas) => {
96
125
  if (cancelled) return;
97
- setSchemas((prev) => prev === nextSchemas ? prev : nextSchemas);
126
+ const resolved = resolveSchemas(nextSchemas);
127
+ setSchemas((prev) => prev === resolved ? prev : resolved);
98
128
  }, (err) => {
99
129
  if (cancelled) return;
100
130
  console.error("Failed to fetch schemas:", err);
@@ -108,6 +138,16 @@ function DyrectedProvider({ children, apiKey: initialApiKey, baseUrl: initialBas
108
138
  useEffect(() => {
109
139
  if (initialToken && client) client.setToken(initialToken);
110
140
  }, [initialToken, client]);
141
+ const clearPersistedAuthState = useCallback((nextClient) => {
142
+ localStorage.removeItem("dyrected_token");
143
+ localStorage.removeItem("dyrected_admin_auth_collection");
144
+ (nextClient ?? client)?.clearToken();
145
+ setAuthCollectionSlug(null);
146
+ setUser(null);
147
+ }, [client]);
148
+ const shouldClearStoredAuth = useCallback((error) => {
149
+ return error instanceof DyrectedError && (error.statusCode === 401 || error.statusCode === 404);
150
+ }, []);
111
151
  const setAuth = useCallback((newUrl, newKey, newSiteId) => {
112
152
  localStorage.setItem("dyrected_url", newUrl);
113
153
  localStorage.setItem("dyrected_key", newKey);
@@ -119,11 +159,7 @@ function DyrectedProvider({ children, apiKey: initialApiKey, baseUrl: initialBas
119
159
  }, []);
120
160
  const setToken = useCallback((token, collectionSlug) => {
121
161
  if (!token) {
122
- localStorage.removeItem("dyrected_token");
123
- localStorage.removeItem("dyrected_admin_auth_collection");
124
- if (client) client.clearToken();
125
- setAuthCollectionSlug(null);
126
- setUser(null);
162
+ clearPersistedAuthState(client);
127
163
  return;
128
164
  }
129
165
  const resolvedCollectionSlug = collectionSlug || authCollectionSlug || getAdminCollectionSlug(schemas);
@@ -134,12 +170,20 @@ function DyrectedProvider({ children, apiKey: initialApiKey, baseUrl: initialBas
134
170
  }
135
171
  if (client) {
136
172
  client.setToken(token);
137
- if (resolvedCollectionSlug) client.collection(resolvedCollectionSlug).me().then((nextUser) => setUser(nextUser), () => setUser(null));
173
+ if (resolvedCollectionSlug) client.collection(resolvedCollectionSlug).me().then((nextUser) => setUser(nextUser), (error) => {
174
+ if (shouldClearStoredAuth(error)) {
175
+ clearPersistedAuthState(client);
176
+ return;
177
+ }
178
+ setUser(null);
179
+ });
138
180
  }
139
181
  }, [
140
182
  authCollectionSlug,
183
+ clearPersistedAuthState,
141
184
  client,
142
- schemas
185
+ schemas,
186
+ shouldClearStoredAuth
143
187
  ]);
144
188
  useEffect(() => {
145
189
  if (initialToken || !client || !schemas || activeUser) return;
@@ -147,21 +191,39 @@ function DyrectedProvider({ children, apiKey: initialApiKey, baseUrl: initialBas
147
191
  const resolvedCollectionSlug = authCollectionSlug || getAdminCollectionSlug(schemas);
148
192
  if (!token || !resolvedCollectionSlug) return;
149
193
  client.setToken(token);
150
- client.collection(resolvedCollectionSlug).me().then((nextUser) => setUser(nextUser), () => setUser(null));
194
+ client.collection(resolvedCollectionSlug).me().then((nextUser) => setUser(nextUser), (error) => {
195
+ if (shouldClearStoredAuth(error)) {
196
+ clearPersistedAuthState(client);
197
+ return;
198
+ }
199
+ setUser(null);
200
+ });
151
201
  }, [
152
202
  activeUser,
153
203
  authCollectionSlug,
204
+ clearPersistedAuthState,
154
205
  client,
155
206
  initialToken,
156
- schemas
207
+ schemas,
208
+ shouldClearStoredAuth
157
209
  ]);
158
210
  const logout = useCallback(() => {
159
- localStorage.removeItem("dyrected_token");
160
- localStorage.removeItem("dyrected_admin_auth_collection");
161
- if (client) client.clearToken();
162
- setAuthCollectionSlug(null);
163
- setUser(null);
164
- }, [client]);
211
+ (async () => {
212
+ const resolvedCollectionSlug = authCollectionSlug || getAdminCollectionSlug(schemas);
213
+ try {
214
+ if (client && resolvedCollectionSlug) await client.collection(resolvedCollectionSlug).logout();
215
+ } catch (error) {
216
+ console.warn("Failed to revoke admin session during logout:", error);
217
+ } finally {
218
+ clearPersistedAuthState(client);
219
+ }
220
+ })();
221
+ }, [
222
+ authCollectionSlug,
223
+ clearPersistedAuthState,
224
+ client,
225
+ schemas
226
+ ]);
165
227
  return /* @__PURE__ */ jsx(DyrectedContext.Provider, {
166
228
  value: {
167
229
  client,
@@ -976,7 +1038,7 @@ function isNewerVersion(latest, current) {
976
1038
  return false;
977
1039
  }
978
1040
  function useUpdateCheck() {
979
- const currentVersion = "2.5.60";
1041
+ const currentVersion = "2.5.63";
980
1042
  const [updateInfo, setUpdateInfo] = useState(() => {
981
1043
  if (typeof window === "undefined") return null;
982
1044
  const cacheKey = "dyrected_latest_release";
@@ -1202,7 +1264,7 @@ function getStatusLabel(doc) {
1202
1264
  }
1203
1265
  function Dashboard() {
1204
1266
  const { client, components, user } = useDyrected();
1205
- const currentVersion = "2.5.60";
1267
+ const currentVersion = "2.5.63";
1206
1268
  const [latestVersion, setLatestVersion] = useState(() => {
1207
1269
  if (typeof window === "undefined") return null;
1208
1270
  return localStorage.getItem("dyrected_latest_release");
@@ -1537,7 +1599,7 @@ function Dashboard() {
1537
1599
  var Input = React$1.forwardRef(({ className, type, ...props }, ref) => {
1538
1600
  return /* @__PURE__ */ jsx("input", {
1539
1601
  type,
1540
- className: cn("dy-flex dy-h-12 dy-w-full dy-rounded-xl dy-border dy-border-border/40 dy-bg-background dy-px-4 dy-py-2 dy-text-base dy-transition-all", "placeholder:dy-text-muted-foreground/60 focus-visible:dy-outline-none focus-visible:dy-border-primary/30 focus-visible:dy-bg-background focus-visible:dy-shadow-md", "disabled:dy-cursor-not-allowed disabled:dy-opacity-50 md:dy-text-sm dy-shadow-sm", className),
1602
+ className: cn("dy-flex dy-h-12 dy-w-full dy-rounded-xl dy-border dy-border-border/50 dark:dy-border-border/80 dy-bg-background dy-px-4 dy-py-2 dy-text-base dy-transition-all", "placeholder:dy-text-muted-foreground/60 focus-visible:dy-outline-none focus-visible:dy-border-primary/30 dark:focus-visible:dy-border-primary/45 focus-visible:dy-bg-background focus-visible:dy-shadow-md", "disabled:dy-cursor-not-allowed disabled:dy-opacity-50 md:dy-text-sm dy-shadow-sm", className),
1541
1603
  ref,
1542
1604
  ...props
1543
1605
  });
@@ -2282,6 +2344,34 @@ var Checkbox = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__
2282
2344
  }));
2283
2345
  Checkbox.displayName = CheckboxPrimitive.Root.displayName;
2284
2346
  //#endregion
2347
+ //#region src/lib/workflow-badge.ts
2348
+ var WORKFLOW_BADGE_COLORS = {
2349
+ success: "dy-bg-green-100 dy-text-green-700 dy-border-green-200 dark:dy-bg-green-600 dark:dy-text-green-300 dark:dy-border-green-500/30",
2350
+ warning: "dy-bg-amber-100 dy-text-amber-700 dy-border-amber-200 dark:dy-bg-amber-600 dark:dy-text-amber-300 dark:dy-border-amber-500/30",
2351
+ danger: "dy-bg-red-100 dy-text-red-700 dy-border-red-200 dark:dy-bg-red-600 dark:dy-text-red-300 dark:dy-border-red-500/30",
2352
+ info: "dy-bg-blue-100 dy-text-blue-700 dy-border-blue-200 dark:dy-bg-blue-600 dark:dy-text-blue-300 dark:dy-border-blue-500/30",
2353
+ neutral: "dy-bg-muted dy-text-muted-foreground dy-border-border dark:dy-bg-muted/60 dark:dy-text-foreground/80 dark:dy-border-border/80"
2354
+ };
2355
+ function getWorkflowBadgePresentation(color) {
2356
+ if (!color) return {
2357
+ className: WORKFLOW_BADGE_COLORS.neutral,
2358
+ style: void 0
2359
+ };
2360
+ const preset = WORKFLOW_BADGE_COLORS[color];
2361
+ if (preset) return {
2362
+ className: preset,
2363
+ style: void 0
2364
+ };
2365
+ return {
2366
+ className: "",
2367
+ style: {
2368
+ color,
2369
+ borderColor: `color-mix(in srgb, ${color} 32%, white)`,
2370
+ backgroundColor: `color-mix(in srgb, ${color} 14%, white)`
2371
+ }
2372
+ };
2373
+ }
2374
+ //#endregion
2285
2375
  //#region src/components/ui/progress.tsx
2286
2376
  var Progress = React$1.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx(ProgressPrimitive.Root, {
2287
2377
  ref,
@@ -3923,7 +4013,7 @@ function MediaLibraryDialog({ collection, isOpen, onOpenChange, selectedValues,
3923
4013
  })]
3924
4014
  })]
3925
4015
  }), /* @__PURE__ */ jsxs(TabsList, {
3926
- className: "dy-grid dy-h-auto dy-grid-cols-3 dy-bg-muted/50 dy-p-1 dy-rounded-xl sm:dy-flex",
4016
+ className: "dy-grid dy-h-auto dy-grid-cols-3 dy-bg-muted/50 dy-p-1 dy-rounded-lg sm:dy-flex",
3927
4017
  children: [
3928
4018
  /* @__PURE__ */ jsxs(TabsTrigger, {
3929
4019
  value: "library",
@@ -3958,7 +4048,7 @@ function MediaLibraryDialog({ collection, isOpen, onOpenChange, selectedValues,
3958
4048
  className: "dy-relative dy-flex-1 dy-group",
3959
4049
  children: [/* @__PURE__ */ jsx(Search, { className: "dy-absolute dy-left-3.5 dy-top-1/2 dy--translate-y-1/2 dy-h-4 dy-w-4 dy-text-muted-foreground dy-group-focus-within:dy-text-primary dy-transition-colors" }), /* @__PURE__ */ jsx(Input, {
3960
4050
  placeholder: "Search your media library...",
3961
- className: "dy-pl-11 dy-h-11 dy-rounded-xl dy-border-muted dy-bg-muted/10 focus:dy-bg-background dy-transition-all",
4051
+ className: "dy-pl-11 dy-h-11 dy-rounded-lg dy-border-muted dy-bg-muted/10 focus:dy-bg-background dy-transition-all",
3962
4052
  value: searchQuery,
3963
4053
  onChange: (e) => setSearchQuery(e.target.value)
3964
4054
  })]
@@ -4079,12 +4169,12 @@ function MediaLibraryDialog({ collection, isOpen, onOpenChange, selectedValues,
4079
4169
  }), /* @__PURE__ */ jsx("div", {
4080
4170
  className: "dy-space-y-3 dy-border-t dy-border-muted/20 dy-pt-4 md:dy-pt-6",
4081
4171
  children: multiple ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Button, {
4082
- className: "dy-w-full dy-h-11 dy-rounded-xl dy-shadow-sm dy-font-bold dy-tracking-tight dy-transition-all",
4172
+ className: "dy-w-full dy-h-11 dy-rounded-lg dy-shadow-sm dy-font-bold dy-tracking-tight dy-transition-all",
4083
4173
  variant: sVals.some((v) => v === selectedItem.id || v === selectedItem.filename || v === selectedItem.url) ? "outline" : "default",
4084
4174
  onClick: () => onSelect(selectedItem.id, selectedItem),
4085
4175
  children: sVals.some((v) => v === selectedItem.id || v === selectedItem.filename || v === selectedItem.url) ? "Deselect Item" : "Add to Selection"
4086
4176
  }), sVals.length > 0 && /* @__PURE__ */ jsxs(Button, {
4087
- className: "dy-w-full dy-h-11 dy-rounded-xl dy-shadow-xl dy-bg-primary hover:dy-bg-primary/90 dy-font-bold dy-tracking-tight dy-transition-all dy-group",
4177
+ className: "dy-w-full dy-h-11 dy-rounded-lg dy-shadow-xl dy-bg-primary hover:dy-bg-primary/90 dy-font-bold dy-tracking-tight dy-transition-all dy-group",
4088
4178
  onClick: handleConfirm,
4089
4179
  children: [/* @__PURE__ */ jsxs("span", { children: [
4090
4180
  "Confirm ",
@@ -4093,7 +4183,7 @@ function MediaLibraryDialog({ collection, isOpen, onOpenChange, selectedValues,
4093
4183
  sVals.length === 1 ? "Asset" : "Assets"
4094
4184
  ] }), /* @__PURE__ */ jsx(Sparkles, { className: "dy-ml-2 dy-h-4 dy-w-4 dy-opacity-50 dy-group-hover:dy-opacity-100 dy-group-hover:dy-scale-110 dy-transition-all" })]
4095
4185
  })] }) : /* @__PURE__ */ jsx(Button, {
4096
- className: "dy-w-full dy-h-11 dy-rounded-xl dy-shadow-lg dy-font-bold dy-tracking-tight dy-bg-primary hover:dy-bg-primary/90 dy-transition-all",
4186
+ className: "dy-w-full dy-h-11 dy-rounded-lg dy-shadow-lg dy-font-bold dy-tracking-tight dy-bg-primary hover:dy-bg-primary/90 dy-transition-all",
4097
4187
  onClick: () => {
4098
4188
  onSelect(selectedItem.id, selectedItem);
4099
4189
  onOpenChange(false);
@@ -4233,7 +4323,7 @@ function MediaLibraryDialog({ collection, isOpen, onOpenChange, selectedValues,
4233
4323
  /* @__PURE__ */ jsxs("div", {
4234
4324
  className: "dy-flex dy-items-center dy-gap-3 dy-p-4 dy-rounded-2xl dy-bg-muted/20 dy-border dy-border-muted/30",
4235
4325
  children: [/* @__PURE__ */ jsx("div", {
4236
- className: "dy-p-2 dy-bg-background dy-rounded-xl dy-shadow-sm dy-text-muted-foreground",
4326
+ className: "dy-p-2 dy-bg-background dy-rounded-lg dy-shadow-sm dy-text-muted-foreground",
4237
4327
  children: /* @__PURE__ */ jsx(Info, { className: "dy-h-4 dy-w-4" })
4238
4328
  }), /* @__PURE__ */ jsxs("p", {
4239
4329
  className: "dy-text-[11px] dy-text-muted-foreground/80 dy-font-medium dy-leading-relaxed",
@@ -4766,7 +4856,7 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
4766
4856
  isDragActive && /* @__PURE__ */ jsx("div", {
4767
4857
  className: "dy-absolute dy-inset-0 dy-z-50 dy-bg-primary/10 dy-backdrop-blur-[2px] dy-border-2 dy-border-dashed dy-border-primary dy-rounded-2xl dy-flex dy-items-center dy-justify-center dy-pointer-events-none",
4768
4858
  children: /* @__PURE__ */ jsxs("div", {
4769
- className: "dy-bg-card dy-p-4 dy-rounded-xl dy-shadow-xl dy-flex dy-items-center dy-gap-2",
4859
+ className: "dy-bg-card dy-p-4 dy-rounded-lg dy-shadow-xl dy-flex dy-items-center dy-gap-2",
4770
4860
  children: [/* @__PURE__ */ jsx(UploadCloud, { className: "dy-h-5 dy-w-5 dy-text-primary dy-animate-bounce" }), /* @__PURE__ */ jsx("p", {
4771
4861
  className: "dy-text-xs dy-font-bold",
4772
4862
  children: "Drop to upload & select"
@@ -4776,7 +4866,7 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
4776
4866
  uploading && /* @__PURE__ */ jsx("div", {
4777
4867
  className: "dy-absolute dy-inset-0 dy-z-50 dy-bg-background/60 dy-backdrop-blur-[1px] dy-rounded-2xl dy-flex dy-items-center dy-justify-center dy-pointer-events-none",
4778
4868
  children: /* @__PURE__ */ jsxs("div", {
4779
- className: "dy-bg-card dy-p-4 dy-rounded-xl dy-shadow-xl dy-w-56 dy-max-w-[80%] dy-space-y-2",
4869
+ className: "dy-bg-card dy-p-4 dy-rounded-lg dy-shadow-xl dy-w-56 dy-max-w-[80%] dy-space-y-2",
4780
4870
  children: [/* @__PURE__ */ jsxs("div", {
4781
4871
  className: "dy-flex dy-items-center dy-justify-between dy-gap-2",
4782
4872
  children: [/* @__PURE__ */ jsxs("div", {
@@ -4804,7 +4894,7 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
4804
4894
  children: [/* @__PURE__ */ jsxs("button", {
4805
4895
  type: "button",
4806
4896
  onClick: () => setIsOpen(true),
4807
- className: "dy-group dy-relative dy-aspect-square dy-rounded-xl dy-border-2 dy-border-dashed dy-border-muted hover:dy-border-primary/40 hover:dy-bg-primary/5 dy-transition-all dy-flex dy-flex-col dy-items-center dy-justify-center dy-gap-3 dy-overflow-hidden",
4897
+ className: "dy-group dy-relative dy-aspect-square dy-rounded-lg dy-border-2 dy-border-dashed dy-border-muted hover:dy-border-primary/40 hover:dy-bg-primary/5 dy-transition-all dy-flex dy-flex-col dy-items-center dy-justify-center dy-gap-3 dy-overflow-hidden",
4808
4898
  children: [
4809
4899
  /* @__PURE__ */ jsx("div", { className: "dy-absolute dy-inset-0 dy-bg-primary/5 dy-opacity-0 dy-group-hover:dy-opacity-100 dy-transition-opacity" }),
4810
4900
  /* @__PURE__ */ jsx("div", {
@@ -4828,7 +4918,7 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
4828
4918
  return /* @__PURE__ */ jsx("div", {
4829
4919
  className: "dy-relative dy-group dy-animate-in dy-zoom-in dy-duration-300",
4830
4920
  children: /* @__PURE__ */ jsxs("div", {
4831
- className: cn("dy-relative dy-aspect-square dy-rounded-xl dy-overflow-hidden dy-border-2 dy-bg-muted/20 dy-transition-all dy-shadow-sm", index === 0 ? "dy-border-primary dy-ring-4 dy-ring-primary/10" : "dy-border-border/40 hover:dy-border-border/80"),
4921
+ className: cn("dy-relative dy-aspect-square dy-rounded-lg dy-overflow-hidden dy-border-2 dy-bg-muted/20 dy-transition-all dy-shadow-sm", index === 0 ? "dy-border-primary dy-ring-4 dy-ring-primary/10" : "dy-border-border/40 hover:dy-border-border/80"),
4832
4922
  children: [
4833
4923
  item ? /* @__PURE__ */ jsx("img", {
4834
4924
  src: getPreviewUrl(item),
@@ -4906,7 +4996,7 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
4906
4996
  isDragActive && /* @__PURE__ */ jsx("div", {
4907
4997
  className: "dy-absolute dy-inset-0 dy-z-50 dy-bg-primary/10 dy-backdrop-blur-[2px] dy-border-2 dy-border-dashed dy-border-primary dy-rounded-2xl dy-flex dy-items-center dy-justify-center dy-pointer-events-none",
4908
4998
  children: /* @__PURE__ */ jsxs("div", {
4909
- className: "dy-bg-card dy-p-3 dy-rounded-xl dy-shadow-xl dy-flex dy-items-center dy-gap-2",
4999
+ className: "dy-bg-card dy-p-3 dy-rounded-lg dy-shadow-xl dy-flex dy-items-center dy-gap-2",
4910
5000
  children: [/* @__PURE__ */ jsx(UploadCloud, { className: "dy-h-4 dy-w-4 dy-text-primary dy-animate-bounce" }), /* @__PURE__ */ jsx("p", {
4911
5001
  className: "dy-text-[11px] dy-font-bold",
4912
5002
  children: "Drop file here"
@@ -4916,7 +5006,7 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
4916
5006
  uploading && /* @__PURE__ */ jsx("div", {
4917
5007
  className: "dy-absolute dy-inset-0 dy-z-50 dy-bg-background/60 dy-backdrop-blur-[1px] dy-rounded-2xl dy-flex dy-items-center dy-justify-center dy-pointer-events-none",
4918
5008
  children: /* @__PURE__ */ jsxs("div", {
4919
- className: "dy-bg-card dy-p-3 dy-rounded-xl dy-shadow-xl dy-w-48 dy-max-w-[85%] dy-space-y-2",
5009
+ className: "dy-bg-card dy-p-3 dy-rounded-lg dy-shadow-xl dy-w-48 dy-max-w-[85%] dy-space-y-2",
4920
5010
  children: [/* @__PURE__ */ jsxs("div", {
4921
5011
  className: "dy-flex dy-items-center dy-justify-between dy-gap-2",
4922
5012
  children: [/* @__PURE__ */ jsxs("div", {
@@ -4948,7 +5038,7 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
4948
5038
  type: "button",
4949
5039
  onClick: () => setIsOpen(true),
4950
5040
  disabled,
4951
- className: "dy-group dy-relative dy-aspect-square dy-rounded-xl dy-border-2 dy-border-dashed dy-border-muted hover:dy-border-primary/40 hover:dy-bg-primary/5 disabled:dy-cursor-not-allowed disabled:dy-opacity-60 dy-transition-all dy-flex dy-flex-col dy-items-center dy-justify-center dy-gap-3 dy-overflow-hidden",
5041
+ className: "dy-group dy-relative dy-aspect-square dy-rounded-lg dy-border-2 dy-border-dashed dy-border-muted hover:dy-border-primary/40 hover:dy-bg-primary/5 disabled:dy-cursor-not-allowed disabled:dy-opacity-60 dy-transition-all dy-flex dy-flex-col dy-items-center dy-justify-center dy-gap-3 dy-overflow-hidden",
4952
5042
  children: [
4953
5043
  /* @__PURE__ */ jsx("div", { className: "dy-absolute dy-inset-0 dy-bg-primary/5 dy-opacity-0 dy-group-hover:dy-opacity-100 dy-transition-opacity" }),
4954
5044
  /* @__PURE__ */ jsx("div", {
@@ -4971,7 +5061,7 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
4971
5061
  const item = localMediaCache.find((m) => m.id === valId || m.filename === valId || m.url === valId);
4972
5062
  const previewUrl = item ? getPreviewUrl(item) : val ? getMediaUrl(val, client?.getBaseUrl() || "") : "";
4973
5063
  return /* @__PURE__ */ jsxs("div", {
4974
- className: "dy-relative dy-aspect-square dy-group dy-rounded-xl dy-overflow-hidden dy-border-2 dy-border-primary dy-ring-4 dy-ring-primary/10 dy-transition-all dy-bg-muted/20 dy-shadow-sm",
5064
+ className: "dy-relative dy-aspect-square dy-group dy-rounded-lg dy-overflow-hidden dy-border-2 dy-border-primary dy-ring-4 dy-ring-primary/10 dy-transition-all dy-bg-muted/20 dy-shadow-sm",
4975
5065
  children: [
4976
5066
  /* @__PURE__ */ jsx("button", {
4977
5067
  type: "button",
@@ -5787,10 +5877,10 @@ function JsonEditor({ value, onChange, label, disabled }) {
5787
5877
  value: internalValue,
5788
5878
  onChange: handleChange,
5789
5879
  disabled,
5790
- className: cn("dy-font-mono dy-text-xs dy-min-h-[180px] dy-bg-muted/15 dy-border-dashed focus-visible:dy-ring-1 dy-rounded-xl", error && "dy-border-destructive/60 focus-visible:dy-ring-destructive/30"),
5880
+ className: cn("dy-font-mono dy-text-xs dy-min-h-[180px] dy-bg-muted/15 dy-border-dashed focus-visible:dy-ring-1 dy-rounded-lg", error && "dy-border-destructive/60 focus-visible:dy-ring-destructive/30"),
5791
5881
  placeholder: "{ \"key\": \"value\" }"
5792
5882
  }) : /* @__PURE__ */ jsx(ScrollArea, {
5793
- className: "dy-h-[180px] dy-w-full dy-rounded-xl dy-border dy-border-dashed dy-border-border/60 dy-bg-muted/15 dy-p-4",
5883
+ className: "dy-h-[180px] dy-w-full dy-rounded-lg dy-border dy-border-dashed dy-border-border/60 dy-bg-muted/15 dy-p-4",
5794
5884
  children: value ? /* @__PURE__ */ jsx("div", {
5795
5885
  className: "dy-flex dy-flex-col",
5796
5886
  children: /* @__PURE__ */ jsx(JsonTreeNode, {
@@ -6310,7 +6400,7 @@ function JoinField({ schema, control }) {
6310
6400
  return /* @__PURE__ */ jsxs("div", {
6311
6401
  className: "dy-space-y-3",
6312
6402
  children: [data && data.length > 0 ? /* @__PURE__ */ jsx("div", {
6313
- className: "dy-divide-y dy-divide-border/30 dy-rounded-xl dy-border dy-border-border/40 dy-overflow-hidden",
6403
+ className: "dy-divide-y dy-divide-border/30 dy-rounded-lg dy-border dy-border-border/40 dy-overflow-hidden",
6314
6404
  children: data.map((item) => /* @__PURE__ */ jsxs("button", {
6315
6405
  type: "button",
6316
6406
  onClick: () => navigate(`/collections/${targetCollection}/edit/${item.id}`),
@@ -6324,7 +6414,7 @@ function JoinField({ schema, control }) {
6324
6414
  }), /* @__PURE__ */ jsx(ExternalLink, { className: "dy-h-3 dy-w-3 dy-text-muted-foreground/30 dy-opacity-0 dy-group-hover:dy-opacity-100 dy-transition-opacity dy-shrink-0 dy-ml-2" })]
6325
6415
  }, item.id))
6326
6416
  }) : /* @__PURE__ */ jsx("div", {
6327
- className: "dy-rounded-xl dy-border dy-border-dashed dy-border-border/40 dy-bg-muted/5 dy-px-4 dy-py-6 dy-text-center",
6417
+ className: "dy-rounded-lg dy-border dy-border-dashed dy-border-border/40 dy-bg-muted/5 dy-px-4 dy-py-6 dy-text-center",
6328
6418
  children: /* @__PURE__ */ jsxs("p", {
6329
6419
  className: "dy-text-xs dy-text-muted-foreground/60 dy-italic",
6330
6420
  children: [
@@ -6337,7 +6427,7 @@ function JoinField({ schema, control }) {
6337
6427
  type: "button",
6338
6428
  variant: "outline",
6339
6429
  size: "sm",
6340
- className: "dy-h-8 dy-text-[11px] dy-font-bold dy-rounded-xl dy-border-primary/20 hover:dy-bg-primary/5 hover:dy-text-primary dy-transition-all dy-shadow-sm",
6430
+ className: "dy-h-8 dy-text-[11px] dy-font-bold dy-rounded-lg dy-border-primary/20 hover:dy-bg-primary/5 hover:dy-text-primary dy-transition-all dy-shadow-sm",
6341
6431
  onClick: () => navigate(`/collections/${targetCollection}/new?${onField}=${docId}`),
6342
6432
  children: [
6343
6433
  /* @__PURE__ */ jsx(Plus, { className: "dy-w-3 dy-h-3 dy-mr-1.5" }),
@@ -6613,7 +6703,7 @@ function SelectField({ schema, field, disabled, collection, siblingValues }) {
6613
6703
  role: "combobox",
6614
6704
  "aria-expanded": open,
6615
6705
  disabled: disabled || isDynamic && isLoading,
6616
- className: cn("dy-h-12 dy-w-full dy-justify-between dy-rounded-xl dy-border-border/40 dy-bg-background/50 dy-px-4 dy-font-normal dy-shadow-sm dy-transition-all hover:dy-shadow-md", !selectedOption && "dy-text-muted-foreground"),
6706
+ className: cn("dy-h-12 dy-w-full dy-justify-between dy-rounded-lg dy-border-border/40 dy-bg-background/50 dy-px-4 dy-font-normal dy-shadow-sm dy-transition-all hover:dy-shadow-md", !selectedOption && "dy-text-muted-foreground"),
6617
6707
  children: [/* @__PURE__ */ jsx("span", {
6618
6708
  className: "dy-truncate",
6619
6709
  children: selectedOption?.label || (currentValue && !selectedOption ? currentValue : placeholder)
@@ -6637,7 +6727,7 @@ function SelectField({ schema, field, disabled, collection, siblingValues }) {
6637
6727
  })]
6638
6728
  })
6639
6729
  }), /* @__PURE__ */ jsx(PopoverContent, {
6640
- className: "dy-w-[var(--radix-popover-trigger-width)] dy-p-0 dy-rounded-xl dy-border-border/40 dy-shadow-xl",
6730
+ className: "dy-w-[var(--radix-popover-trigger-width)] dy-p-0 dy-rounded-lg dy-border-border/40 dy-shadow-xl",
6641
6731
  align: "start",
6642
6732
  children: /* @__PURE__ */ jsxs(Command$1, {
6643
6733
  shouldFilter: !isDynamic,
@@ -6744,7 +6834,7 @@ function RadioField({ schema, field, disabled, collection, siblingValues }) {
6744
6834
  1,
6745
6835
  2,
6746
6836
  3
6747
- ].map((i) => /* @__PURE__ */ jsx("div", { className: "dy-h-12 dy-w-32 dy-rounded-xl dy-bg-muted dy-animate-pulse" }, i))
6837
+ ].map((i) => /* @__PURE__ */ jsx("div", { className: "dy-h-12 dy-w-32 dy-rounded-lg dy-bg-muted dy-animate-pulse" }, i))
6748
6838
  });
6749
6839
  return /* @__PURE__ */ jsx(RadioGroup, {
6750
6840
  onValueChange: field.onChange,
@@ -6759,7 +6849,7 @@ function RadioField({ schema, field, disabled, collection, siblingValues }) {
6759
6849
  className: "dy-peer dy-absolute dy-left-4 dy-z-10"
6760
6850
  }), /* @__PURE__ */ jsx(Label, {
6761
6851
  htmlFor: `${field.name}-${opt.value}`,
6762
- className: cn("dy-flex dy-flex-1 dy-items-center dy-pl-12 dy-pr-4 dy-py-3 dy-rounded-xl dy-border dy-border-border/40 dy-bg-background/50 dy-cursor-pointer dy-transition-all hover:dy-bg-background/80 hover:dy-shadow-sm", "dy-peer-data-[state=checked]:dy-border-primary dy-peer-data-[state=checked]:dy-bg-primary/5 dy-peer-data-[state=checked]:dy-shadow-md dy-peer-data-[state=checked]:dy-ring-1 dy-peer-data-[state=checked]:dy-ring-primary/20", "dy-text-sm dy-font-medium dy-text-foreground/70 dy-peer-data-[state=checked]:dy-text-primary"),
6852
+ className: cn("dy-flex dy-flex-1 dy-items-center dy-pl-12 dy-pr-4 dy-py-3 dy-rounded-lg dy-border dy-border-border/40 dy-bg-background/50 dy-cursor-pointer dy-transition-all hover:dy-bg-background/80 hover:dy-shadow-sm", "dy-peer-data-[state=checked]:dy-border-primary dy-peer-data-[state=checked]:dy-bg-primary/5 dy-peer-data-[state=checked]:dy-shadow-md dy-peer-data-[state=checked]:dy-ring-1 dy-peer-data-[state=checked]:dy-ring-primary/20", "dy-text-sm dy-font-medium dy-text-foreground/70 dy-peer-data-[state=checked]:dy-text-primary"),
6763
6853
  children: opt.label
6764
6854
  })]
6765
6855
  }, opt.value))
@@ -6843,7 +6933,7 @@ function MultiSelect({ options, value = [], onChange, label, placeholder = "Sele
6843
6933
  role: "combobox",
6844
6934
  "aria-expanded": open,
6845
6935
  disabled: disabled || isDynamic && isLoading,
6846
- className: "dy-min-h-12 dy-w-full dy-justify-between dy-rounded-xl dy-border-border/40 dy-bg-background/50 dy-px-4 dy-font-normal dy-shadow-sm dy-transition-all hover:dy-shadow-md",
6936
+ className: "dy-min-h-12 dy-w-full dy-justify-between dy-rounded-lg dy-border-border/40 dy-bg-background/50 dy-px-4 dy-font-normal dy-shadow-sm dy-transition-all hover:dy-shadow-md",
6847
6937
  children: [/* @__PURE__ */ jsxs("div", {
6848
6938
  className: "dy-flex dy-min-w-0 dy-flex-1 dy-flex-wrap dy-items-center dy-gap-1",
6849
6939
  children: [value.length === 0 && /* @__PURE__ */ jsx("span", {
@@ -6889,7 +6979,7 @@ function MultiSelect({ options, value = [], onChange, label, placeholder = "Sele
6889
6979
  })]
6890
6980
  })
6891
6981
  }), /* @__PURE__ */ jsx(PopoverContent, {
6892
- className: "dy-w-[var(--radix-popover-trigger-width)] dy-p-0 dy-rounded-xl dy-border-border/40 dy-shadow-xl",
6982
+ className: "dy-w-[var(--radix-popover-trigger-width)] dy-p-0 dy-rounded-lg dy-border-border/40 dy-shadow-xl",
6893
6983
  align: "start",
6894
6984
  children: /* @__PURE__ */ jsxs(Command$1, {
6895
6985
  shouldFilter: !isDynamic,
@@ -6979,7 +7069,7 @@ function InlinePicker({ open, setOpen, triggerRef, children }) {
6979
7069
  triggerRef
6980
7070
  ]);
6981
7071
  return /* @__PURE__ */ jsx("div", {
6982
- className: cn("dy-absolute dy-left-0 dy-top-full dy-z-50 dy-mt-1 dy-rounded-xl dy-border dy-border-border/50 dy-bg-popover dy-shadow-2xl dy-transition-[opacity,transform] dy-duration-100 dy-origin-top-left", open ? "dy-opacity-100 dy-scale-100 dy-pointer-events-auto" : "dy-opacity-0 dy-scale-95 dy-pointer-events-none dy-invisible"),
7072
+ className: cn("dy-absolute dy-left-0 dy-top-full dy-z-50 dy-mt-1 dy-rounded-lg dy-border dy-border-border/50 dy-bg-popover dy-shadow-2xl dy-transition-[opacity,transform] dy-duration-100 dy-origin-top-left", open ? "dy-opacity-100 dy-scale-100 dy-pointer-events-auto" : "dy-opacity-0 dy-scale-95 dy-pointer-events-none dy-invisible"),
6983
7073
  inert: !open ? true : void 0,
6984
7074
  children
6985
7075
  });
@@ -7367,7 +7457,7 @@ function IconPicker({ schema, field, disabled }) {
7367
7457
  type: "button",
7368
7458
  variant: "outline",
7369
7459
  disabled,
7370
- className: "dy-flex-1 dy-justify-start dy-gap-3 dy-h-12 dy-rounded-xl dy-border-border/40 dy-bg-background/50 dy-font-normal hover:dy-shadow-md dy-transition-all",
7460
+ className: "dy-flex-1 dy-justify-start dy-gap-3 dy-h-12 dy-rounded-lg dy-border-border/40 dy-bg-background/50 dy-font-normal hover:dy-shadow-md dy-transition-all",
7371
7461
  children: SelectedIcon ? /* @__PURE__ */ jsxs(Fragment, { children: [React$1.createElement(SelectedIcon, { className: "dy-h-5 dy-w-5 dy-text-primary dy-shrink-0" }), /* @__PURE__ */ jsx("span", {
7372
7462
  className: "dy-text-sm dy-text-foreground/80",
7373
7463
  children: selectedIconName
@@ -7457,7 +7547,7 @@ function IconPicker({ schema, field, disabled }) {
7457
7547
  ]
7458
7548
  })]
7459
7549
  }), SelectedIcon && /* @__PURE__ */ jsx("div", {
7460
- className: "dy-flex dy-items-center dy-justify-center dy-h-12 dy-w-12 dy-rounded-xl dy-border dy-border-border/40 dy-bg-background/50 dy-shrink-0",
7550
+ className: "dy-flex dy-items-center dy-justify-center dy-h-12 dy-w-12 dy-rounded-lg dy-border dy-border-border/40 dy-bg-background/50 dy-shrink-0",
7461
7551
  children: React$1.createElement(SelectedIcon, { className: "dy-h-6 dy-w-6 dy-text-foreground/70" })
7462
7552
  })]
7463
7553
  });
@@ -8134,7 +8224,7 @@ function SortableBlockItem({ id, index, item, schema, basePath, control, remove,
8134
8224
  return /* @__PURE__ */ jsxs("div", {
8135
8225
  ref: setNodeRef,
8136
8226
  style,
8137
- className: cn("dy-group dy-bg-card dy-border dy-rounded-xl dy-overflow-hidden dy-transition-all", active ? "dy-border-primary dy-ring-1 dy-ring-primary/40 dy-shadow-sm" : "dy-border-border/50 hover:dy-border-border hover:dy-shadow-sm", isDragging && "dy-shadow-xl dy-ring-2 dy-ring-primary/40 dy-border-primary/50"),
8227
+ className: cn("dy-group dy-bg-card dy-border dy-rounded-lg dy-overflow-hidden dy-transition-all", active ? "dy-border-primary dy-ring-1 dy-ring-primary/40 dy-shadow-sm" : "dy-border-border/50 hover:dy-border-border hover:dy-shadow-sm", isDragging && "dy-shadow-xl dy-ring-2 dy-ring-primary/40 dy-border-primary/50"),
8138
8228
  children: [
8139
8229
  /* @__PURE__ */ jsxs("div", {
8140
8230
  className: "dy-flex dy-items-center dy-gap-3 dy-px-3 dy-py-3 dy-cursor-pointer dy-select-none",
@@ -8361,7 +8451,7 @@ function BlockBuilder({ schema, basePath, control, collection, documentId }) {
8361
8451
  children: ["Add Block", /* @__PURE__ */ jsx(Plus, { className: "dy-w-3 dy-h-3 dy-ml-1.5" })]
8362
8452
  })
8363
8453
  }), /* @__PURE__ */ jsxs(DialogContent, {
8364
- className: "dy-max-w-md md:dy-max-w-4xl dy-p-6 dy-rounded-xl dy-border-border/40 dy-shadow-2xl !dy-flex dy-flex-col dy-max-h-[85vh] dy-overflow-hidden",
8454
+ className: "dy-max-w-md md:dy-max-w-4xl dy-p-6 dy-rounded-lg dy-border-border/40 dy-shadow-2xl !dy-flex dy-flex-col dy-max-h-[85vh] dy-overflow-hidden",
8365
8455
  children: [
8366
8456
  /* @__PURE__ */ jsxs(DialogHeader, {
8367
8457
  className: "dy-pb-2 dy-flex-shrink-0",
@@ -8392,7 +8482,7 @@ function BlockBuilder({ schema, basePath, control, collection, documentId }) {
8392
8482
  }) : filteredBlocks.map((block) => {
8393
8483
  return /* @__PURE__ */ jsxs("div", {
8394
8484
  onClick: () => handleAddBlock(block),
8395
- className: "dy-group dy-border dy-border-muted/30 dy-rounded-xl dy-p-4 dy-flex dy-items-start dy-gap-3 hover:dy-border-primary/40 hover:dy-bg-primary/[0.02] dy-transition-all dy-cursor-pointer dy-select-none",
8485
+ className: "dy-group dy-border dy-border-muted/30 dy-rounded-lg dy-p-4 dy-flex dy-items-start dy-gap-3 hover:dy-border-primary/40 hover:dy-bg-primary/[0.02] dy-transition-all dy-cursor-pointer dy-select-none",
8396
8486
  children: [/* @__PURE__ */ jsx("div", {
8397
8487
  className: "dy-p-2.5 dy-bg-muted/50 dy-rounded-lg dy-text-muted-foreground/60 group-hover:dy-text-primary group-hover:dy-bg-primary/10 dy-transition-colors",
8398
8488
  children: /* @__PURE__ */ jsx(resolveAdminIcon(block.icon, Layers), { className: "dy-w-4 dy-h-4" })
@@ -8415,7 +8505,7 @@ function BlockBuilder({ schema, basePath, control, collection, documentId }) {
8415
8505
  })
8416
8506
  })]
8417
8507
  }), fields.length === 0 ? /* @__PURE__ */ jsxs("div", {
8418
- className: "dy-text-center dy-p-8 dy-border dy-border-dashed dy-border-border/40 dy-rounded-xl dy-bg-muted/10 dy-flex dy-flex-col dy-items-center dy-gap-3",
8508
+ className: "dy-text-center dy-p-8 dy-border dy-border-dashed dy-border-border/40 dy-rounded-lg dy-bg-muted/10 dy-flex dy-flex-col dy-items-center dy-gap-3",
8419
8509
  children: [/* @__PURE__ */ jsx("p", {
8420
8510
  className: "dy-text-[11px] dy-text-muted-foreground/50",
8421
8511
  children: "No blocks added yet."
@@ -8674,7 +8764,7 @@ function SortableArrayItem({ id, index, schema, basePath, control, remove, move,
8674
8764
  type: "button",
8675
8765
  variant: "ghost",
8676
8766
  size: "icon",
8677
- className: "dy-h-10 dy-w-10 dy-rounded-xl dy-text-muted-foreground/30 hover:dy-text-destructive hover:dy-bg-destructive/10 sm:dy-h-8 sm:dy-w-8",
8767
+ className: "dy-h-10 dy-w-10 dy-rounded-lg dy-text-muted-foreground/30 hover:dy-text-destructive hover:dy-bg-destructive/10 sm:dy-h-8 sm:dy-w-8",
8678
8768
  onClick: (event) => {
8679
8769
  event.stopPropagation();
8680
8770
  setShowDeleteConfirm(true);
@@ -8685,7 +8775,7 @@ function SortableArrayItem({ id, index, schema, basePath, control, remove, move,
8685
8775
  type: "button",
8686
8776
  variant: "ghost",
8687
8777
  size: "icon",
8688
- className: "dy-h-10 dy-w-10 dy-rounded-xl dy-text-muted-foreground hover:dy-bg-muted hover:dy-text-foreground sm:dy-h-8 sm:dy-w-8",
8778
+ className: "dy-h-10 dy-w-10 dy-rounded-lg dy-text-muted-foreground hover:dy-bg-muted hover:dy-text-foreground sm:dy-h-8 sm:dy-w-8",
8689
8779
  onClick: (event) => {
8690
8780
  event.stopPropagation();
8691
8781
  onToggleExpand();
@@ -8698,7 +8788,7 @@ function SortableArrayItem({ id, index, schema, basePath, control, remove, move,
8698
8788
  type: "button",
8699
8789
  variant: "ghost",
8700
8790
  size: "icon",
8701
- className: "dy-h-10 dy-w-10 dy-rounded-xl dy-text-muted-foreground hover:dy-bg-muted hover:dy-text-foreground sm:dy-h-8 sm:dy-w-8",
8791
+ className: "dy-h-10 dy-w-10 dy-rounded-lg dy-text-muted-foreground hover:dy-bg-muted hover:dy-text-foreground sm:dy-h-8 sm:dy-w-8",
8702
8792
  onClick: (event) => event.stopPropagation(),
8703
8793
  title: "Item actions",
8704
8794
  children: /* @__PURE__ */ jsx(MoreHorizontal, { className: "dy-w-4 dy-h-4" })
@@ -8793,7 +8883,7 @@ function SimpleArrayItem({ id, index, field, basePath, remove, move, onDuplicate
8793
8883
  zIndex: isDragging ? 50 : 1,
8794
8884
  opacity: isDragging ? .9 : 1
8795
8885
  },
8796
- className: cn("dy-group dy-flex dy-items-center dy-gap-1.5 dy-rounded-xl dy-px-1 dy-py-1 dy-transition-colors", isDragging ? "dy-bg-muted/40 dy-shadow-lg dy-ring-1 dy-ring-primary/30" : "hover:dy-bg-muted/30"),
8886
+ className: cn("dy-group dy-flex dy-items-center dy-gap-1.5 dy-rounded-lg dy-px-1 dy-py-1 dy-transition-colors", isDragging ? "dy-bg-muted/40 dy-shadow-lg dy-ring-1 dy-ring-primary/30" : "hover:dy-bg-muted/30"),
8797
8887
  children: [
8798
8888
  /* @__PURE__ */ jsx("div", {
8799
8889
  ...attributes,
@@ -8812,7 +8902,7 @@ function SimpleArrayItem({ id, index, field, basePath, remove, move, onDuplicate
8812
8902
  type: "button",
8813
8903
  variant: "ghost",
8814
8904
  size: "icon",
8815
- className: "dy-h-9 dy-w-9 dy-flex-shrink-0 dy-rounded-xl dy-text-muted-foreground/50 dy-opacity-0 dy-transition-opacity group-hover:dy-opacity-100 focus:dy-opacity-100 data-[state=open]:dy-opacity-100 hover:dy-bg-muted hover:dy-text-foreground sm:dy-h-8 sm:dy-w-8",
8905
+ className: "dy-h-9 dy-w-9 dy-flex-shrink-0 dy-rounded-lg dy-text-muted-foreground/50 dy-opacity-0 dy-transition-opacity group-hover:dy-opacity-100 focus:dy-opacity-100 data-[state=open]:dy-opacity-100 hover:dy-bg-muted hover:dy-text-foreground sm:dy-h-8 sm:dy-w-8",
8816
8906
  title: "Item actions",
8817
8907
  children: /* @__PURE__ */ jsx(MoreHorizontal, { className: "dy-w-4 dy-h-4" })
8818
8908
  })
@@ -9024,14 +9114,14 @@ function ArrayFieldRenderer({ schema, basePath, control, renderField }) {
9024
9114
  type: "button",
9025
9115
  variant: "outline",
9026
9116
  size: "sm",
9027
- className: "dy-h-9 dy-text-[11px] dy-font-bold dy-rounded-xl dy-border-primary/20 hover:dy-bg-primary/5 hover:dy-text-primary dy-transition-all dy-shadow-sm",
9117
+ className: "dy-h-9 dy-text-[11px] dy-font-bold dy-rounded-lg dy-border-primary/20 hover:dy-bg-primary/5 hover:dy-text-primary dy-transition-all dy-shadow-sm",
9028
9118
  onClick: () => setIsBulkOpen(true),
9029
9119
  children: "Bulk Add Images"
9030
9120
  }), /* @__PURE__ */ jsxs(Button, {
9031
9121
  type: "button",
9032
9122
  variant: "outline",
9033
9123
  size: "sm",
9034
- className: "dy-h-9 dy-text-[11px] dy-font-bold dy-rounded-xl dy-border-primary/20 hover:dy-bg-primary/5 hover:dy-text-primary dy-transition-all dy-shadow-sm",
9124
+ className: "dy-h-9 dy-text-[11px] dy-font-bold dy-rounded-lg dy-border-primary/20 hover:dy-bg-primary/5 hover:dy-text-primary dy-transition-all dy-shadow-sm",
9035
9125
  onClick: addItem,
9036
9126
  children: [
9037
9127
  /* @__PURE__ */ jsx(Plus, { className: "dy-w-3.5 dy-h-3.5 dy-mr-1.5" }),
@@ -9241,7 +9331,7 @@ function FormFieldRenderer({ schema, basePath, control, collection, documentId }
9241
9331
  documentId
9242
9332
  });
9243
9333
  if (jexlError) return /* @__PURE__ */ jsxs("div", {
9244
- className: "dy-space-y-2 dy-border dy-border-destructive/30 dy-bg-destructive/5 dy-p-3 dy-rounded-xl dy-my-2",
9334
+ className: "dy-space-y-2 dy-border dy-border-destructive/30 dy-bg-destructive/5 dy-p-3 dy-rounded-lg dy-my-2",
9245
9335
  children: [/* @__PURE__ */ jsxs("div", {
9246
9336
  className: "dy-text-xs dy-font-semibold dy-text-destructive dy-flex dy-items-center dy-gap-2",
9247
9337
  children: [/* @__PURE__ */ jsxs("span", { children: [
@@ -9420,7 +9510,7 @@ function FormFieldRendererInner({ schema, basePath, control, collection, canUpda
9420
9510
  name: fullPath,
9421
9511
  render: ({ field: formField }) => /* @__PURE__ */ jsxs(FormItem, {
9422
9512
  "data-dy-field": schema.name,
9423
- className: cn(isSwitchBoolean ? "dy-flex dy-flex-row dy-items-center dy-justify-between dy-rounded-xl dy-border dy-border-border/40 dy-p-4 dy-bg-background/50 dy-shadow-sm dy-space-y-0" : isBoolean ? "dy-flex dy-flex-row-reverse dy-items-start dy-justify-end dy-gap-3 dy-space-y-0" : hideLabel ? "dy-space-y-0" : "dy-space-y-3"),
9513
+ className: cn(isSwitchBoolean ? "dy-flex dy-flex-row dy-items-center dy-justify-between dy-rounded-lg dy-border dy-border-border/40 dy-p-4 dy-bg-background/50 dy-shadow-sm dy-space-y-0" : isBoolean ? "dy-flex dy-flex-row-reverse dy-items-start dy-justify-end dy-gap-3 dy-space-y-0" : hideLabel ? "dy-space-y-0" : "dy-space-y-3"),
9424
9514
  children: [
9425
9515
  !hideLabel && /* @__PURE__ */ jsxs("div", {
9426
9516
  className: cn(isBoolean ? "dy-space-y-1" : "dy-flex dy-items-center dy-flex-wrap dy-gap-2 dy-mb-1"),
@@ -9832,7 +9922,7 @@ function FormEngineInner({ collection, fields, defaultValues = {}, onSubmit, onC
9832
9922
  ...form.register(field.name)
9833
9923
  }, field.name)),
9834
9924
  flatErrors.length > 0 && /* @__PURE__ */ jsxs("div", {
9835
- className: "dy-p-4 dy-rounded-xl dy-bg-destructive/10 dy-border dy-border-destructive/20 dy-text-destructive dy-space-y-2",
9925
+ className: "dy-p-4 dy-rounded-lg dy-bg-destructive/10 dy-border dy-border-destructive/20 dy-text-destructive dy-space-y-2",
9836
9926
  children: [/* @__PURE__ */ jsxs("div", {
9837
9927
  className: "dy-flex dy-items-center dy-gap-2 dy-font-semibold",
9838
9928
  children: [/* @__PURE__ */ jsx(AlertCircle, { className: "dy-h-4 dy-w-4 dy-shrink-0" }), /* @__PURE__ */ jsx("span", { children: "Please resolve the following validation errors:" })]
@@ -9867,7 +9957,7 @@ function FormEngineInner({ collection, fields, defaultValues = {}, onSubmit, onC
9867
9957
  }),
9868
9958
  fieldsContent,
9869
9959
  hasPassword && passwordChangeMode !== null && /* @__PURE__ */ jsxs("div", {
9870
- className: "dy-rounded-xl dy-border dy-border-border dy-p-5 dy-space-y-4",
9960
+ className: "dy-rounded-lg dy-border dy-border-border dy-p-5 dy-space-y-4",
9871
9961
  children: [
9872
9962
  /* @__PURE__ */ jsxs("div", {
9873
9963
  className: "dy-flex dy-items-center dy-gap-2 dy-text-sm dy-font-semibold dy-text-muted-foreground dy-uppercase dy-tracking-wide",
@@ -10847,6 +10937,23 @@ function SortableColumnItem({ id, label, visible, onToggleVisible }) {
10847
10937
  ]
10848
10938
  });
10849
10939
  }
10940
+ function resolvePublishedStateName(schema, item) {
10941
+ const hasPublishingState = !!(schema?.workflow || schema?.drafts);
10942
+ const workflowConfig = schema?.workflow;
10943
+ const workflowMeta = item?._workflow;
10944
+ const workflowState = workflowConfig && workflowMeta ? workflowConfig.states?.find((state) => state.name === workflowMeta.state) : null;
10945
+ if (workflowState) return workflowState.published ? "Published" : "Draft";
10946
+ if (!hasPublishingState) return null;
10947
+ const plainStatus = item.status;
10948
+ if (plainStatus === "published") return "Published";
10949
+ if (plainStatus === "draft") return "Draft";
10950
+ return null;
10951
+ }
10952
+ function resolveWorkflowState(schema, item) {
10953
+ const workflowConfig = schema?.workflow;
10954
+ const workflowMeta = item?._workflow;
10955
+ return workflowConfig && workflowMeta ? workflowConfig.states?.find((state) => state.name === workflowMeta.state) ?? null : null;
10956
+ }
10850
10957
  function CollectionListPage({ slug }) {
10851
10958
  const { client, components, user } = useDyrected();
10852
10959
  const queryClient = useQueryClient();
@@ -11191,6 +11298,7 @@ function CollectionListPage({ slug }) {
11191
11298
  const allColumnNames = visibleColumnNames;
11192
11299
  const firstVisibleFieldName = visibleColumnNames.find((name) => fieldByName.has(name));
11193
11300
  const titleFieldName = visibleColumnNames.includes(schema.admin?.useAsTitle || "") ? schema.admin?.useAsTitle : firstVisibleFieldName;
11301
+ const showPublishingStatus = !!(schema.workflow || schema.drafts);
11194
11302
  const deleteAccess = schema.access?.delete;
11195
11303
  const canDeleteRow = (item) => {
11196
11304
  if (deleteAccess === false) return false;
@@ -11333,6 +11441,29 @@ function CollectionListPage({ slug }) {
11333
11441
  const systemColumn = makeSystemColumn(name);
11334
11442
  if (systemColumn) cols.push(systemColumn);
11335
11443
  });
11444
+ if (showPublishingStatus) cols.push({
11445
+ id: "publishingStatus",
11446
+ header: "Status",
11447
+ enableHiding: false,
11448
+ cell: ({ row }) => {
11449
+ const status = resolvePublishedStateName(schema, row.original);
11450
+ if (!status) return /* @__PURE__ */ jsx("span", {
11451
+ className: "dy-text-xs dy-text-muted-foreground",
11452
+ children: "-"
11453
+ });
11454
+ const workflowState = resolveWorkflowState(schema, row.original);
11455
+ const badgePresentation = workflowState ? getWorkflowBadgePresentation(workflowState.color) : {
11456
+ className: status === "Published" ? WORKFLOW_BADGE_COLORS.success : WORKFLOW_BADGE_COLORS.warning,
11457
+ style: void 0
11458
+ };
11459
+ return /* @__PURE__ */ jsx(Badge, {
11460
+ variant: "outline",
11461
+ className: cn("dy-px-2 dy-py-0 dy-rounded-full dy-text-[10px] dy-font-bold dy-uppercase dy-tracking-wider dy-shrink-0", badgePresentation.className),
11462
+ style: badgePresentation.style,
11463
+ children: status
11464
+ });
11465
+ }
11466
+ });
11336
11467
  return cols;
11337
11468
  }, [
11338
11469
  schema,
@@ -11815,10 +11946,10 @@ function LivePreviewPane({ previewUrl, data, mode = "postMessage", collectionSlu
11815
11946
  const [tokenSrc, setTokenSrc] = useState(null);
11816
11947
  const [tokenError, setTokenError] = useState(null);
11817
11948
  const lastDataKeyRef = useRef(null);
11949
+ const dataKey = safeStringify(data);
11818
11950
  useEffect(() => {
11819
11951
  if (mode !== "token" || !client || !collectionSlug) return;
11820
- const key = safeStringify(data);
11821
- if (key === lastDataKeyRef.current) return;
11952
+ if (dataKey === lastDataKeyRef.current) return;
11822
11953
  let cancelled = false;
11823
11954
  const timer = setTimeout(async () => {
11824
11955
  try {
@@ -11828,7 +11959,7 @@ function LivePreviewPane({ previewUrl, data, mode = "postMessage", collectionSlu
11828
11959
  data
11829
11960
  });
11830
11961
  if (cancelled) return;
11831
- lastDataKeyRef.current = key;
11962
+ lastDataKeyRef.current = dataKey;
11832
11963
  setTokenSrc(withPreviewToken(previewUrl, token));
11833
11964
  setTokenError(null);
11834
11965
  } catch (err) {
@@ -11846,7 +11977,7 @@ function LivePreviewPane({ previewUrl, data, mode = "postMessage", collectionSlu
11846
11977
  collectionSlug,
11847
11978
  documentId,
11848
11979
  previewUrl,
11849
- data
11980
+ dataKey
11850
11981
  ]);
11851
11982
  const iframeSrc = mode === "token" ? tokenSrc ?? previewUrl : previewUrl;
11852
11983
  useEffect(() => {
@@ -11997,29 +12128,29 @@ function LivePreviewPane({ previewUrl, data, mode = "postMessage", collectionSlu
11997
12128
  //#region src/components/workflow/WorkflowPanel.tsx
11998
12129
  var STATE_COLORS = {
11999
12130
  success: {
12000
- bg: "dy-bg-emerald-50 dy-border-emerald-200",
12001
- text: "dy-text-emerald-700",
12002
- dot: "dy-bg-emerald-500"
12131
+ bg: "dy-bg-emerald-50 dy-border-emerald-200 dark:dy-bg-emerald-500/12 dark:dy-border-emerald-500/30",
12132
+ text: "dy-text-emerald-700 dark:dy-text-emerald-300",
12133
+ dot: "dy-bg-emerald-500 dark:dy-bg-emerald-400"
12003
12134
  },
12004
12135
  warning: {
12005
- bg: "dy-bg-amber-50 dy-border-amber-200",
12006
- text: "dy-text-amber-700",
12007
- dot: "dy-bg-amber-500"
12136
+ bg: "dy-bg-amber-50 dy-border-amber-200 dark:dy-bg-amber-500/12 dark:dy-border-amber-500/30",
12137
+ text: "dy-text-amber-700 dark:dy-text-amber-300",
12138
+ dot: "dy-bg-amber-500 dark:dy-bg-amber-400"
12008
12139
  },
12009
12140
  danger: {
12010
- bg: "dy-bg-red-50 dy-border-red-200",
12011
- text: "dy-text-red-700",
12012
- dot: "dy-bg-red-500"
12141
+ bg: "dy-bg-red-50 dy-border-red-200 dark:dy-bg-red-500/12 dark:dy-border-red-500/30",
12142
+ text: "dy-text-red-700 dark:dy-text-red-300",
12143
+ dot: "dy-bg-red-500 dark:dy-bg-red-400"
12013
12144
  },
12014
12145
  info: {
12015
- bg: "dy-bg-blue-50 dy-border-blue-200",
12016
- text: "dy-text-blue-700",
12017
- dot: "dy-bg-blue-500"
12146
+ bg: "dy-bg-blue-50 dy-border-blue-200 dark:dy-bg-blue-500/12 dark:dy-border-blue-500/30",
12147
+ text: "dy-text-blue-700 dark:dy-text-blue-300",
12148
+ dot: "dy-bg-blue-500 dark:dy-bg-blue-400"
12018
12149
  },
12019
12150
  neutral: {
12020
- bg: "dy-bg-muted/40 dy-border-border/60",
12021
- text: "dy-text-muted-foreground",
12022
- dot: "dy-bg-muted-foreground/60"
12151
+ bg: "dy-bg-muted/40 dy-border-border/60 dark:dy-bg-muted/60 dark:dy-border-border/80",
12152
+ text: "dy-text-muted-foreground dark:dy-text-foreground/80",
12153
+ dot: "dy-bg-muted-foreground/60 dark:dy-bg-foreground/60"
12023
12154
  }
12024
12155
  };
12025
12156
  function stateColors(color) {
@@ -12145,7 +12276,7 @@ function WorkflowPanel({ collection, documentId, workflowMeta, workflowConfig })
12145
12276
  return /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs(Button, {
12146
12277
  size: "sm",
12147
12278
  variant: t.unpublish || t.name === "reject" ? "outline" : "default",
12148
- className: cn("dy-w-full dy-h-9 dy-rounded-xl dy-text-xs dy-font-semibold dy-justify-start dy-gap-2", isWaiting && "dy-ring-2 dy-ring-primary/30"),
12279
+ className: cn("dy-w-full dy-h-9 dy-rounded-lg dy-text-xs dy-font-semibold dy-justify-start dy-gap-2", isWaiting && "dy-ring-2 dy-ring-primary/30"),
12149
12280
  disabled: transitionMutation.isPending,
12150
12281
  onClick: () => handleTransitionClick(t),
12151
12282
  children: [isLoading ? /* @__PURE__ */ jsx(Loader2, { className: "dy-h-3.5 dy-w-3.5 dy-animate-spin" }) : /* @__PURE__ */ jsx(StateIcon, { color: workflowConfig.states.find((s) => s.name === t.to)?.color }), t.label]
@@ -12591,7 +12722,7 @@ function EditEntryPage() {
12591
12722
  ]);
12592
12723
  const hasWorkflow = !!schema?.workflow;
12593
12724
  const syncShowWorkflow = useState(() => (next) => {
12594
- setActiveTab((prev) => next ? "versions" : prev === "versions" ? "edit" : prev);
12725
+ setActiveTab((prev) => next ? "workflow" : prev === "workflow" ? "edit" : prev);
12595
12726
  })[0];
12596
12727
  useEffect(() => {
12597
12728
  if (!hasWorkflow || schemaPreviewUrl) return;
@@ -12698,6 +12829,11 @@ function EditEntryPage() {
12698
12829
  const currentStatus = entry?.status || "draft";
12699
12830
  const workflowState = workflowConfig && workflowMeta ? workflowConfig.states?.find((s) => s.name === workflowMeta.state) : null;
12700
12831
  const isPublished = workflowState ? !!workflowState.published : currentStatus === "published";
12832
+ const statusBadgeLabel = workflowState ? workflowState.label || workflowState.name : currentStatus === "published" ? "Published" : currentStatus === "draft" ? "Draft" : String(currentStatus);
12833
+ const workflowBadgePresentation = workflowState ? getWorkflowBadgePresentation(workflowState.color) : {
12834
+ className: isPublished ? WORKFLOW_BADGE_COLORS.success : WORKFLOW_BADGE_COLORS.warning,
12835
+ style: void 0
12836
+ };
12701
12837
  const showStatusBadge = workflowConfig ? !!workflowMeta : hasStatus;
12702
12838
  const siteUrl = getSiteUrl(schemas?.admin?.siteUrl);
12703
12839
  const previewUrl = resolvePreviewUrl(schema.admin?.previewUrl, previewData || entry, siteUrl);
@@ -12825,9 +12961,10 @@ function EditEntryPage() {
12825
12961
  className: "dy-text-base dy-font-serif dy-font-bold dy-tracking-tight dy-text-foreground dy-truncate",
12826
12962
  children: ["New ", schema?.labels?.singular || schema?.slug]
12827
12963
  }), showStatusBadge && /* @__PURE__ */ jsx(Badge, {
12828
- className: cn("dy-px-2 dy-py-0 dy-rounded-full dy-text-[10px] dy-font-bold dy-uppercase dy-tracking-wider dy-shrink-0", isPublished ? "dy-bg-emerald-100 dy-text-emerald-700 dy-border-emerald-200" : "dy-bg-amber-100 dy-text-amber-700 dy-border-amber-200"),
12964
+ className: cn("dy-px-2 dy-py-0 dy-rounded-full dy-text-[10px] dy-font-bold dy-uppercase dy-tracking-wider dy-shrink-0", workflowBadgePresentation.className),
12965
+ style: workflowBadgePresentation.style,
12829
12966
  variant: "outline",
12830
- children: isPublished ? "Live" : "Draft"
12967
+ children: statusBadgeLabel
12831
12968
  })]
12832
12969
  }),
12833
12970
  /* @__PURE__ */ jsxs("div", {
@@ -12856,10 +12993,10 @@ function EditEntryPage() {
12856
12993
  }),
12857
12994
  workflowAvailable && /* @__PURE__ */ jsx(HeaderAction, {
12858
12995
  icon: Workflow,
12859
- label: "Versions",
12860
- active: activeTab === "versions",
12861
- title: activeTab === "versions" ? "Hide Version History" : "Show Version History",
12862
- onClick: () => setActiveTab((tab) => tab === "versions" ? "edit" : "versions")
12996
+ label: "Workflow",
12997
+ active: activeTab === "workflow",
12998
+ title: activeTab === "workflow" ? "Hide workflow transitions" : "Show workflow transitions",
12999
+ onClick: () => setActiveTab((tab) => tab === "workflow" ? "edit" : "workflow")
12863
13000
  }),
12864
13001
  schema?.audit && isEdit && canReadAudit && /* @__PURE__ */ jsx(HeaderAction, {
12865
13002
  icon: History,
@@ -12968,7 +13105,7 @@ function EditEntryPage() {
12968
13105
  children: /* @__PURE__ */ jsxs("div", {
12969
13106
  className: "dy-space-y-4",
12970
13107
  children: [
12971
- activeTab === "versions" && workflowAvailable && /* @__PURE__ */ jsx("div", {
13108
+ activeTab === "workflow" && workflowAvailable && /* @__PURE__ */ jsx("div", {
12972
13109
  className: "dy-animate-in dy-fade-in dy-duration-200 dy-max-w-3xl dy-mx-auto dy-py-6",
12973
13110
  children: /* @__PURE__ */ jsx(WorkflowPanel, {
12974
13111
  collection: slug,
@@ -13661,7 +13798,7 @@ function MediaPage({ collectionSlug, schema }) {
13661
13798
  className: "dy-relative dy-w-full sm:dy-max-w-sm",
13662
13799
  children: [/* @__PURE__ */ jsx(Search, { className: "dy-absolute dy-left-3 dy-top-1/2 dy--translate-y-1/2 dy-h-4 dy-w-4 dy-text-muted-foreground/60" }), /* @__PURE__ */ jsx(Input, {
13663
13800
  placeholder: "Search assets by filename...",
13664
- className: "dy-pl-10 dy-h-11 dy-bg-card dy-border-border/60 dy-rounded-xl dy-shadow-sm focus-visible:dy-ring-primary/20",
13801
+ className: "dy-pl-10 dy-h-11 dy-bg-card dy-border-border/60 dy-rounded-lg dy-shadow-sm focus-visible:dy-ring-primary/20",
13665
13802
  value: search,
13666
13803
  onChange: (e) => setSearch(e.target.value)
13667
13804
  })]
@@ -13671,14 +13808,14 @@ function MediaPage({ collectionSlug, schema }) {
13671
13808
  value: sortValue,
13672
13809
  onValueChange: (v) => setSortValue(v),
13673
13810
  children: [/* @__PURE__ */ jsxs(SelectTrigger, {
13674
- className: "dy-h-11 dy-w-full dy-rounded-xl dy-bg-card dy-border-border/60 dy-shadow-sm sm:dy-w-44",
13811
+ className: "dy-h-11 dy-w-full dy-rounded-lg dy-bg-card dy-border-border/60 dy-shadow-sm sm:dy-w-44",
13675
13812
  children: [/* @__PURE__ */ jsx(ArrowUpDown, { className: "dy-h-4 dy-w-4 dy-text-muted-foreground/70" }), /* @__PURE__ */ jsx(SelectValue, { placeholder: "Sort by" })]
13676
13813
  }), /* @__PURE__ */ jsx(SelectContent, { children: SORT_OPTIONS.map((opt) => /* @__PURE__ */ jsx(SelectItem, {
13677
13814
  value: opt.value,
13678
13815
  children: opt.label
13679
13816
  }, opt.value)) })]
13680
13817
  }), /* @__PURE__ */ jsxs("div", {
13681
- className: "dy-flex dy-h-11 dy-items-center dy-rounded-xl dy-border dy-border-border/60 dy-bg-card dy-p-1 dy-shadow-sm",
13818
+ className: "dy-flex dy-h-11 dy-items-center dy-rounded-lg dy-border dy-border-border/60 dy-bg-card dy-p-1 dy-shadow-sm",
13682
13819
  children: [/* @__PURE__ */ jsx(Button, {
13683
13820
  type: "button",
13684
13821
  variant: "ghost",
@@ -13936,7 +14073,7 @@ function MediaCard({ item, baseUrl, onDelete, onClick, isSelected }) {
13936
14073
  const previewUrl = getMediaPreviewUrl(item, baseUrl);
13937
14074
  const hasPreview = (isImage || isExternalVideo) && !!previewUrl;
13938
14075
  return /* @__PURE__ */ jsxs(Card, {
13939
- className: cn("dy-overflow-hidden dy-group dy-relative dy-border-border/40 dy-bg-card dy-shadow-sm hover:dy-shadow-xl dy-transition-all dy-duration-300 dy-rounded-xl dy-cursor-pointer", isSelected && "dy-ring-2 dy-ring-primary dy-ring-offset-2 dy-shadow-lg dy-scale-[0.98]"),
14076
+ className: cn("dy-overflow-hidden dy-group dy-relative dy-border-border/40 dy-bg-card dy-shadow-sm hover:dy-shadow-xl dy-transition-all dy-duration-300 dy-rounded-lg dy-cursor-pointer", isSelected && "dy-ring-2 dy-ring-primary dy-ring-offset-2 dy-shadow-lg dy-scale-[0.98]"),
13940
14077
  onClick,
13941
14078
  children: [
13942
14079
  /* @__PURE__ */ jsx(CardHeader, {
@@ -14071,7 +14208,7 @@ function MediaDetailsDialog({ item, collectionSlug, onClose, baseUrl, onUpdate,
14071
14208
  children: [/* @__PURE__ */ jsx("div", {
14072
14209
  className: "dy-relative dy-flex dy-w-full dy-flex-none dy-items-center dy-justify-center dy-border-b dy-border-border/40 dy-bg-muted/15 dy-p-3 sm:dy-p-5 md:dy-h-full md:dy-min-h-0 md:dy-w-3/5 md:dy-flex-shrink md:dy-border-b-0 md:dy-border-r lg:dy-w-2/3",
14073
14210
  children: /* @__PURE__ */ jsx("div", {
14074
- className: "dy-relative dy-flex dy-h-[40dvh] dy-min-h-[220px] dy-max-h-80 dy-w-full dy-max-w-full dy-items-center dy-justify-center dy-overflow-hidden dy-rounded-xl dy-border dy-border-border/40 dy-bg-checkered dy-shadow-inner md:dy-h-full md:dy-max-h-full",
14211
+ className: "dy-relative dy-flex dy-h-[40dvh] dy-min-h-[220px] dy-max-h-80 dy-w-full dy-max-w-full dy-items-center dy-justify-center dy-overflow-hidden dy-rounded-lg dy-border dy-border-border/40 dy-bg-checkered dy-shadow-inner md:dy-h-full md:dy-max-h-full",
14075
14212
  children: embedUrl ? /* @__PURE__ */ jsx("iframe", {
14076
14213
  src: embedUrl,
14077
14214
  title: item.filename,
@@ -14119,7 +14256,7 @@ function MediaDetailsDialog({ item, collectionSlug, onClose, baseUrl, onUpdate,
14119
14256
  className: "dy-text-xs dy-text-muted-foreground",
14120
14257
  children: ["Uploaded on ", item.createdAt ? new Date(item.createdAt).toLocaleDateString() : "N/A"]
14121
14258
  })] }), /* @__PURE__ */ jsxs("div", {
14122
- className: "dy-grid dy-grid-cols-2 dy-gap-x-4 dy-gap-y-3 dy-bg-muted/30 dy-p-3.5 dy-rounded-xl dy-border dy-border-border/40",
14259
+ className: "dy-grid dy-grid-cols-2 dy-gap-x-4 dy-gap-y-3 dy-bg-muted/30 dy-p-3.5 dy-rounded-lg dy-border dy-border-border/40",
14123
14260
  children: [
14124
14261
  /* @__PURE__ */ jsxs("div", {
14125
14262
  className: "dy-space-y-0.5",
@@ -14227,7 +14364,7 @@ function MediaDetailsDialog({ item, collectionSlug, onClose, baseUrl, onUpdate,
14227
14364
  }), /* @__PURE__ */ jsxs("div", {
14228
14365
  className: "dy-flex dy-flex-shrink-0 dy-flex-col dy-gap-3 dy-border-t dy-border-border/40 dy-bg-muted/5 dy-p-4 sm:dy-p-6",
14229
14366
  children: [hasChanges && /* @__PURE__ */ jsx(Button, {
14230
- className: "dy-w-full dy-h-11 dy-rounded-xl dy-font-bold dy-bg-primary dy-text-card dy-shadow-lg dy-shadow-primary/20 dy-animate-in dy-fade-in dy-slide-in-from-bottom-2",
14367
+ className: "dy-w-full dy-h-11 dy-rounded-lg dy-font-bold dy-bg-primary dy-text-card dy-shadow-lg dy-shadow-primary/20 dy-animate-in dy-fade-in dy-slide-in-from-bottom-2",
14231
14368
  onClick: handleSave,
14232
14369
  disabled: isSaving,
14233
14370
  children: isSaving ? "Saving..." : "Save Changes"
@@ -14235,7 +14372,7 @@ function MediaDetailsDialog({ item, collectionSlug, onClose, baseUrl, onUpdate,
14235
14372
  className: "dy-grid dy-grid-cols-2 dy-gap-2 sm:dy-flex",
14236
14373
  children: [
14237
14374
  collectionSlug && /* @__PURE__ */ jsx(Button, {
14238
- className: "dy-col-span-2 dy-h-11 dy-rounded-xl dy-font-bold dy-gap-2 dy-bg-card sm:dy-flex-1",
14375
+ className: "dy-col-span-2 dy-h-11 dy-rounded-lg dy-font-bold dy-gap-2 dy-bg-card sm:dy-flex-1",
14239
14376
  variant: "outline",
14240
14377
  asChild: true,
14241
14378
  children: /* @__PURE__ */ jsxs(Link, {
@@ -14244,7 +14381,7 @@ function MediaDetailsDialog({ item, collectionSlug, onClose, baseUrl, onUpdate,
14244
14381
  })
14245
14382
  }),
14246
14383
  /* @__PURE__ */ jsx(Button, {
14247
- className: cn("dy-h-11 dy-rounded-xl dy-font-bold dy-gap-2 dy-bg-card", collectionSlug ? "dy-px-3" : "dy-flex-1"),
14384
+ className: cn("dy-h-11 dy-rounded-lg dy-font-bold dy-gap-2 dy-bg-card", collectionSlug ? "dy-px-3" : "dy-flex-1"),
14248
14385
  variant: "outline",
14249
14386
  asChild: true,
14250
14387
  title: "Open Original File",
@@ -14257,14 +14394,14 @@ function MediaDetailsDialog({ item, collectionSlug, onClose, baseUrl, onUpdate,
14257
14394
  }),
14258
14395
  isImage && item.mimeType !== "image/svg+xml" && /* @__PURE__ */ jsxs(Button, {
14259
14396
  onClick: () => setIsCropOpen(true),
14260
- className: cn("dy-h-11 dy-rounded-xl dy-font-bold dy-gap-2 dy-bg-card", collectionSlug ? "dy-px-3" : "dy-flex-1"),
14397
+ className: cn("dy-h-11 dy-rounded-lg dy-font-bold dy-gap-2 dy-bg-card", collectionSlug ? "dy-px-3" : "dy-flex-1"),
14261
14398
  variant: "outline",
14262
14399
  title: "Crop Image",
14263
14400
  children: [/* @__PURE__ */ jsx(Scissors, { className: "dy-h-4 dy-w-4" }), !collectionSlug && "Crop"]
14264
14401
  }),
14265
14402
  onDelete && /* @__PURE__ */ jsx(Button, {
14266
14403
  onClick: onDelete,
14267
- className: "dy-h-11 dy-px-4 dy-rounded-xl dy-text-destructive hover:dy-bg-destructive/10 hover:dy-text-destructive dy-transition-colors",
14404
+ className: "dy-h-11 dy-px-4 dy-rounded-lg dy-text-destructive hover:dy-bg-destructive/10 hover:dy-text-destructive dy-transition-colors",
14268
14405
  variant: "ghost",
14269
14406
  title: "Delete Permanently",
14270
14407
  children: /* @__PURE__ */ jsx(Trash2, { className: "dy-h-4 dy-w-4" })
@@ -14395,7 +14532,7 @@ function FileUploader({ collectionSlug, files, setFiles, onComplete }) {
14395
14532
  /* @__PURE__ */ jsx("div", {
14396
14533
  className: "dy-max-h-[240px] dy-overflow-auto dy-space-y-2 dy-pr-2 dy-custom-scrollbar",
14397
14534
  children: files.map((file, idx) => /* @__PURE__ */ jsxs("div", {
14398
- className: "dy-flex dy-items-center dy-justify-between dy-p-3 dy-bg-muted/30 dy-border dy-border-border/40 dy-rounded-xl dy-text-sm dy-group dy-transition-colors hover:dy-bg-muted/50",
14535
+ className: "dy-flex dy-items-center dy-justify-between dy-p-3 dy-bg-muted/30 dy-border dy-border-border/40 dy-rounded-lg dy-text-sm dy-group dy-transition-colors hover:dy-bg-muted/50",
14399
14536
  children: [/* @__PURE__ */ jsxs("div", {
14400
14537
  className: "dy-flex dy-items-center dy-gap-3 dy-truncate",
14401
14538
  children: [/* @__PURE__ */ jsx("div", {
@@ -14426,7 +14563,7 @@ function FileUploader({ collectionSlug, files, setFiles, onComplete }) {
14426
14563
  children: /* @__PURE__ */ jsx(Button, {
14427
14564
  onClick: handleUpload,
14428
14565
  disabled: uploading || files.length === 0,
14429
- className: "dy-w-full dy-h-12 dy-rounded-xl dy-bg-primary hover:dy-bg-primary/90 dy-text-card dy-font-bold dy-shadow-lg dy-shadow-primary/20 dy-transition-all active:dy-scale-[0.98]",
14566
+ className: "dy-w-full dy-h-12 dy-rounded-lg dy-bg-primary hover:dy-bg-primary/90 dy-text-card dy-font-bold dy-shadow-lg dy-shadow-primary/20 dy-transition-all active:dy-scale-[0.98]",
14430
14567
  children: uploading ? /* @__PURE__ */ jsxs("span", {
14431
14568
  className: "dy-flex dy-items-center dy-gap-2",
14432
14569
  children: [/* @__PURE__ */ jsx("div", { className: "dy-h-4 dy-w-4 dy-border-2 dy-border-card/30 dy-border-t-card dy-rounded-full dy-animate-spin" }), "Uploading Assets..."]
@@ -14471,7 +14608,7 @@ function FileUploader({ collectionSlug, files, setFiles, onComplete }) {
14471
14608
  }), /* @__PURE__ */ jsx(Button, {
14472
14609
  onClick: handleAddUrl,
14473
14610
  disabled: addingUrl || !externalUrl.trim(),
14474
- className: "dy-h-12 dy-rounded-xl dy-bg-primary hover:dy-bg-primary/90 dy-text-card dy-font-bold dy-shadow-lg dy-shadow-primary/20 dy-transition-all active:dy-scale-[0.98] sm:dy-w-auto",
14611
+ className: "dy-h-12 dy-rounded-lg dy-bg-primary hover:dy-bg-primary/90 dy-text-card dy-font-bold dy-shadow-lg dy-shadow-primary/20 dy-transition-all active:dy-scale-[0.98] sm:dy-w-auto",
14475
14612
  children: addingUrl ? /* @__PURE__ */ jsxs("span", {
14476
14613
  className: "dy-flex dy-items-center dy-gap-2",
14477
14614
  children: [/* @__PURE__ */ jsx("div", { className: "dy-h-4 dy-w-4 dy-border-2 dy-border-card/30 dy-border-t-card dy-rounded-full dy-animate-spin" }), "Adding…"]
@@ -14672,7 +14809,7 @@ function SetupPromptUI({ config }) {
14672
14809
  setCopied(true);
14673
14810
  window.setTimeout(() => setCopied(false), 1800);
14674
14811
  }
14675
- const currentVersion = "2.5.60";
14812
+ const currentVersion = "2.5.63";
14676
14813
  const [latestVersion, setLatestVersion] = useState(() => {
14677
14814
  if (typeof window === "undefined") return null;
14678
14815
  return localStorage.getItem("dyrected_latest_release");
@@ -15750,7 +15887,7 @@ function AdminUI({ apiKey, baseUrl = "/dyrected", siteId, onNavigate, isEmbedded
15750
15887
  onNavigate,
15751
15888
  isEmbedded
15752
15889
  }) }) }), /* @__PURE__ */ jsx(Toaster$1, {
15753
- position: "top-right",
15890
+ position: "top-center",
15754
15891
  expand: true,
15755
15892
  richColors: true
15756
15893
  })] }) })
@@ -15796,7 +15933,7 @@ function AdminStandalone({ apiKey, baseUrl, siteId }) {
15796
15933
  baseUrl,
15797
15934
  siteId,
15798
15935
  children: /* @__PURE__ */ jsx(AdminThemeProvider, { children: /* @__PURE__ */ jsxs(AdminThemedRoot, { children: [/* @__PURE__ */ jsx(QueryProvider, { children: /* @__PURE__ */ jsx(MemoryRouter, { children: /* @__PURE__ */ jsx(AdminRoutes, {}) }) }), /* @__PURE__ */ jsx(Toaster$1, {
15799
- position: "top-right",
15936
+ position: "top-center",
15800
15937
  expand: true,
15801
15938
  richColors: true
15802
15939
  })] }) })
@@ -0,0 +1,6 @@
1
+ import { CSSProperties } from 'react';
2
+ export declare const WORKFLOW_BADGE_COLORS: Record<string, string>;
3
+ export declare function getWorkflowBadgePresentation(color?: string): {
4
+ className: string;
5
+ style?: CSSProperties;
6
+ };
@@ -7,6 +7,6 @@ export interface DyrectedProviderProps {
7
7
  siteId?: string;
8
8
  initialToken?: string;
9
9
  defaultTechStack?: string;
10
- components?: DyrectedContextType['components'];
10
+ components?: DyrectedContextType["components"];
11
11
  }
12
- export declare function DyrectedProvider({ children, apiKey: initialApiKey, baseUrl: initialBaseUrl, siteId: initialSiteId, initialToken, defaultTechStack, components }: DyrectedProviderProps): React.JSX.Element;
12
+ export declare function DyrectedProvider({ children, apiKey: initialApiKey, baseUrl: initialBaseUrl, siteId: initialSiteId, initialToken, defaultTechStack, components, }: DyrectedProviderProps): React.JSX.Element;
@@ -1,8 +1,9 @@
1
1
  import { ComponentType } from 'react';
2
- import { AdminConfig, CollectionConfig, GlobalConfig, PublicAdminAuthConfig } from '@dyrected/core';
2
+ import { AdminConfig, Block, CollectionConfig, GlobalConfig, PublicAdminAuthConfig } from '@dyrected/core';
3
3
  import { DyrectedClient, PaginatedResult } from '@dyrected/sdk';
4
4
  /** All collection and global schemas returned by the backend, plus optional admin config. */
5
5
  export interface AdminSchemas {
6
+ blocks?: Block[];
6
7
  collections: CollectionConfig[];
7
8
  globals: GlobalConfig[];
8
9
  admin?: AdminConfig;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dyrected/admin",
3
- "version": "2.5.61",
3
+ "version": "2.5.63",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -64,9 +64,9 @@
64
64
  "tailwind-merge": "^3.5.0",
65
65
  "tailwindcss-animate": "^1.0.7",
66
66
  "zod": "^3.25.76",
67
- "@dyrected/core": "^2.5.61",
68
- "@dyrected/knowledge": "^0.2.13",
69
- "@dyrected/sdk": "^2.5.61"
67
+ "@dyrected/core": "^2.5.63",
68
+ "@dyrected/sdk": "^2.5.63",
69
+ "@dyrected/knowledge": "^0.2.15"
70
70
  },
71
71
  "peerDependencies": {
72
72
  "@tanstack/react-query": "^5.0.0",