@revealui/core 0.14.4 → 0.14.7
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/client/admin/components/AdminDashboard.d.ts.map +1 -1
- package/dist/client/admin/components/AdminDashboard.js +4 -18
- package/dist/client/admin/page.d.ts.map +1 -1
- package/dist/client/admin/page.js +1 -1
- package/dist/generated/types/index.d.ts +4 -2
- package/dist/generated/types/index.d.ts.map +1 -1
- package/dist/generated/types/index.js +6 -4
- package/dist/generated/types/neon.d.ts +4 -3
- package/dist/generated/types/neon.d.ts.map +1 -1
- package/dist/generated/types/neon.js +4 -3
- package/dist/richtext/exports/server/rsc.js +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminDashboard.d.ts","sourceRoot":"","sources":["../../../../src/client/admin/components/AdminDashboard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAEV,YAAY,EAGb,MAAM,yBAAyB,CAAC;AAUjC,UAAU,mBAAmB;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"AdminDashboard.d.ts","sourceRoot":"","sources":["../../../../src/client/admin/components/AdminDashboard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAEV,YAAY,EAGb,MAAM,yBAAyB,CAAC;AAUjC,UAAU,mBAAmB;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;AA+dD,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,QAAqB,EACrB,YAAY,GACb,EAAE,mBAAmB,+BAqVrB"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { logger } from '@revealui/core/utils/logger';
|
|
4
4
|
import { Button, IconPrimitiveContent, IconSettings } from '@revealui/presentation';
|
|
5
|
-
import {
|
|
6
|
-
import { APIError, APIErrorType, apiClient
|
|
5
|
+
import { useEffect, useReducer } from 'react';
|
|
6
|
+
import { APIError, APIErrorType, apiClient } from '../utils/index.js';
|
|
7
7
|
import { CollectionList } from './CollectionList.js';
|
|
8
8
|
import { DocumentForm } from './DocumentForm.js';
|
|
9
9
|
import { GlobalForm } from './GlobalForm.js';
|
|
@@ -54,7 +54,7 @@ function reducer(state, action) {
|
|
|
54
54
|
// Shared sub-components
|
|
55
55
|
// =============================================================================
|
|
56
56
|
function AdminHeader({ title, onBack }) {
|
|
57
|
-
return (_jsx("header", { className: "
|
|
57
|
+
return (_jsx("header", { className: "border-b border-border bg-card", children: _jsx("div", { className: "mx-auto max-w-7xl px-4 sm:px-6 lg:px-8", children: _jsxs("div", { className: "flex items-center gap-4 py-4", children: [_jsx(Button, { type: "button", variant: "neutral", appearance: "ghost", size: "sm", onClick: onBack, children: "\u2190 Back to Dashboard" }), _jsx("h1", { className: "text-xl font-semibold capitalize text-foreground", children: title })] }) }) }));
|
|
58
58
|
}
|
|
59
59
|
function StatusBanners({ error, successMessage, }) {
|
|
60
60
|
return (_jsxs(_Fragment, { children: [error && (_jsxs("div", { className: "mb-4 bg-red-50 border border-red-200 text-red-800 px-4 py-3 rounded", children: [_jsx("p", { className: "font-medium", children: "Error" }), _jsx("p", { className: "text-sm", children: error })] })), successMessage && (_jsxs("div", { className: "mb-4 bg-success/10 border border-success/30 text-success px-4 py-3 rounded", children: [_jsx("p", { className: "font-medium", children: "Success" }), _jsx("p", { className: "text-sm", children: successMessage })] }))] }));
|
|
@@ -62,20 +62,6 @@ function StatusBanners({ error, successMessage, }) {
|
|
|
62
62
|
function LoadingSpinner() {
|
|
63
63
|
return (_jsxs("div", { className: "mb-4 text-center py-8", children: [_jsx("div", { className: "inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-primary" }), _jsx("p", { className: "mt-2 text-sm text-muted-foreground", children: "Loading..." })] }));
|
|
64
64
|
}
|
|
65
|
-
function SignOutButton() {
|
|
66
|
-
const [loading, setLoading] = useState(false);
|
|
67
|
-
const handleSignOut = useCallback(async () => {
|
|
68
|
-
setLoading(true);
|
|
69
|
-
try {
|
|
70
|
-
await postSignOut();
|
|
71
|
-
}
|
|
72
|
-
catch {
|
|
73
|
-
// Sign out even if the API call fails - clear client state regardless
|
|
74
|
-
}
|
|
75
|
-
window.location.href = '/login';
|
|
76
|
-
}, []);
|
|
77
|
-
return (_jsx(Button, { type: "button", variant: "neutral", appearance: "ghost", size: "sm", onClick: () => void handleSignOut(), disabled: loading, children: loading ? 'Signing out...' : 'Sign Out' }));
|
|
78
|
-
}
|
|
79
65
|
const TAXONOMY_GROUPS = ['Operate', 'Build', 'Configure'];
|
|
80
66
|
function isTaxonomyGroup(value) {
|
|
81
67
|
return value === 'Operate' || value === 'Build' || value === 'Configure';
|
|
@@ -177,7 +163,7 @@ function SystemStatusCard({ degraded }) {
|
|
|
177
163
|
}
|
|
178
164
|
function DashboardHome({ siteName, collections, globals, degraded, onCollectionClick, onGlobalClick, overviewLead, }) {
|
|
179
165
|
const grouped = groupCollectionsByTaxonomy(collections);
|
|
180
|
-
return (_jsxs("div", { className: "min-h-screen bg-background", children: [
|
|
166
|
+
return (_jsxs("div", { className: "min-h-screen bg-background", children: [_jsxs("div", { className: "border-b border-border bg-card px-6 py-4", children: [_jsx("h1", { className: "text-xl font-semibold text-foreground", children: "Overview" }), _jsxs("p", { className: "mt-0.5 text-sm text-muted-foreground", children: ["Collections, globals, and system status for ", siteName, "."] })] }), _jsxs("main", { className: "mx-auto max-w-7xl px-4 py-6 sm:px-6 lg:px-8", children: [overviewLead ? _jsx("div", { className: "mb-6", children: overviewLead }) : null, _jsxs("div", { className: "mb-8 grid grid-cols-1 gap-4 sm:grid-cols-2", children: [_jsx(StatTile, { label: "Collections", value: collections.length, icon: collectionsIcon }), _jsx(StatTile, { label: "Globals", value: globals.length, icon: globalsIcon })] }), _jsxs("div", { className: "grid grid-cols-1 gap-6 lg:grid-cols-3", children: [_jsx("div", { className: "lg:col-span-2 flex flex-col gap-6", children: collections.length > 0 ? (TAXONOMY_GROUPS.map((group) => (_jsx(CollectionGroupCard, { group: group, collections: grouped[group], onCollectionClick: onCollectionClick }, group)))) : (_jsx("div", { className: "rounded-lg bg-card p-5 shadow", children: _jsx("p", { className: "text-sm text-muted-foreground", children: "No collections configured" }) })) }), _jsxs("div", { className: "flex flex-col gap-6", children: [_jsx(GlobalsCard, { globals: globals, onGlobalClick: onGlobalClick }), _jsx(SystemStatusCard, { degraded: degraded })] })] })] })] }));
|
|
181
167
|
}
|
|
182
168
|
// =============================================================================
|
|
183
169
|
// Error handling helpers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../src/client/admin/page.tsx"],"names":[],"mappings":"AAGA,UAAU,QAAQ;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE;QACN,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,MAAM,EAAE,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACzC,YAAY,EAAE,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE;QACN,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,MAAM,EAAE,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACzC,YAAY,EAAE,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,wBAAgB,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa,+
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../../src/client/admin/page.tsx"],"names":[],"mappings":"AAGA,UAAU,QAAQ;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE;QACN,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,MAAM,EAAE,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACzC,YAAY,EAAE,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE;QACN,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,MAAM,EAAE,OAAO,CAAC;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACzC,YAAY,EAAE,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,wBAAgB,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa,+BA8IjD;AAED,wBAAgB,YAAY,gCAO3B;AAED,wBAAgB,oBAAoB,IAAI,QAAQ,CAS/C"}
|
|
@@ -7,7 +7,7 @@ export function RootPage({ config }) {
|
|
|
7
7
|
// REVEALUI_TENANT_NAME. `||` not `??`: Compose `${VAR:-}` interpolation
|
|
8
8
|
// delivers unset vars as empty strings.
|
|
9
9
|
const siteName = process.env.REVEALUI_BRAND_NAME || process.env.REVEALUI_TENANT_NAME || 'RevealUI';
|
|
10
|
-
return (_jsxs("div", { className: "min-h-screen bg-background", children: [_jsx("header", { className: "bg-card shadow-sm border-b", children: _jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children:
|
|
10
|
+
return (_jsxs("div", { className: "min-h-screen bg-background", children: [_jsx("header", { className: "bg-card shadow-sm border-b", children: _jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: _jsx("div", { className: "flex justify-between items-center py-4", children: _jsx("div", { className: "flex items-center", children: _jsx("h1", { className: "text-2xl font-bold text-foreground", children: `${siteName} Admin` }) }) }) }) }), _jsx("main", { className: "max-w-7xl mx-auto py-6 sm:px-6 lg:px-8", children: _jsx("div", { className: "px-4 py-6 sm:px-0", children: _jsxs("div", { className: "grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3", children: [_jsxs("div", { className: "bg-card overflow-hidden shadow rounded-lg", children: [_jsx("div", { className: "p-5", children: _jsxs("div", { className: "flex items-center", children: [_jsx("div", { className: "flex-shrink-0", children: _jsx(IconPrimitiveContent, { size: "lg", className: "h-8 w-8 text-muted-foreground", label: "Collections" }) }), _jsx("div", { className: "ml-5 w-0 flex-1", children: _jsxs("dl", { children: [_jsx("dt", { className: "text-sm font-medium text-muted-foreground truncate", children: "Collections" }), _jsx("dd", { className: "text-lg font-medium text-foreground", children: collections.length })] }) })] }) }), _jsx("div", { className: "bg-muted px-5 py-3", children: _jsx("div", { className: "text-sm", children: collections.length > 0 ? (_jsx("ul", { className: "space-y-1", children: collections.map((collection) => (_jsxs("li", { className: "text-muted-foreground", children: [_jsx("span", { className: "font-medium", children: collection.slug }), _jsxs("span", { className: "ml-2 text-xs text-muted-foreground", children: ["(", collection.fields?.length || 0, " fields)"] })] }, collection.slug))) })) : (_jsx("p", { className: "text-muted-foreground", children: "No collections configured" })) }) })] }), _jsxs("div", { className: "bg-card overflow-hidden shadow rounded-lg", children: [_jsx("div", { className: "p-5", children: _jsxs("div", { className: "flex items-center", children: [_jsx("div", { className: "flex-shrink-0", children: _jsx(IconSettings, { size: "lg", className: "h-8 w-8 text-muted-foreground", label: "Globals" }) }), _jsx("div", { className: "ml-5 w-0 flex-1", children: _jsxs("dl", { children: [_jsx("dt", { className: "text-sm font-medium text-muted-foreground truncate", children: "Globals" }), _jsx("dd", { className: "text-lg font-medium text-foreground", children: globals.length })] }) })] }) }), _jsx("div", { className: "bg-muted px-5 py-3", children: _jsx("div", { className: "text-sm", children: globals.length > 0 ? (_jsx("ul", { className: "space-y-1", children: globals.map((global) => (_jsxs("li", { className: "text-muted-foreground", children: [_jsx("span", { className: "font-medium", children: global.slug }), _jsxs("span", { className: "ml-2 text-xs text-muted-foreground", children: ["(", global.fields?.length || 0, " fields)"] })] }, global.slug))) })) : (_jsx("p", { className: "text-muted-foreground", children: "No globals configured" })) }) })] }), _jsxs("div", { className: "bg-card overflow-hidden shadow rounded-lg", children: [_jsx("div", { className: "p-5", children: _jsxs("div", { className: "flex items-center", children: [_jsx("div", { className: "flex-shrink-0", children: _jsx("div", { className: "h-8 w-8 bg-success/15 rounded-full flex items-center justify-center", children: _jsx(IconCheck, { size: "sm", className: "h-5 w-5 text-success", label: "System operational" }) }) }), _jsx("div", { className: "ml-5 w-0 flex-1", children: _jsxs("dl", { children: [_jsx("dt", { className: "text-sm font-medium text-muted-foreground truncate", children: "System Status" }), _jsx("dd", { className: "text-lg font-medium text-foreground", children: "Operational" })] }) })] }) }), _jsx("div", { className: "bg-muted px-5 py-3", children: _jsxs("div", { className: "text-sm text-muted-foreground", children: [siteName, " admin is running successfully with ", collections.length, " collections and", ' ', globals.length, " globals configured."] }) })] })] }) }) })] }));
|
|
11
11
|
}
|
|
12
12
|
export function NotFoundPage() {
|
|
13
13
|
return (_jsxs("div", { children: [_jsx("h1", { children: "404 - Page Not Found" }), _jsx("p", { children: "The requested admin page could not be found." })] }));
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
* Generated types for RevealUI framework.
|
|
3
3
|
* This module contains auto-generated types from:
|
|
4
4
|
* - admin configuration (revealui.config.ts)
|
|
5
|
-
* -
|
|
6
|
-
* - NeonDB database schema (Drizzle ORM)
|
|
5
|
+
* - Neon database schema (Drizzle ORM)
|
|
7
6
|
* - Other generated sources
|
|
8
7
|
*
|
|
8
|
+
* There is no live Supabase schema in this product. `NeonNS.Database` still
|
|
9
|
+
* re-exports a leftover `public.Tables` index for old helpers.
|
|
10
|
+
*
|
|
9
11
|
* ⚠️ DO NOT MODIFY THESE FILES MANUALLY
|
|
10
12
|
* They are generated by scripts and will be overwritten.
|
|
11
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generated/types/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generated/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,cAAc,YAAY,CAAA;AAQ1B,OAAO,KAAK,MAAM,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,CAAA;AACjB,YAAY,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
* Generated types for RevealUI framework.
|
|
3
3
|
* This module contains auto-generated types from:
|
|
4
4
|
* - admin configuration (revealui.config.ts)
|
|
5
|
-
* -
|
|
6
|
-
* - NeonDB database schema (Drizzle ORM)
|
|
5
|
+
* - Neon database schema (Drizzle ORM)
|
|
7
6
|
* - Other generated sources
|
|
8
7
|
*
|
|
8
|
+
* There is no live Supabase schema in this product. `NeonNS.Database` still
|
|
9
|
+
* re-exports a leftover `public.Tables` index for old helpers.
|
|
10
|
+
*
|
|
9
11
|
* ⚠️ DO NOT MODIFY THESE FILES MANUALLY
|
|
10
12
|
* They are generated by scripts and will be overwritten.
|
|
11
13
|
*/
|
|
@@ -13,8 +15,8 @@
|
|
|
13
15
|
export * from './admin.js';
|
|
14
16
|
// Re-export Neon types
|
|
15
17
|
// Note: neon.ts re-exports types from @revealui/contracts/generated to break circular dependencies
|
|
16
|
-
//
|
|
17
|
-
// Access
|
|
18
|
+
// Namespace export avoids clashing with other Database names in this barrel.
|
|
19
|
+
// Access: import { NeonNS } from '@revealui/core/generated/types'; type DB = NeonNS.Database
|
|
18
20
|
// Or use alias: import { NeonDatabase } from '@revealui/core/generated/types'
|
|
19
21
|
// Or import directly: import type { Database } from '@revealui/core/generated/types/neon'
|
|
20
22
|
import * as NeonNS from './neon.js';
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Generated Database Types for
|
|
2
|
+
* Generated Database Types for Neon
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Re-exports from `@revealui/contracts/generated` to break circular
|
|
5
|
+
* dependencies. The `Database` symbol still has a leftover `public.Tables`
|
|
6
|
+
* index (Supabase-compat). Neon is the SSOT.
|
|
6
7
|
*
|
|
7
8
|
* Last updated: 2026-01-25T00:00:00.000Z
|
|
8
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"neon.d.ts","sourceRoot":"","sources":["../../../src/generated/types/neon.ts"],"names":[],"mappings":"AACA
|
|
1
|
+
{"version":3,"file":"neon.d.ts","sourceRoot":"","sources":["../../../src/generated/types/neon.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AAGH,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EAExB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAEzB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,WAAW,EAEhB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,WAAW,EAEhB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,GAC7B,MAAM,+BAA+B,CAAA;AAGtC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/* tslint:disable */
|
|
2
2
|
/**
|
|
3
|
-
* Generated Database Types for
|
|
3
|
+
* Generated Database Types for Neon
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Re-exports from `@revealui/contracts/generated` to break circular
|
|
6
|
+
* dependencies. The `Database` symbol still has a leftover `public.Tables`
|
|
7
|
+
* index (Supabase-compat). Neon is the SSOT.
|
|
7
8
|
*
|
|
8
9
|
* Last updated: 2026-01-25T00:00:00.000Z
|
|
9
10
|
*/
|
|
@@ -13,7 +13,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
13
13
|
import { isSafeUrl, sanitizeUrl } from '@revealui/security/sanitize';
|
|
14
14
|
import { Fragment } from 'react';
|
|
15
15
|
// URL sanitization is owned by @revealui/security (single source of truth
|
|
16
|
-
// for every untrusted-string sink across
|
|
16
|
+
// for every untrusted-string sink across RevealFleet). Re-exported here so
|
|
17
17
|
// existing consumers keep working.
|
|
18
18
|
export { isSafeUrl, sanitizeUrl };
|
|
19
19
|
// ============================================
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@revealui/core",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.7",
|
|
4
4
|
"description": "RevealUI's runtime engine — admin UI, REST API, auth, rich text, plugin system, and access control. The heart of the open-source platform.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"dependencies": {
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
"pg": "^8.22.0",
|
|
24
24
|
"yjs": "^13.6.31",
|
|
25
25
|
"zod": "^4.4.3",
|
|
26
|
-
"@revealui/contracts": "0.
|
|
27
|
-
"@revealui/presentation": "0.14.
|
|
26
|
+
"@revealui/contracts": "0.11.0",
|
|
27
|
+
"@revealui/presentation": "0.14.7",
|
|
28
28
|
"@revealui/resilience": "0.2.4",
|
|
29
|
-
"@revealui/security": "0.8.
|
|
29
|
+
"@revealui/security": "0.8.2",
|
|
30
30
|
"@revealui/utils": "0.3.6"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
@@ -35,11 +35,11 @@
|
|
|
35
35
|
"@types/pg": "^8.20.0",
|
|
36
36
|
"@types/react": "^19.2.17",
|
|
37
37
|
"@types/react-dom": "^19.2.3",
|
|
38
|
-
"@vitest/coverage-v8": "^4.1.
|
|
38
|
+
"@vitest/coverage-v8": "^4.1.11",
|
|
39
39
|
"expect-type": "^1.4.0",
|
|
40
40
|
"jsdom": "29.1.1",
|
|
41
41
|
"tsup": "^8.5.1",
|
|
42
|
-
"vitest": "^4.1.
|
|
42
|
+
"vitest": "^4.1.11",
|
|
43
43
|
"@revealui/dev": "0.1.0"
|
|
44
44
|
},
|
|
45
45
|
"engines": {
|