@airdraft/react-ui 0.1.0 → 0.1.3
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/CHANGELOG.md +46 -0
- package/dist/AuditLogViewer.d.ts.map +1 -1
- package/dist/AuditLogViewer.js +3 -3
- package/dist/AuditLogViewer.js.map +1 -1
- package/dist/CMSAdmin.d.ts +31 -0
- package/dist/CMSAdmin.d.ts.map +1 -0
- package/dist/CMSAdmin.js +152 -0
- package/dist/CMSAdmin.js.map +1 -0
- package/dist/MediaManager.d.ts.map +1 -1
- package/dist/MediaManager.js +2 -2
- package/dist/MediaManager.js.map +1 -1
- package/dist/components/CmsAdminHeader.d.ts +7 -1
- package/dist/components/CmsAdminHeader.d.ts.map +1 -1
- package/dist/components/CmsAdminHeader.js +62 -85
- package/dist/components/CmsAdminHeader.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +6 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,51 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
|
+
|
|
5
|
+
### [0.1.3](https://github.com/aevrHQ/airdraft/compare/react-ui@v0.1.2...react-ui@v0.1.3) (2026-05-22)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **react-ui:** add CMSAdmin component and update related files for new admin functionality ([50f1459](https://github.com/aevrHQ/airdraft/commit/50f14598c268823615f61428ee1e0e399c610630))
|
|
11
|
+
|
|
12
|
+
### [0.1.2](https://github.com/aevrHQ/airdraft/compare/react-ui@v0.1.1...react-ui@v0.1.2) (2026-05-22)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **cli,core,docs:** implement local filesystem mode with enhanced initialization and error handling ([1848408](https://github.com/aevrHQ/airdraft/commit/1848408738ee3d2bfa0ef532e6dec7a3beef0fb1))
|
|
18
|
+
* **cli:** add CMS client template and optional blog scaffolding to initialization ([cf7bda8](https://github.com/aevrHQ/airdraft/commit/cf7bda8137777aa319acd8edf55fb2cd718a9cd1))
|
|
19
|
+
* **cli:** enhance project initialization templates with schema path support ([a3b20c9](https://github.com/aevrHQ/airdraft/commit/a3b20c9d0dbf0e23594079f1685be8d688e7779b))
|
|
20
|
+
* **client:** add convenience methods for listing and retrieving entries ([c48e3f6](https://github.com/aevrHQ/airdraft/commit/c48e3f6848772bf1ed860785e1e3f9eadffb5ddc))
|
|
21
|
+
* **content:** update content package with new field components and type changes ([e1bd5fa](https://github.com/aevrHQ/airdraft/commit/e1bd5fa8af9b2903024c39a0fa945e49f87754d3))
|
|
22
|
+
|
|
23
|
+
### [0.1.1](https://github.com/aevrHQ/airdraft/compare/react-ui@v0.1.0...react-ui@v0.1.1) (2026-05-22)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Features
|
|
27
|
+
|
|
28
|
+
* add Next.js app detection and prompt for app directory in init commands ([2ed1afd](https://github.com/aevrHQ/airdraft/commit/2ed1afdd1ba3142fd50a9bfd4133f01c2ad22ae9))
|
|
29
|
+
* add schema editor plugin and GitHub schema adapter for managing airdraft.schema.json ([46fd7f2](https://github.com/aevrHQ/airdraft/commit/46fd7f271afe8bc562d5f2fe72b94390cb257161))
|
|
30
|
+
* add versioning and changelog support for all packages ([d6c85df](https://github.com/aevrHQ/airdraft/commit/d6c85dfed37f11c42151c93b49a80ede90699616))
|
|
31
|
+
* enhance media input components and add scoped media adapter for project isolation ([e599cf2](https://github.com/aevrHQ/airdraft/commit/e599cf2c488cf73164d1cb7b1ce479d6005cf923))
|
|
32
|
+
* implement terminal UI helpers for improved user interaction ([0e0dca4](https://github.com/aevrHQ/airdraft/commit/0e0dca4a4e06196abea22e99c9a350fdd202a948))
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
### Bug Fixes
|
|
36
|
+
|
|
37
|
+
* improve error handling for missing schema file in buildProjectHandler ([4c3d318](https://github.com/aevrHQ/airdraft/commit/4c3d3184c9c454062fd2d9b33fb0593d5e91b71c))
|
|
38
|
+
* update cloud package version to 0.1.4 and enhance audit log persistence logic ([e1fb0e5](https://github.com/aevrHQ/airdraft/commit/e1fb0e5509c7f95c4e659495bcdbd1339da20cea))
|
|
39
|
+
* update package versions and enhance schema cache handling ([7f4f395](https://github.com/aevrHQ/airdraft/commit/7f4f39572168b4e75dd6f1d756ebd5ef2d7ddbe1))
|
|
40
|
+
* update schema URL from airdraft.dev to airdraft.space ([dbace6e](https://github.com/aevrHQ/airdraft/commit/dbace6e13334f915feace70661810d5dc919f69b))
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
### Documentation
|
|
44
|
+
|
|
45
|
+
* add Releasing & Publishing section to README ([132193b](https://github.com/aevrHQ/airdraft/commit/132193bebff585ad3223ccb82176c30615f21443))
|
|
46
|
+
|
|
47
|
+
# Changelog
|
|
48
|
+
|
|
3
49
|
All notable changes to `@airdraft/react-ui` will be documented here.
|
|
4
50
|
|
|
5
51
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuditLogViewer.d.ts","sourceRoot":"","sources":["../src/AuditLogViewer.tsx"],"names":[],"mappings":"AAwBA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC3C;AAgDD,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAAE,MAAqB,EAAE,SAAS,EAAE,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"AuditLogViewer.d.ts","sourceRoot":"","sources":["../src/AuditLogViewer.tsx"],"names":[],"mappings":"AAwBA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC3C;AAgDD,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAAE,MAAqB,EAAE,SAAS,EAAE,EAAE,mBAAmB,2CAmLvF"}
|
package/dist/AuditLogViewer.js
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { useEffect, useState, useCallback } from 'react';
|
|
4
4
|
import { Button } from './ui/button.js';
|
|
5
|
-
import {
|
|
5
|
+
import { InputGroup, InputGroupAddon, InputGroupText, InputGroupInput } from './ui/input-group.js';
|
|
6
6
|
import { Badge } from './ui/badge.js';
|
|
7
7
|
import { PageHeader } from './components/PageHeader.js';
|
|
8
8
|
import { EmptyState } from './components/EmptyState.js';
|
|
9
9
|
import { ErrorAlert } from './components/ErrorAlert.js';
|
|
10
10
|
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from './ui/table.js';
|
|
11
11
|
import { cn } from './lib/utils.js';
|
|
12
|
-
import { RefreshCw, ScrollText } from 'lucide-react';
|
|
12
|
+
import { RefreshCw, ScrollText, Search } from 'lucide-react';
|
|
13
13
|
// ---------------------------------------------------------------------------
|
|
14
14
|
// Helpers
|
|
15
15
|
// ---------------------------------------------------------------------------
|
|
@@ -90,6 +90,6 @@ export function AuditLogViewer({ apiUrl = '/api/audit', className }) {
|
|
|
90
90
|
: events;
|
|
91
91
|
return (_jsxs("div", { className: cn('space-y-4', className), children: [_jsx(PageHeader, { title: "Audit Log", description: loading ? 'Loading…'
|
|
92
92
|
: error ? 'Error'
|
|
93
|
-
: `${filtered.length} of ${total} event${total === 1 ? '' : 's'}`, actions: _jsxs(Button, { variant: "outline", size: "sm", onClick: load, disabled: loading, children: [_jsx(RefreshCw, { className: cn('h-3.5 w-3.5 mr-1.5', loading && 'animate-spin') }), "Refresh"] }) }), _jsx(
|
|
93
|
+
: `${filtered.length} of ${total} event${total === 1 ? '' : 's'}`, actions: _jsxs(Button, { variant: "outline", size: "sm", onClick: load, disabled: loading, children: [_jsx(RefreshCw, { className: cn('h-3.5 w-3.5 mr-1.5', loading && 'animate-spin') }), "Refresh"] }) }), _jsxs(InputGroup, { className: "max-w-md", children: [_jsx(InputGroupAddon, { align: "inline-start", children: _jsx(InputGroupText, { children: _jsx(Search, {}) }) }), _jsx(InputGroupInput, { placeholder: "Filter by action, path, status, collection\u2026", value: filter, onChange: (e) => setFilter(e.target.value) })] }), error && _jsx(ErrorAlert, { error: error, title: "Failed to load audit log", onRetry: load }), !loading && !error && filtered.length === 0 && (_jsx(EmptyState, { icon: _jsx(ScrollText, { className: "h-10 w-10" }), title: "No events", description: q ? 'No events match your filter.' : 'No audit events recorded yet.' })), filtered.length > 0 && (_jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { className: "w-[160px]", children: "Time" }), _jsx(TableHead, { className: "w-[60px]", children: "Method" }), _jsx(TableHead, { children: "Path" }), _jsx(TableHead, { className: "w-[80px]", children: "Status" }), _jsx(TableHead, { className: "w-[70px] text-right", children: "ms" })] }) }), _jsx(TableBody, { children: filtered.map((ev) => (_jsxs(_Fragment, { children: [_jsxs(TableRow, { className: cn('cursor-pointer hover:bg-muted/50', expanded === ev.requestId && 'bg-muted/40'), onClick: () => setExpanded((prev) => (prev === ev.requestId ? null : ev.requestId)), children: [_jsx(TableCell, { className: "font-mono text-xs text-muted-foreground whitespace-nowrap", children: formatTs(ev.timestamp) }), _jsx(TableCell, { children: _jsx(MethodBadge, { method: ev.method }) }), _jsxs(TableCell, { className: "font-mono text-xs max-w-[320px] truncate", children: [_jsx("span", { className: "text-muted-foreground", children: ev.path }), ev.error && (_jsx("span", { className: "ml-2 text-destructive text-xs", children: ev.error.message }))] }), _jsx(TableCell, { children: _jsx(StatusBadge, { code: ev.statusCode }) }), _jsx(TableCell, { className: "text-right font-mono text-xs text-muted-foreground", children: ev.durationMs })] }, ev.requestId), expanded === ev.requestId && (_jsx(TableRow, { className: "bg-muted/20 hover:bg-muted/20", children: _jsx(TableCell, { colSpan: 5, className: "p-0", children: _jsx("div", { className: "px-4 py-3 font-mono text-xs space-y-1.5", children: _jsxs("div", { className: "grid grid-cols-[120px_1fr] gap-x-4 gap-y-1", children: [_jsx("span", { className: "text-muted-foreground", children: "requestId" }), _jsx("span", { children: ev.requestId }), _jsx("span", { className: "text-muted-foreground", children: "action" }), _jsx("span", { children: ev.action }), ev.collection && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-muted-foreground", children: "collection" }), _jsx("span", { children: ev.collection })] })), ev.slug && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-muted-foreground", children: "slug" }), _jsx("span", { children: ev.slug })] })), ev.actor && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-muted-foreground", children: "actor" }), _jsx("span", { className: "truncate max-w-[300px]", children: ev.actor })] })), ev.error && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-muted-foreground", children: "error" }), _jsxs("span", { className: "text-destructive", children: [ev.error.code ? `[${ev.error.code}] ` : '', ev.error.message] })] })), ev.response && Object.keys(ev.response).length > 0 && (_jsxs(_Fragment, { children: [_jsx("span", { className: "text-muted-foreground", children: "response" }), _jsx("span", { className: "text-muted-foreground break-all", children: JSON.stringify(ev.response) })] }))] }) }) }) }, `${ev.requestId}-detail`))] }))) })] }))] }));
|
|
94
94
|
}
|
|
95
95
|
//# sourceMappingURL=AuditLogViewer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuditLogViewer.js","sourceRoot":"","sources":["../src/AuditLogViewer.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"AuditLogViewer.js","sourceRoot":"","sources":["../src/AuditLogViewer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { AuthConfig } from '@airdraft/react';
|
|
2
|
+
export interface CMSAdminProps {
|
|
3
|
+
/** Catch-all route segments from Next.js params — pass `params.route ?? []`. */
|
|
4
|
+
segments?: string[];
|
|
5
|
+
/** Mount point of the CMS admin. Default: "/cms" */
|
|
6
|
+
basePath?: string;
|
|
7
|
+
/** Airdraft API base URL. Default: "/api/cms" */
|
|
8
|
+
apiUrl?: string;
|
|
9
|
+
/** Auth config. Falls back to NEXT_PUBLIC_CMS_API_KEY env var, then session mode. */
|
|
10
|
+
auth?: AuthConfig;
|
|
11
|
+
/** Brand name shown in the header logo. Default: "Airdraft" */
|
|
12
|
+
brandName?: string;
|
|
13
|
+
/** Brand logo image URL. Default: Airdraft favicon */
|
|
14
|
+
brandLogoUrl?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Drop-in CMS admin component for Next.js catch-all routes.
|
|
18
|
+
*
|
|
19
|
+
* Place in `app/cms/[[...route]]/page.tsx`:
|
|
20
|
+
*
|
|
21
|
+
* ```tsx
|
|
22
|
+
* import { CMSAdmin } from '@airdraft/react-ui'
|
|
23
|
+
*
|
|
24
|
+
* export default async function CmsPage({ params }: { params: Promise<{ route?: string[] }> }) {
|
|
25
|
+
* const { route } = await params
|
|
26
|
+
* return <CMSAdmin segments={route} />
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function CMSAdmin({ segments, basePath, apiUrl, auth, brandName, brandLogoUrl, }: CMSAdminProps): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
//# sourceMappingURL=CMSAdmin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CMSAdmin.d.ts","sourceRoot":"","sources":["../src/CMSAdmin.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAgBjD,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qFAAqF;IACrF,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AA0OD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAa,EACb,QAAiB,EACjB,MAAmB,EACnB,IAAI,EACJ,SAAsB,EACtB,YAAY,GACb,EAAE,aAAa,2CAgBf"}
|
package/dist/CMSAdmin.js
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect } from 'react';
|
|
4
|
+
import { useRouter } from 'next/navigation';
|
|
5
|
+
import { AirdraftProvider, useAuth } from '@airdraft/react';
|
|
6
|
+
import { CmsAdminHeader } from './components/CmsAdminHeader.js';
|
|
7
|
+
import { CollectionsIndex } from './CollectionsIndex.js';
|
|
8
|
+
import { ContentManager } from './ContentManager.js';
|
|
9
|
+
import { EntryEditor } from './EntryEditor.js';
|
|
10
|
+
import { MediaManager } from './MediaManager.js';
|
|
11
|
+
import { LoginForm } from './LoginForm.js';
|
|
12
|
+
import { SchemaEditor } from './SchemaEditor.js';
|
|
13
|
+
import { TeamManager } from './TeamManager.js';
|
|
14
|
+
import { AuditLogViewer } from './AuditLogViewer.js';
|
|
15
|
+
import { EmptyState } from './components/EmptyState.js';
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
// Resolve auth from prop → env var → session
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
function resolveAuth(auth) {
|
|
20
|
+
if (auth)
|
|
21
|
+
return auth;
|
|
22
|
+
const apiKey = typeof process !== 'undefined'
|
|
23
|
+
? (process.env['NEXT_PUBLIC_CMS_API_KEY'] ?? '')
|
|
24
|
+
: '';
|
|
25
|
+
if (apiKey)
|
|
26
|
+
return { type: 'apiKey', token: apiKey };
|
|
27
|
+
return undefined; // falls back to { type: 'session' } implicitly
|
|
28
|
+
}
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
// Login view — no shell, centered card
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
function LoginView({ basePath, brandName, }) {
|
|
33
|
+
const router = useRouter();
|
|
34
|
+
return (_jsx("div", { className: "min-h-screen flex items-center justify-center p-4 bg-background", children: _jsxs("div", { className: "w-full max-w-sm space-y-6", children: [_jsxs("div", { className: "text-center", children: [_jsx("h1", { className: "text-2xl font-semibold tracking-tight", children: brandName }), _jsx("p", { className: "text-sm text-muted-foreground mt-1", children: "Sign in to your account" })] }), _jsx("div", { className: "rounded-xl border bg-card p-6 shadow-sm", children: _jsx(LoginForm, { onSuccess: () => router.replace(basePath) }) })] }) }));
|
|
35
|
+
}
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
// API-key shell — no auth guard
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
function ApiKeyShell({ children, basePath, brandName, brandLogoUrl, }) {
|
|
40
|
+
return (_jsxs(_Fragment, { children: [_jsx(CmsAdminHeader, { basePath: basePath, brandName: brandName, brandLogoUrl: brandLogoUrl }), _jsx("div", { className: "px-4", children: _jsx("main", { className: "mx-auto max-w-4xl space-y-6 py-6", children: children }) })] }));
|
|
41
|
+
}
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
// Session shell — auth guard + logout
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
function SessionShell({ children, basePath, brandName, brandLogoUrl, }) {
|
|
46
|
+
const router = useRouter();
|
|
47
|
+
const { user, isLoading, logout } = useAuth();
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
if (!isLoading && !user) {
|
|
50
|
+
router.replace(`${basePath}/login`);
|
|
51
|
+
}
|
|
52
|
+
}, [isLoading, user, basePath, router]);
|
|
53
|
+
if (isLoading) {
|
|
54
|
+
return (_jsx("div", { className: "flex min-h-screen items-center justify-center", children: _jsx("p", { className: "text-sm text-muted-foreground", children: "Loading\u2026" }) }));
|
|
55
|
+
}
|
|
56
|
+
if (!user)
|
|
57
|
+
return null;
|
|
58
|
+
async function handleLogout() {
|
|
59
|
+
await logout();
|
|
60
|
+
router.replace(`${basePath}/login`);
|
|
61
|
+
}
|
|
62
|
+
return (_jsxs(_Fragment, { children: [_jsx(CmsAdminHeader, { user: user, onLogout: handleLogout, basePath: basePath, brandName: brandName, brandLogoUrl: brandLogoUrl }), _jsx("div", { className: "px-4", children: _jsx("main", { className: "mx-auto max-w-4xl space-y-6 py-6", children: children }) })] }));
|
|
63
|
+
}
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
// View switcher — maps segments → component
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
function CmsView({ segments, basePath, apiUrl, brandName, brandLogoUrl, isApiKeyMode, }) {
|
|
68
|
+
const router = useRouter();
|
|
69
|
+
const Shell = isApiKeyMode ? ApiKeyShell : SessionShell;
|
|
70
|
+
const shellProps = { basePath, brandName, brandLogoUrl };
|
|
71
|
+
// Login page — rendered without a shell
|
|
72
|
+
if (segments[0] === 'login') {
|
|
73
|
+
if (isApiKeyMode) {
|
|
74
|
+
// API-key mode doesn't use login — redirect to base
|
|
75
|
+
router.replace(basePath);
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
return _jsx(LoginView, { basePath: basePath, brandName: brandName });
|
|
79
|
+
}
|
|
80
|
+
// Settings redirect: /settings → /settings/schema
|
|
81
|
+
if (segments[0] === 'settings' && segments.length === 1) {
|
|
82
|
+
router.replace(`${basePath}/settings/schema`);
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
// /collections → redirect to base (the collections index is the root)
|
|
86
|
+
if (segments[0] === 'collections' && segments.length === 1) {
|
|
87
|
+
router.replace(basePath);
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
// Determine view content
|
|
91
|
+
let content;
|
|
92
|
+
if (segments.length === 0) {
|
|
93
|
+
// Root → collections index
|
|
94
|
+
content = (_jsx(CollectionsIndex, { onSelect: (name) => router.push(`${basePath}/collections/${name}`) }));
|
|
95
|
+
}
|
|
96
|
+
else if (segments[0] === 'collections' && segments.length === 2) {
|
|
97
|
+
// /collections/[collection]
|
|
98
|
+
const collection = segments[1];
|
|
99
|
+
content = (_jsx(ContentManager, { collection: collection, onEdit: (slug) => router.push(`${basePath}/collections/${collection}/${slug}`) }));
|
|
100
|
+
}
|
|
101
|
+
else if (segments[0] === 'collections' && segments.length === 3) {
|
|
102
|
+
// /collections/[collection]/[slug]
|
|
103
|
+
const [, collection, slug] = segments;
|
|
104
|
+
content = (_jsx(EntryEditor, { collection: collection, slug: slug, onBack: () => router.push(`${basePath}/collections/${collection}`) }));
|
|
105
|
+
}
|
|
106
|
+
else if (segments[0] === 'media') {
|
|
107
|
+
content = _jsx(MediaManager, {});
|
|
108
|
+
}
|
|
109
|
+
else if (segments[0] === 'settings' && segments[1] === 'schema') {
|
|
110
|
+
content = _jsx(SchemaEditor, {});
|
|
111
|
+
}
|
|
112
|
+
else if (segments[0] === 'settings' && segments[1] === 'team') {
|
|
113
|
+
// TeamManager — only meaningful in session mode (useAuth inside Shell provides user)
|
|
114
|
+
content = _jsx(TeamManagerView, {});
|
|
115
|
+
}
|
|
116
|
+
else if (segments[0] === 'settings' && segments[1] === 'audit') {
|
|
117
|
+
content = _jsx(AuditLogViewer, { apiUrl: `${apiUrl}/audit` });
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
// Unknown route
|
|
121
|
+
content = (_jsx(EmptyState, { title: "Page not found", description: `The path "/${segments.join('/')}" doesn't exist in the CMS admin.` }));
|
|
122
|
+
}
|
|
123
|
+
return _jsx(Shell, { ...shellProps, children: content });
|
|
124
|
+
}
|
|
125
|
+
// Thin wrapper so TeamManager can read useAuth inside the Shell's AirdraftProvider tree
|
|
126
|
+
function TeamManagerView() {
|
|
127
|
+
const { user } = useAuth();
|
|
128
|
+
return (_jsx(TeamManager, { isAdmin: user?.role === 'admin', currentUserEmail: user?.email }));
|
|
129
|
+
}
|
|
130
|
+
// ---------------------------------------------------------------------------
|
|
131
|
+
// CMSAdmin — public entry point
|
|
132
|
+
// ---------------------------------------------------------------------------
|
|
133
|
+
/**
|
|
134
|
+
* Drop-in CMS admin component for Next.js catch-all routes.
|
|
135
|
+
*
|
|
136
|
+
* Place in `app/cms/[[...route]]/page.tsx`:
|
|
137
|
+
*
|
|
138
|
+
* ```tsx
|
|
139
|
+
* import { CMSAdmin } from '@airdraft/react-ui'
|
|
140
|
+
*
|
|
141
|
+
* export default async function CmsPage({ params }: { params: Promise<{ route?: string[] }> }) {
|
|
142
|
+
* const { route } = await params
|
|
143
|
+
* return <CMSAdmin segments={route} />
|
|
144
|
+
* }
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
export function CMSAdmin({ segments = [], basePath = '/cms', apiUrl = '/api/cms', auth, brandName = 'Airdraft', brandLogoUrl, }) {
|
|
148
|
+
const resolvedAuth = resolveAuth(auth);
|
|
149
|
+
const isApiKeyMode = resolvedAuth?.type === 'apiKey';
|
|
150
|
+
return (_jsx(AirdraftProvider, { apiUrl: apiUrl, auth: resolvedAuth, children: _jsx(CmsView, { segments: segments, basePath: basePath, apiUrl: apiUrl, brandName: brandName, brandLogoUrl: brandLogoUrl, isApiKeyMode: isApiKeyMode }) }));
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=CMSAdmin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CMSAdmin.js","sourceRoot":"","sources":["../src/CMSAdmin.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaManager.d.ts","sourceRoot":"","sources":["../src/MediaManager.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAa/C,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;CACrC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"MediaManager.d.ts","sourceRoot":"","sources":["../src/MediaManager.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAa/C,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAA;CACrC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CAoGtE"}
|
package/dist/MediaManager.js
CHANGED
|
@@ -4,7 +4,7 @@ import { useState, useCallback } from 'react';
|
|
|
4
4
|
import { useMediaLibrary, useMediaUpload, useMediaDelete } from '@airdraft/react';
|
|
5
5
|
import { Button } from './ui/button.js';
|
|
6
6
|
import Loader from './ui/aevr/loader.js';
|
|
7
|
-
import {
|
|
7
|
+
import { InputGroup, InputGroupAddon, InputGroupText, InputGroupInput } from './ui/input-group.js';
|
|
8
8
|
import { PageHeader } from './components/PageHeader.js';
|
|
9
9
|
import { EmptyState } from './components/EmptyState.js';
|
|
10
10
|
import { MediaCard } from './components/MediaCard.js';
|
|
@@ -54,6 +54,6 @@ export function MediaManager({ className, onSelect }) {
|
|
|
54
54
|
setDeletingKey(null);
|
|
55
55
|
}
|
|
56
56
|
}, [deleteItem, refresh]);
|
|
57
|
-
return (_jsxs("div", { className: cn('space-y-4', className), children: [_jsx(PageHeader, { title: "Media", description: `${items.length} item${items.length === 1 ? '' : 's'}`, actions: _jsx(Button, { size: "sm", onClick: () => setShowUpload((v) => !v), children: showUpload ? (_jsxs(_Fragment, { children: [_jsx(X, { className: "mr-1.5 h-3.5 w-3.5" }), "Cancel"] })) : (_jsx(_Fragment, { children: "Upload" })) }) }), showUpload && (_jsxs("div", { className: "space-y-2", children: [_jsx(UploadZone, { onFiles: handleUpload, uploading: uploading }), uploadError && _jsx(ErrorAlert, { error: uploadError, compact: true })] })), _jsxs(
|
|
57
|
+
return (_jsxs("div", { className: cn('space-y-4', className), children: [_jsx(PageHeader, { title: "Media", description: `${items.length} item${items.length === 1 ? '' : 's'}`, actions: _jsx(Button, { size: "sm", onClick: () => setShowUpload((v) => !v), children: showUpload ? (_jsxs(_Fragment, { children: [_jsx(X, { className: "mr-1.5 h-3.5 w-3.5" }), "Cancel"] })) : (_jsx(_Fragment, { children: "Upload" })) }) }), showUpload && (_jsxs("div", { className: "space-y-2", children: [_jsx(UploadZone, { onFiles: handleUpload, uploading: uploading }), uploadError && _jsx(ErrorAlert, { error: uploadError, compact: true })] })), _jsxs(InputGroup, { children: [_jsx(InputGroupAddon, { align: "inline-start", children: _jsx(InputGroupText, { children: _jsx(Search, {}) }) }), _jsx(InputGroupInput, { value: search, onChange: (e) => setSearch(e.target.value), placeholder: "Search by filename\u2026" })] }), loading ? (_jsx("div", { className: "flex justify-center py-8", children: _jsx(Loader, {}) })) : error ? (_jsx(ErrorAlert, { error: error, title: "Failed to load media", onRetry: refresh })) : items.length === 0 ? (_jsx(EmptyState, { icon: _jsx(Images, { className: "h-10 w-10" }), title: search ? 'No results' : 'No media yet', description: search ? 'Try a different search term.' : 'Upload your first file to get started.', action: !search && (_jsx(Button, { size: "sm", onClick: () => setShowUpload(true), children: "Upload" })) })) : (_jsx("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5", children: items.map((item) => (_jsx(MediaCard, { item: item, onDelete: handleDelete, onSelect: onSelect, deleting: deletingKey === item.key }, item.key))) }))] }));
|
|
58
58
|
}
|
|
59
59
|
//# sourceMappingURL=MediaManager.js.map
|
package/dist/MediaManager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaManager.js","sourceRoot":"","sources":["../src/MediaManager.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAE7C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,MAAM,MAAM,qBAAqB,CAAA;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"MediaManager.js","sourceRoot":"","sources":["../src/MediaManager.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,12 @@ export interface CmsAdminHeaderProps {
|
|
|
6
6
|
name?: string;
|
|
7
7
|
} | null;
|
|
8
8
|
onLogout?: () => void;
|
|
9
|
+
/** Mount point of the CMS admin. Default: "/cms" */
|
|
10
|
+
basePath?: string;
|
|
11
|
+
/** Brand name shown in the header logo. Default: "Airdraft" */
|
|
12
|
+
brandName?: string;
|
|
13
|
+
/** Brand logo image URL. Default: Airdraft favicon */
|
|
14
|
+
brandLogoUrl?: string;
|
|
9
15
|
}
|
|
10
|
-
export declare function CmsAdminHeader({ user, onLogout }: CmsAdminHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare function CmsAdminHeader({ user, onLogout, basePath, brandName, brandLogoUrl, }: CmsAdminHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
11
17
|
//# sourceMappingURL=CmsAdminHeader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CmsAdminHeader.d.ts","sourceRoot":"","sources":["../../src/components/CmsAdminHeader.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CmsAdminHeader.d.ts","sourceRoot":"","sources":["../../src/components/CmsAdminHeader.tsx"],"names":[],"mappings":"AAkGA,MAAM,WAAW,mBAAmB;IAClC;4EACwE;IACxE,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,QAAQ,EACR,QAAiB,EACjB,SAAsB,EACtB,YAAgC,GACjC,EAAE,mBAAmB,2CAgDrB"}
|
|
@@ -7,8 +7,8 @@ import { PageHeader } from "../ui/aevr/page-header.js";
|
|
|
7
7
|
import { NavUser } from "../ui/aevr/nav-user.js";
|
|
8
8
|
import { SearchCommand } from "../ui/aevr/search-command.js";
|
|
9
9
|
import { ActivityIcon, Code2Icon, ImageIcon, LayoutListIcon, SettingsIcon, UsersIcon, } from "lucide-react";
|
|
10
|
+
const AIRDRAFT_LOGO_URL = "https://aevr.online/favicon.ico";
|
|
10
11
|
// ── Segment config for CMS breadcrumbs ───────────────────────────────────────
|
|
11
|
-
// The "cms" segment itself is skipped so breadcrumbs start from the sub-route.
|
|
12
12
|
const CMS_SEGMENT_CONFIG = {
|
|
13
13
|
collections: {
|
|
14
14
|
label: "Content",
|
|
@@ -21,96 +21,73 @@ const CMS_SEGMENT_CONFIG = {
|
|
|
21
21
|
team: { label: "Team", shortLabel: "Team", icon: UsersIcon },
|
|
22
22
|
audit: { label: "Audit Log", shortLabel: "Audit", icon: ActivityIcon },
|
|
23
23
|
};
|
|
24
|
-
// ──
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
{
|
|
85
|
-
href: "/cms/media",
|
|
86
|
-
label: "Media",
|
|
87
|
-
match: (p) => p.startsWith("/cms/media"),
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
href: "/cms/settings/schema",
|
|
91
|
-
label: "Schema",
|
|
92
|
-
match: (p) => p.startsWith("/cms/settings/schema"),
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
href: "/cms/settings/team",
|
|
96
|
-
label: "Team",
|
|
97
|
-
match: (p) => p.startsWith("/cms/settings/team"),
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
href: "/cms/settings/audit",
|
|
101
|
-
label: "Audit",
|
|
102
|
-
match: (p) => p.startsWith("/cms/settings/audit"),
|
|
103
|
-
},
|
|
104
|
-
];
|
|
105
|
-
export function CmsAdminHeader({ user, onLogout }) {
|
|
106
|
-
const pathname = usePathname();
|
|
24
|
+
// ── basePath-aware helpers ────────────────────────────────────────────────────
|
|
25
|
+
function buildSearchGroups(b) {
|
|
26
|
+
return [
|
|
27
|
+
{
|
|
28
|
+
heading: "Navigation",
|
|
29
|
+
entries: [
|
|
30
|
+
{
|
|
31
|
+
title: "Content",
|
|
32
|
+
description: "Manage collection entries",
|
|
33
|
+
href: b,
|
|
34
|
+
icon: LayoutListIcon,
|
|
35
|
+
shortcut: "gc",
|
|
36
|
+
keywords: ["content", "entries", "collections"],
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
title: "Media",
|
|
40
|
+
description: "Upload and browse media files",
|
|
41
|
+
href: `${b}/media`,
|
|
42
|
+
icon: ImageIcon,
|
|
43
|
+
shortcut: "gm",
|
|
44
|
+
keywords: ["media", "images", "files", "uploads"],
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
title: "Schema",
|
|
48
|
+
description: "Edit content schema and fields",
|
|
49
|
+
href: `${b}/settings/schema`,
|
|
50
|
+
icon: Code2Icon,
|
|
51
|
+
shortcut: "gs",
|
|
52
|
+
keywords: ["schema", "fields", "types"],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
title: "Team",
|
|
56
|
+
description: "Manage team members and invites",
|
|
57
|
+
href: `${b}/settings/team`,
|
|
58
|
+
icon: UsersIcon,
|
|
59
|
+
shortcut: "gt",
|
|
60
|
+
keywords: ["team", "users", "members", "invites"],
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
title: "Audit Log",
|
|
64
|
+
description: "View content activity history",
|
|
65
|
+
href: `${b}/settings/audit`,
|
|
66
|
+
icon: ActivityIcon,
|
|
67
|
+
keywords: ["audit", "log", "activity", "history"],
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
];
|
|
72
|
+
}
|
|
73
|
+
function buildKeySequences(b) {
|
|
74
|
+
return {
|
|
75
|
+
gc: b,
|
|
76
|
+
gm: `${b}/media`,
|
|
77
|
+
gs: `${b}/settings/schema`,
|
|
78
|
+
gt: `${b}/settings/team`,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export function CmsAdminHeader({ user, onLogout, basePath = "/cms", brandName = "Airdraft", brandLogoUrl = AIRDRAFT_LOGO_URL, }) {
|
|
82
|
+
usePathname(); // keep subscription for breadcrumb reactivity
|
|
83
|
+
const baseSegment = basePath.replace(/^\//, "").split("/").at(-1) ?? "cms";
|
|
107
84
|
const navUser = user
|
|
108
85
|
? {
|
|
109
86
|
displayName: user.name ?? user.email.split("@")[0],
|
|
110
87
|
email: user.email,
|
|
111
88
|
}
|
|
112
89
|
: null;
|
|
113
|
-
return (_jsx(PageHeader, { segmentConfig: CMS_SEGMENT_CONFIG, skipSegments: [
|
|
90
|
+
return (_jsx(PageHeader, { segmentConfig: CMS_SEGMENT_CONFIG, skipSegments: [baseSegment], logoSlot: _jsxs(Link, { href: basePath, className: "text-sm flex items-center gap-2 font-semibold whitespace-nowrap", children: [_jsx(Image, { src: brandLogoUrl, alt: brandName, width: 24, height: 24, className: "rounded-full" }), brandName] }), searchSlot: _jsx(SearchCommand, { groups: buildSearchGroups(basePath), keySequenceRoutes: buildKeySequences(basePath), triggerLabel: "Search...", storageKey: "cms:search:recent" }), userSlot: navUser && (_jsx(NavUser, { variant: "header", user: navUser, onLogout: onLogout })), options: {
|
|
114
91
|
showBreadcrumbs: true,
|
|
115
92
|
showThemeToggle: true,
|
|
116
93
|
showSearch: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CmsAdminHeader.js","sourceRoot":"","sources":["../../src/components/CmsAdminHeader.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"CmsAdminHeader.js","sourceRoot":"","sources":["../../src/components/CmsAdminHeader.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { SchemaEditor } from './SchemaEditor.js';
|
|
2
2
|
export type { SchemaEditorProps } from './SchemaEditor.js';
|
|
3
|
+
export { CMSAdmin } from './CMSAdmin.js';
|
|
4
|
+
export type { CMSAdminProps } from './CMSAdmin.js';
|
|
3
5
|
export { SchemaEditorRoot, useSchemaEditorContext } from './SchemaEditorRoot.js';
|
|
4
6
|
export type { SchemaEditorRootProps, SchemaEditorLabels } from './SchemaEditorRoot.js';
|
|
5
7
|
export { SchemaEditorSidebar } from './SchemaEditorSidebar.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAG1D,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAChF,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAEtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAGhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAGlE,OAAO,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,GACf,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,cAAc,EACd,OAAO,EACP,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,OAAO,EACP,cAAc,EACd,SAAS,EACT,eAAe,EACf,QAAQ,EACR,aAAa,EACb,mBAAmB,GACpB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAGxD,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAG1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAGlD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAChF,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAEtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAGhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAGlE,OAAO,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,GACf,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,cAAc,EACd,OAAO,EACP,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,cAAc,EACd,OAAO,EACP,cAAc,EACd,SAAS,EACT,eAAe,EACf,QAAQ,EACR,aAAa,EACb,mBAAmB,GACpB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAGxD,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// Schema editor — Tier 3 drop-in
|
|
2
2
|
export { SchemaEditor } from './SchemaEditor.js';
|
|
3
|
+
// CMS Admin — Tier 3 drop-in catch-all
|
|
4
|
+
export { CMSAdmin } from './CMSAdmin.js';
|
|
3
5
|
// Schema editor — Tier 2 composable slots
|
|
4
6
|
export { SchemaEditorRoot, useSchemaEditorContext } from './SchemaEditorRoot.js';
|
|
5
7
|
export { SchemaEditorSidebar } from './SchemaEditorSidebar.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,0CAA0C;AAC1C,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAGhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGpD,2BAA2B;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAGxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAGxD,2BAA2B;AAC3B,OAAO,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,GACf,MAAM,uBAAuB,CAAA;AAqB9B,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,wGAAwG;AACxG,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,uCAAuC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGxC,0CAA0C;AAC1C,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAGhF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGpD,2BAA2B;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAGxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAGpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAGxD,2BAA2B;AAC3B,OAAO,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,SAAS,EACT,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,GACf,MAAM,uBAAuB,CAAA;AAqB9B,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,wGAAwG;AACxG,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mBAAmB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@airdraft/react-ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Airdraft React UI — schema editor and team management components",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -11,7 +11,11 @@
|
|
|
11
11
|
"types": "./dist/index.d.ts"
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
|
-
"files": [
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md",
|
|
17
|
+
"CHANGELOG.md"
|
|
18
|
+
],
|
|
15
19
|
"scripts": {
|
|
16
20
|
"build": "tsc",
|
|
17
21
|
"dev": "tsc --watch",
|