@airdraft/react-ui 0.1.1 → 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 +18 -0
- 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/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 +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
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
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
|
+
|
|
5
23
|
### [0.1.1](https://github.com/aevrHQ/airdraft/compare/react-ui@v0.1.0...react-ui@v0.1.1) (2026-05-22)
|
|
6
24
|
|
|
7
25
|
|
|
@@ -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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"}
|
|
@@ -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":"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;AAE7D,OAAO,EACL,YAAY,EACZ,SAAS,EACT,SAAS,EACT,cAAc,EACd,YAAY,EACZ,SAAS,GACV,MAAM,cAAc,CAAC;AAEtB,MAAM,iBAAiB,GAAG,iCAAiC,CAAC;AAE5D,gFAAgF;AAEhF,MAAM,kBAAkB,GAAG;IACzB,WAAW,EAAE;QACX,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE,SAAS;QACrB,IAAI,EAAE,cAAc;KACrB;IACD,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;IAC/D,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE;IAC3E,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;IAClE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;IAC5D,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE;CACvE,CAAC;AAEF,iFAAiF;AAEjF,SAAS,iBAAiB,CAAC,CAAS;IAClC,OAAO;QACL;YACE,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE;gBACP;oBACE,KAAK,EAAE,SAAS;oBAChB,WAAW,EAAE,2BAA2B;oBACxC,IAAI,EAAE,CAAC;oBACP,IAAI,EAAE,cAAc;oBACpB,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC;iBAChD;gBACD;oBACE,KAAK,EAAE,OAAO;oBACd,WAAW,EAAE,+BAA+B;oBAC5C,IAAI,EAAE,GAAG,CAAC,QAAQ;oBAClB,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;iBAClD;gBACD;oBACE,KAAK,EAAE,QAAQ;oBACf,WAAW,EAAE,gCAAgC;oBAC7C,IAAI,EAAE,GAAG,CAAC,kBAAkB;oBAC5B,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;iBACxC;gBACD;oBACE,KAAK,EAAE,MAAM;oBACb,WAAW,EAAE,iCAAiC;oBAC9C,IAAI,EAAE,GAAG,CAAC,gBAAgB;oBAC1B,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC;iBAClD;gBACD;oBACE,KAAK,EAAE,WAAW;oBAClB,WAAW,EAAE,+BAA+B;oBAC5C,IAAI,EAAE,GAAG,CAAC,iBAAiB;oBAC3B,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC;iBAClD;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAS;IAClC,OAAO;QACL,EAAE,EAAE,CAAC;QACL,EAAE,EAAE,GAAG,CAAC,QAAQ;QAChB,EAAE,EAAE,GAAG,CAAC,kBAAkB;QAC1B,EAAE,EAAE,GAAG,CAAC,gBAAgB;KACzB,CAAC;AACJ,CAAC;AAiBD,MAAM,UAAU,cAAc,CAAC,EAC7B,IAAI,EACJ,QAAQ,EACR,QAAQ,GAAG,MAAM,EACjB,SAAS,GAAG,UAAU,EACtB,YAAY,GAAG,iBAAiB,GACZ;IACpB,WAAW,EAAE,CAAC,CAAC,8CAA8C;IAE7D,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IAE3E,MAAM,OAAO,GAAuB,IAAI;QACtC,CAAC,CAAC;YACE,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClD,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB;QACH,CAAC,CAAC,IAAI,CAAC;IAET,OAAO,CACL,KAAC,UAAU,IACT,aAAa,EAAE,kBAAkB,EACjC,YAAY,EAAE,CAAC,WAAW,CAAC,EAC3B,QAAQ,EACN,MAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAC,iEAAiE,aAC/F,KAAC,KAAK,IACJ,GAAG,EAAE,YAAY,EACjB,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,SAAS,EAAC,cAAc,GACxB,EACD,SAAS,IACL,EAET,UAAU,EACR,KAAC,aAAa,IACZ,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EACnC,iBAAiB,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAC9C,YAAY,EAAC,WAAW,EACxB,UAAU,EAAC,mBAAmB,GAC9B,EAEJ,QAAQ,EACN,OAAO,IAAI,CACT,KAAC,OAAO,IAAC,OAAO,EAAC,QAAQ,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAChE,EAEH,OAAO,EAAE;YACP,eAAe,EAAE,IAAI;YACrB,eAAe,EAAE,IAAI;YACrB,UAAU,EAAE,IAAI;SACjB,GACW,CACf,CAAC;AACJ,CAAC"}
|
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"}
|