gw-admin 0.1.0
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 +22 -0
- package/LICENSE +21 -0
- package/README.md +569 -0
- package/dist/account/admin-logout-button.d.ts +21 -0
- package/dist/account/admin-logout-button.d.ts.map +1 -0
- package/dist/account/admin-logout-button.js +57 -0
- package/dist/account/admin-logout-button.js.map +1 -0
- package/dist/account/index.d.ts +2 -0
- package/dist/account/index.d.ts.map +1 -0
- package/dist/account/index.js +3 -0
- package/dist/account/index.js.map +1 -0
- package/dist/attachments/admin-attachment-list.d.ts +12 -0
- package/dist/attachments/admin-attachment-list.d.ts.map +1 -0
- package/dist/attachments/admin-attachment-list.js +11 -0
- package/dist/attachments/admin-attachment-list.js.map +1 -0
- package/dist/attachments/admin-file-attachments.d.ts +33 -0
- package/dist/attachments/admin-file-attachments.d.ts.map +1 -0
- package/dist/attachments/admin-file-attachments.js +94 -0
- package/dist/attachments/admin-file-attachments.js.map +1 -0
- package/dist/attachments/index.d.ts +4 -0
- package/dist/attachments/index.d.ts.map +1 -0
- package/dist/attachments/index.js +3 -0
- package/dist/attachments/index.js.map +1 -0
- package/dist/attachments/types.d.ts +12 -0
- package/dist/attachments/types.d.ts.map +1 -0
- package/dist/attachments/types.js +2 -0
- package/dist/attachments/types.js.map +1 -0
- package/dist/crud/form/admin-crud-form.d.ts +41 -0
- package/dist/crud/form/admin-crud-form.d.ts.map +1 -0
- package/dist/crud/form/admin-crud-form.js +56 -0
- package/dist/crud/form/admin-crud-form.js.map +1 -0
- package/dist/crud/form/form-state.d.ts +12 -0
- package/dist/crud/form/form-state.d.ts.map +1 -0
- package/dist/crud/form/form-state.js +48 -0
- package/dist/crud/form/form-state.js.map +1 -0
- package/dist/crud/form/index.d.ts +3 -0
- package/dist/crud/form/index.d.ts.map +1 -0
- package/dist/crud/form/index.js +3 -0
- package/dist/crud/form/index.js.map +1 -0
- package/dist/crud/index.d.ts +3 -0
- package/dist/crud/index.d.ts.map +1 -0
- package/dist/crud/index.js +3 -0
- package/dist/crud/index.js.map +1 -0
- package/dist/crud/pages/admin-crud-detail-page.d.ts +33 -0
- package/dist/crud/pages/admin-crud-detail-page.d.ts.map +1 -0
- package/dist/crud/pages/admin-crud-detail-page.js +39 -0
- package/dist/crud/pages/admin-crud-detail-page.js.map +1 -0
- package/dist/crud/pages/admin-crud-form-pages.d.ts +27 -0
- package/dist/crud/pages/admin-crud-form-pages.d.ts.map +1 -0
- package/dist/crud/pages/admin-crud-form-pages.js +44 -0
- package/dist/crud/pages/admin-crud-form-pages.js.map +1 -0
- package/dist/crud/pages/admin-crud-list-page.d.ts +27 -0
- package/dist/crud/pages/admin-crud-list-page.d.ts.map +1 -0
- package/dist/crud/pages/admin-crud-list-page.js +33 -0
- package/dist/crud/pages/admin-crud-list-page.js.map +1 -0
- package/dist/crud/pages/admin-delete-form.d.ts +12 -0
- package/dist/crud/pages/admin-delete-form.d.ts.map +1 -0
- package/dist/crud/pages/admin-delete-form.js +15 -0
- package/dist/crud/pages/admin-delete-form.js.map +1 -0
- package/dist/crud/pages/format-admin-value.d.ts +5 -0
- package/dist/crud/pages/format-admin-value.d.ts.map +1 -0
- package/dist/crud/pages/format-admin-value.js +38 -0
- package/dist/crud/pages/format-admin-value.js.map +1 -0
- package/dist/crud/pages/index.d.ts +6 -0
- package/dist/crud/pages/index.d.ts.map +1 -0
- package/dist/crud/pages/index.js +6 -0
- package/dist/crud/pages/index.js.map +1 -0
- package/dist/crud/preset/client.d.ts +2 -0
- package/dist/crud/preset/client.d.ts.map +1 -0
- package/dist/crud/preset/client.js +3 -0
- package/dist/crud/preset/client.js.map +1 -0
- package/dist/crud/preset/create-admin-crud-form.d.ts +41 -0
- package/dist/crud/preset/create-admin-crud-form.d.ts.map +1 -0
- package/dist/crud/preset/create-admin-crud-form.js +68 -0
- package/dist/crud/preset/create-admin-crud-form.js.map +1 -0
- package/dist/crud/preset/create-admin-crud-pages.d.ts +29 -0
- package/dist/crud/preset/create-admin-crud-pages.d.ts.map +1 -0
- package/dist/crud/preset/create-admin-crud-pages.js +46 -0
- package/dist/crud/preset/create-admin-crud-pages.js.map +1 -0
- package/dist/crud/preset/create-admin-crud-route-page.d.ts +18 -0
- package/dist/crud/preset/create-admin-crud-route-page.d.ts.map +1 -0
- package/dist/crud/preset/create-admin-crud-route-page.js +26 -0
- package/dist/crud/preset/create-admin-crud-route-page.js.map +1 -0
- package/dist/crud/preset/index.d.ts +3 -0
- package/dist/crud/preset/index.d.ts.map +1 -0
- package/dist/crud/preset/index.js +3 -0
- package/dist/crud/preset/index.js.map +1 -0
- package/dist/header/admin-page-header.d.ts +15 -0
- package/dist/header/admin-page-header.d.ts.map +1 -0
- package/dist/header/admin-page-header.js +10 -0
- package/dist/header/admin-page-header.js.map +1 -0
- package/dist/header/index.d.ts +2 -0
- package/dist/header/index.d.ts.map +1 -0
- package/dist/header/index.js +2 -0
- package/dist/header/index.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/class-names.d.ts +5 -0
- package/dist/internal/class-names.d.ts.map +1 -0
- package/dist/internal/class-names.js +7 -0
- package/dist/internal/class-names.js.map +1 -0
- package/dist/layout/admin-layout.d.ts +16 -0
- package/dist/layout/admin-layout.d.ts.map +1 -0
- package/dist/layout/admin-layout.js +17 -0
- package/dist/layout/admin-layout.js.map +1 -0
- package/dist/layout/admin-shell.d.ts +12 -0
- package/dist/layout/admin-shell.d.ts.map +1 -0
- package/dist/layout/admin-shell.js +10 -0
- package/dist/layout/admin-shell.js.map +1 -0
- package/dist/layout/admin-sidebar.d.ts +11 -0
- package/dist/layout/admin-sidebar.d.ts.map +1 -0
- package/dist/layout/admin-sidebar.js +10 -0
- package/dist/layout/admin-sidebar.js.map +1 -0
- package/dist/layout/index.d.ts +4 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +4 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/layout/mobile.d.ts +15 -0
- package/dist/layout/mobile.d.ts.map +1 -0
- package/dist/layout/mobile.js +32 -0
- package/dist/layout/mobile.js.map +1 -0
- package/dist/navigation/admin-navigation.d.ts +21 -0
- package/dist/navigation/admin-navigation.d.ts.map +1 -0
- package/dist/navigation/admin-navigation.js +22 -0
- package/dist/navigation/admin-navigation.js.map +1 -0
- package/dist/navigation/index.d.ts +2 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/index.js +2 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/pages/admin-account-page.d.ts +13 -0
- package/dist/pages/admin-account-page.d.ts.map +1 -0
- package/dist/pages/admin-account-page.js +11 -0
- package/dist/pages/admin-account-page.js.map +1 -0
- package/dist/pages/admin-dashboard-page.d.ts +15 -0
- package/dist/pages/admin-dashboard-page.d.ts.map +1 -0
- package/dist/pages/admin-dashboard-page.js +8 -0
- package/dist/pages/admin-dashboard-page.js.map +1 -0
- package/dist/pages/index.d.ts +3 -0
- package/dist/pages/index.d.ts.map +1 -0
- package/dist/pages/index.js +3 -0
- package/dist/pages/index.js.map +1 -0
- package/dist/rich-text/admin-rich-text-editor.d.ts +27 -0
- package/dist/rich-text/admin-rich-text-editor.d.ts.map +1 -0
- package/dist/rich-text/admin-rich-text-editor.js +102 -0
- package/dist/rich-text/admin-rich-text-editor.js.map +1 -0
- package/dist/rich-text/admin-rich-text-file.d.ts +24 -0
- package/dist/rich-text/admin-rich-text-file.d.ts.map +1 -0
- package/dist/rich-text/admin-rich-text-file.js +80 -0
- package/dist/rich-text/admin-rich-text-file.js.map +1 -0
- package/dist/rich-text/admin-rich-text-view.d.ts +9 -0
- package/dist/rich-text/admin-rich-text-view.d.ts.map +1 -0
- package/dist/rich-text/admin-rich-text-view.js +9 -0
- package/dist/rich-text/admin-rich-text-view.js.map +1 -0
- package/dist/rich-text/index.d.ts +5 -0
- package/dist/rich-text/index.d.ts.map +1 -0
- package/dist/rich-text/index.js +5 -0
- package/dist/rich-text/index.js.map +1 -0
- package/dist/rich-text/plain-text.d.ts +9 -0
- package/dist/rich-text/plain-text.d.ts.map +1 -0
- package/dist/rich-text/plain-text.js +24 -0
- package/dist/rich-text/plain-text.js.map +1 -0
- package/package.json +163 -0
- package/rich-text.css +1 -0
- package/styles.css +901 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/header/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/header/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAGhB,MAAM,wBAAwB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { AdminLayout, type AdminLayoutProps } from "./layout/admin-layout.js";
|
|
2
|
+
export { AdminShell, type AdminShellProps } from "./layout/admin-shell.js";
|
|
3
|
+
export { AdminSidebar, type AdminSidebarProps } from "./layout/admin-sidebar.js";
|
|
4
|
+
export { AdminNavigation, type AdminNavigationItem, type AdminNavigationProps, } from "./navigation/admin-navigation.js";
|
|
5
|
+
export { AdminPageHeader, type AdminBreadcrumb, type AdminPageHeaderProps, } from "./header/admin-page-header.js";
|
|
6
|
+
export { AdminAccountPage, AdminDashboardPage, type AdminAccountPageProps, type AdminDashboardItem, type AdminDashboardPageProps, } from "./pages/index.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EACL,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,GAC7B,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { AdminLayout } from "./layout/admin-layout.js";
|
|
2
|
+
export { AdminShell } from "./layout/admin-shell.js";
|
|
3
|
+
export { AdminSidebar } from "./layout/admin-sidebar.js";
|
|
4
|
+
export { AdminNavigation, } from "./navigation/admin-navigation.js";
|
|
5
|
+
export { AdminPageHeader, } from "./header/admin-page-header.js";
|
|
6
|
+
export { AdminAccountPage, AdminDashboardPage, } from "./pages/index.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAyB,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAwB,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAA0B,MAAM,2BAA2B,CAAC;AACjF,OAAO,EACL,eAAe,GAGhB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,eAAe,GAGhB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,gBAAgB,EAChB,kBAAkB,GAInB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"class-names.d.ts","sourceRoot":"","sources":["../../src/internal/class-names.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,UAE7E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"class-names.js","sourceRoot":"","sources":["../../src/internal/class-names.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAG,MAAgD;IAC5E,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import { type AdminNavigationItem } from "../navigation/admin-navigation.js";
|
|
3
|
+
import { type AdminShellProps } from "./admin-shell.js";
|
|
4
|
+
export type AdminLayoutProps = Omit<AdminShellProps, "sidebar" | "mobileHeader"> & {
|
|
5
|
+
brand: ReactNode;
|
|
6
|
+
navigation: readonly AdminNavigationItem[];
|
|
7
|
+
homeHref?: string;
|
|
8
|
+
sidebar?: ReactNode | false;
|
|
9
|
+
mobileHeader?: ReactNode | false;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Provides the complete default responsive admin frame from only a brand and
|
|
13
|
+
* navigation. Either navigation surface remains replaceable or removable.
|
|
14
|
+
*/
|
|
15
|
+
export declare function AdminLayout({ brand, navigation, homeHref, sidebar, mobileHeader, ...props }: AdminLayoutProps): import("react").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=admin-layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-layout.d.ts","sourceRoot":"","sources":["../../src/layout/admin-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAmB,KAAK,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC9F,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAIpE,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,cAAc,CAAC,GAAG;IACjF,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAC5B,YAAY,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;CAClC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,UAAU,EACV,QAAmB,EACnB,OAAO,EACP,YAAY,EACZ,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAqBlB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { AdminNavigation } from "../navigation/admin-navigation.js";
|
|
3
|
+
import { AdminShell } from "./admin-shell.js";
|
|
4
|
+
import { AdminSidebar } from "./admin-sidebar.js";
|
|
5
|
+
import { AdminMobileHeader } from "./mobile.js";
|
|
6
|
+
/**
|
|
7
|
+
* Provides the complete default responsive admin frame from only a brand and
|
|
8
|
+
* navigation. Either navigation surface remains replaceable or removable.
|
|
9
|
+
*/
|
|
10
|
+
export function AdminLayout({ brand, navigation, homeHref = "/admin", sidebar, mobileHeader, ...props }) {
|
|
11
|
+
const resolvedSidebar = sidebar === false ? undefined :
|
|
12
|
+
sidebar ?? (_jsx(AdminSidebar, { brand: brand, homeHref: homeHref, children: _jsx(AdminNavigation, { items: navigation }) }));
|
|
13
|
+
const resolvedMobileHeader = mobileHeader === false ? undefined :
|
|
14
|
+
mobileHeader ?? (_jsx(AdminMobileHeader, { brand: brand, navigation: navigation, homeHref: homeHref }));
|
|
15
|
+
return (_jsx(AdminShell, { ...props, ...(resolvedSidebar !== undefined ? { sidebar: resolvedSidebar } : {}), ...(resolvedMobileHeader !== undefined ? { mobileHeader: resolvedMobileHeader } : {}) }));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=admin-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-layout.js","sourceRoot":"","sources":["../../src/layout/admin-layout.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAA4B,MAAM,mCAAmC,CAAC;AAC9F,OAAO,EAAE,UAAU,EAAwB,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAUhD;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,UAAU,EACV,QAAQ,GAAG,QAAQ,EACnB,OAAO,EACP,YAAY,EACZ,GAAG,KAAK,EACS;IACjB,MAAM,eAAe,GACnB,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/B,OAAO,IAAI,CACT,KAAC,YAAY,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,YAC5C,KAAC,eAAe,IAAC,KAAK,EAAE,UAAU,GAAI,GACzB,CAChB,CAAC;IACJ,MAAM,oBAAoB,GACxB,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACpC,YAAY,IAAI,CACd,KAAC,iBAAiB,IAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAChF,CAAC;IAEJ,OAAO,CACL,KAAC,UAAU,OACL,KAAK,KACL,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACnE,CAAC,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GACtF,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
export type AdminShellProps = HTMLAttributes<HTMLDivElement> & {
|
|
3
|
+
sidebar?: ReactNode;
|
|
4
|
+
mobileHeader?: ReactNode;
|
|
5
|
+
contentClassName?: string;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Provides only the admin page frame. Sidebar and mobile header are slots so
|
|
9
|
+
* consumers can use the defaults, replace either one, or opt out completely.
|
|
10
|
+
*/
|
|
11
|
+
export declare function AdminShell({ sidebar, mobileHeader, contentClassName, className, children, ...props }: AdminShellProps): import("react").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=admin-shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-shell.d.ts","sourceRoot":"","sources":["../../src/layout/admin-shell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvD,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IAC7D,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,+BAUjB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { classNames } from "../internal/class-names.js";
|
|
3
|
+
/**
|
|
4
|
+
* Provides only the admin page frame. Sidebar and mobile header are slots so
|
|
5
|
+
* consumers can use the defaults, replace either one, or opt out completely.
|
|
6
|
+
*/
|
|
7
|
+
export function AdminShell({ sidebar, mobileHeader, contentClassName, className, children, ...props }) {
|
|
8
|
+
return (_jsxs("div", { className: classNames("gw-admin-shell", className), ...props, children: [mobileHeader, _jsxs("div", { className: "gw-admin-shell__body", children: [sidebar, _jsx("div", { className: classNames("gw-admin-shell__content", contentClassName), children: children })] })] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=admin-shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-shell.js","sourceRoot":"","sources":["../../src/layout/admin-shell.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAQxD;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACQ;IAChB,OAAO,CACL,eAAK,SAAS,EAAE,UAAU,CAAC,gBAAgB,EAAE,SAAS,CAAC,KAAM,KAAK,aAC/D,YAAY,EACb,eAAK,SAAS,EAAC,sBAAsB,aAClC,OAAO,EACR,cAAK,SAAS,EAAE,UAAU,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,YAAG,QAAQ,GAAO,IACrF,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
export type AdminSidebarProps = HTMLAttributes<HTMLElement> & {
|
|
3
|
+
brand: ReactNode;
|
|
4
|
+
homeHref?: string;
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Renders a desktop sidebar without owning brand assets or navigation data.
|
|
9
|
+
*/
|
|
10
|
+
export declare function AdminSidebar({ brand, homeHref, className, children, ...props }: AdminSidebarProps): import("react").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=admin-sidebar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-sidebar.d.ts","sourceRoot":"","sources":["../../src/layout/admin-sidebar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvD,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG;IAC5D,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAmB,EACnB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,iBAAiB,+BASnB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import Link from "next/link";
|
|
3
|
+
import { classNames } from "../internal/class-names.js";
|
|
4
|
+
/**
|
|
5
|
+
* Renders a desktop sidebar without owning brand assets or navigation data.
|
|
6
|
+
*/
|
|
7
|
+
export function AdminSidebar({ brand, homeHref = "/admin", className, children, ...props }) {
|
|
8
|
+
return (_jsxs("aside", { className: classNames("gw-admin-sidebar", className), ...props, children: [_jsx(Link, { href: homeHref, className: "gw-admin-sidebar__brand", "aria-label": "\uAD00\uB9AC\uC790 \uD648", children: brand }), _jsx("div", { className: "gw-admin-sidebar__navigation", children: children })] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=admin-sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-sidebar.js","sourceRoot":"","sources":["../../src/layout/admin-sidebar.tsx"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAQxD;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,GAAG,QAAQ,EACnB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACU;IAClB,OAAO,CACL,iBAAO,SAAS,EAAE,UAAU,CAAC,kBAAkB,EAAE,SAAS,CAAC,KAAM,KAAK,aACpE,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAC,yBAAyB,gBAAY,2BAAO,YACzE,KAAK,GACD,EACP,cAAK,SAAS,EAAC,8BAA8B,YAAE,QAAQ,GAAO,IACxD,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAyB,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAwB,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,YAAY,EAA0B,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type AdminNavigationItem } from "../navigation/admin-navigation.js";
|
|
3
|
+
export type AdminMobileHeaderProps = {
|
|
4
|
+
brand: ReactNode;
|
|
5
|
+
navigation: readonly AdminNavigationItem[];
|
|
6
|
+
homeHref?: string;
|
|
7
|
+
menuLabel?: string;
|
|
8
|
+
closeLabel?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Renders the optional mobile app bar and navigation drawer.
|
|
13
|
+
*/
|
|
14
|
+
export declare function AdminMobileHeader({ brand, navigation, homeHref, menuLabel, closeLabel, className, }: AdminMobileHeaderProps): import("react").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=mobile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobile.d.ts","sourceRoot":"","sources":["../../src/layout/mobile.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5D,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,mCAAmC,CAAC;AAG3C,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,UAAU,EACV,QAAmB,EACnB,SAAuB,EACvB,UAAwB,EACxB,SAAS,GACV,EAAE,sBAAsB,+BAkExB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import Link from "next/link";
|
|
4
|
+
import { useEffect, useState } from "react";
|
|
5
|
+
import { MdClose, MdMenu } from "react-icons/md";
|
|
6
|
+
import { AdminNavigation, } from "../navigation/admin-navigation.js";
|
|
7
|
+
import { classNames } from "../internal/class-names.js";
|
|
8
|
+
/**
|
|
9
|
+
* Renders the optional mobile app bar and navigation drawer.
|
|
10
|
+
*/
|
|
11
|
+
export function AdminMobileHeader({ brand, navigation, homeHref = "/admin", menuLabel = "관리자 메뉴 열기", closeLabel = "관리자 메뉴 닫기", className, }) {
|
|
12
|
+
const [open, setOpen] = useState(false);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
if (!open) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const previousOverflow = document.body.style.overflow;
|
|
18
|
+
const closeOnEscape = (event) => {
|
|
19
|
+
if (event.key === "Escape") {
|
|
20
|
+
setOpen(false);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
document.body.style.overflow = "hidden";
|
|
24
|
+
window.addEventListener("keydown", closeOnEscape);
|
|
25
|
+
return () => {
|
|
26
|
+
document.body.style.overflow = previousOverflow;
|
|
27
|
+
window.removeEventListener("keydown", closeOnEscape);
|
|
28
|
+
};
|
|
29
|
+
}, [open]);
|
|
30
|
+
return (_jsxs("header", { className: classNames("gw-admin-mobile-header", className), children: [_jsx(Link, { href: homeHref, className: "gw-admin-mobile-header__brand", "aria-label": "\uAD00\uB9AC\uC790 \uD648", children: brand }), _jsx("button", { type: "button", "aria-label": menuLabel, "aria-expanded": open, "aria-controls": "gw-admin-mobile-drawer", className: "gw-admin-icon-button", onClick: () => setOpen(true), children: _jsx(MdMenu, { "aria-hidden": "true" }) }), _jsx("div", { "aria-hidden": !open, className: classNames("gw-admin-drawer-backdrop", open && "is-open"), onClick: () => setOpen(false) }), _jsxs("div", { id: "gw-admin-mobile-drawer", role: "dialog", "aria-modal": "true", "aria-label": "\uAD00\uB9AC\uC790 \uBA54\uB274", className: classNames("gw-admin-drawer", open && "is-open"), children: [_jsx("div", { className: "gw-admin-drawer__header", children: _jsx("button", { type: "button", "aria-label": closeLabel, className: "gw-admin-icon-button", onClick: () => setOpen(false), children: _jsx(MdClose, { "aria-hidden": "true" }) }) }), _jsx(AdminNavigation, { items: navigation, onNavigate: () => setOpen(false) })] })] }));
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=mobile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobile.js","sourceRoot":"","sources":["../../src/layout/mobile.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EACL,eAAe,GAEhB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAWxD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAChC,KAAK,EACL,UAAU,EACV,QAAQ,GAAG,QAAQ,EACnB,SAAS,GAAG,WAAW,EACvB,UAAU,GAAG,WAAW,EACxB,SAAS,GACc;IACvB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACtD,MAAM,aAAa,GAAG,CAAC,KAAoB,EAAE,EAAE;YAC7C,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC;QAEF,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAElD,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,gBAAgB,CAAC;YAChD,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACvD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,CACL,kBAAQ,SAAS,EAAE,UAAU,CAAC,wBAAwB,EAAE,SAAS,CAAC,aAChE,KAAC,IAAI,IAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAC,+BAA+B,gBAAY,2BAAO,YAC/E,KAAK,GACD,EACP,iBACE,IAAI,EAAC,QAAQ,gBACD,SAAS,mBACN,IAAI,mBACL,wBAAwB,EACtC,SAAS,EAAC,sBAAsB,EAChC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,YAE5B,KAAC,MAAM,mBAAa,MAAM,GAAG,GACtB,EAET,6BACe,CAAC,IAAI,EAClB,SAAS,EAAE,UAAU,CAAC,0BAA0B,EAAE,IAAI,IAAI,SAAS,CAAC,EACpE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAC7B,EACF,eACE,EAAE,EAAC,wBAAwB,EAC3B,IAAI,EAAC,QAAQ,gBACF,MAAM,gBACN,iCAAQ,EACnB,SAAS,EAAE,UAAU,CAAC,iBAAiB,EAAE,IAAI,IAAI,SAAS,CAAC,aAE3D,cAAK,SAAS,EAAC,yBAAyB,YACtC,iBACE,IAAI,EAAC,QAAQ,gBACD,UAAU,EACtB,SAAS,EAAC,sBAAsB,EAChC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,YAE7B,KAAC,OAAO,mBAAa,MAAM,GAAG,GACvB,GACL,EACN,KAAC,eAAe,IAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAI,IACpE,IACC,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export type AdminNavigationItem = {
|
|
3
|
+
label: string;
|
|
4
|
+
href: string;
|
|
5
|
+
suffix?: ReactNode;
|
|
6
|
+
};
|
|
7
|
+
export type AdminNavigationProps = {
|
|
8
|
+
items: readonly AdminNavigationItem[];
|
|
9
|
+
ariaLabel?: string;
|
|
10
|
+
currentPath?: string;
|
|
11
|
+
onNavigate?: () => void;
|
|
12
|
+
className?: string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Renders application-owned admin navigation items.
|
|
16
|
+
*
|
|
17
|
+
* Pass `currentPath` only when active-item styling is required. Omitting it
|
|
18
|
+
* keeps this component usable as a Server Component.
|
|
19
|
+
*/
|
|
20
|
+
export declare function AdminNavigation({ items, ariaLabel, currentPath, onNavigate, className, }: AdminNavigationProps): import("react").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=admin-navigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-navigation.d.ts","sourceRoot":"","sources":["../../src/navigation/admin-navigation.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAUF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,SAAoB,EACpB,WAAW,EACX,UAAU,EACV,SAAS,GACV,EAAE,oBAAoB,+BAwBtB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import Link from "next/link";
|
|
3
|
+
import { classNames } from "../internal/class-names.js";
|
|
4
|
+
function isCurrentPath(currentPath, href) {
|
|
5
|
+
if (!currentPath) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
return currentPath === href || (href !== "/" && currentPath.startsWith(`${href}/`));
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Renders application-owned admin navigation items.
|
|
12
|
+
*
|
|
13
|
+
* Pass `currentPath` only when active-item styling is required. Omitting it
|
|
14
|
+
* keeps this component usable as a Server Component.
|
|
15
|
+
*/
|
|
16
|
+
export function AdminNavigation({ items, ariaLabel = "관리자 메뉴", currentPath, onNavigate, className, }) {
|
|
17
|
+
return (_jsx("nav", { "aria-label": ariaLabel, className: classNames("gw-admin-navigation", className), children: _jsx("ul", { className: "gw-admin-navigation__list", children: items.map((item) => {
|
|
18
|
+
const current = isCurrentPath(currentPath, item.href);
|
|
19
|
+
return (_jsx("li", { className: "gw-admin-navigation__item", children: _jsxs(Link, { href: item.href, ...(current ? { "aria-current": "page" } : {}), ...(onNavigate ? { onClick: onNavigate } : {}), className: classNames("gw-admin-navigation__link", current && "is-current"), children: [_jsx("span", { children: item.label }), item.suffix] }) }, item.href));
|
|
20
|
+
}) }) }));
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=admin-navigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-navigation.js","sourceRoot":"","sources":["../../src/navigation/admin-navigation.tsx"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAgBxD,SAAS,aAAa,CAAC,WAA+B,EAAE,IAAY;IAClE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,WAAW,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;AACtF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,SAAS,GAAG,QAAQ,EACpB,WAAW,EACX,UAAU,EACV,SAAS,GACY;IACrB,OAAO,CACL,4BAAiB,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,qBAAqB,EAAE,SAAS,CAAC,YACjF,aAAI,SAAS,EAAC,2BAA2B,YACtC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAClB,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEtD,OAAO,CACL,aAAoB,SAAS,EAAC,2BAA2B,YACvD,MAAC,IAAI,IACH,IAAI,EAAE,IAAI,CAAC,IAAI,KACX,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACpD,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC/C,SAAS,EAAE,UAAU,CAAC,2BAA2B,EAAE,OAAO,IAAI,YAAY,CAAC,aAE3E,yBAAO,IAAI,CAAC,KAAK,GAAQ,EACxB,IAAI,CAAC,MAAM,IACP,IATA,IAAI,CAAC,IAAI,CAUb,CACN,CAAC;YACJ,CAAC,CAAC,GACC,GACD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/navigation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/navigation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAGhB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import { type AdminLogoutButtonProps } from "../account/admin-logout-button.js";
|
|
3
|
+
import { type AdminBreadcrumb } from "../header/admin-page-header.js";
|
|
4
|
+
export type AdminAccountPageProps = {
|
|
5
|
+
title?: ReactNode;
|
|
6
|
+
breadcrumbs?: readonly AdminBreadcrumb[];
|
|
7
|
+
heading?: ReactNode;
|
|
8
|
+
description?: ReactNode;
|
|
9
|
+
logout?: AdminLogoutButtonProps;
|
|
10
|
+
};
|
|
11
|
+
/** Renders the default account page while keeping the logout flow configurable. */
|
|
12
|
+
export declare function AdminAccountPage({ title, breadcrumbs, heading, description, logout, }: AdminAccountPageProps): import("react").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=admin-account-page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-account-page.d.ts","sourceRoot":"","sources":["../../src/pages/admin-account-page.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEvF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACzC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,sBAAsB,CAAC;CACjC,CAAC;AAEF,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,EAC/B,KAAY,EACZ,WAGC,EACD,OAAgB,EAChB,WAAiC,EACjC,MAAM,GACP,EAAE,qBAAqB,+BAWvB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { AdminLogoutButton, } from "../account/admin-logout-button.js";
|
|
3
|
+
import { AdminPageHeader } from "../header/admin-page-header.js";
|
|
4
|
+
/** Renders the default account page while keeping the logout flow configurable. */
|
|
5
|
+
export function AdminAccountPage({ title = "계정", breadcrumbs = [
|
|
6
|
+
{ label: "관리자", href: "/admin" },
|
|
7
|
+
{ label: "계정" },
|
|
8
|
+
], heading = "로그아웃", description = "현재 관리자 세션을 종료합니다.", logout, }) {
|
|
9
|
+
return (_jsxs("main", { className: "gw-admin-page gw-admin-account-page", children: [_jsx(AdminPageHeader, { title: title, breadcrumbs: breadcrumbs }), _jsxs("section", { className: "gw-admin-account-page__section", children: [_jsx("h2", { children: heading }), _jsx("p", { children: description }), _jsx(AdminLogoutButton, { ...logout })] })] }));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=admin-account-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-account-page.js","sourceRoot":"","sources":["../../src/pages/admin-account-page.tsx"],"names":[],"mappings":";AACA,OAAO,EACL,iBAAiB,GAElB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAwB,MAAM,gCAAgC,CAAC;AAUvF,mFAAmF;AACnF,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,GAAG,IAAI,EACZ,WAAW,GAAG;IACZ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChC,EAAE,KAAK,EAAE,IAAI,EAAE;CAChB,EACD,OAAO,GAAG,MAAM,EAChB,WAAW,GAAG,mBAAmB,EACjC,MAAM,GACgB;IACtB,OAAO,CACL,gBAAM,SAAS,EAAC,qCAAqC,aACnD,KAAC,eAAe,IAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,GAAI,EAC3D,mBAAS,SAAS,EAAC,gCAAgC,aACjD,uBAAK,OAAO,GAAM,EAClB,sBAAI,WAAW,GAAK,EACpB,KAAC,iBAAiB,OAAK,MAAM,GAAI,IACzB,IACL,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import { type AdminBreadcrumb } from "../header/admin-page-header.js";
|
|
3
|
+
export type AdminDashboardItem = {
|
|
4
|
+
label: ReactNode;
|
|
5
|
+
href: string;
|
|
6
|
+
description?: ReactNode;
|
|
7
|
+
};
|
|
8
|
+
export type AdminDashboardPageProps = {
|
|
9
|
+
title?: ReactNode;
|
|
10
|
+
breadcrumbs?: readonly AdminBreadcrumb[];
|
|
11
|
+
items: readonly AdminDashboardItem[];
|
|
12
|
+
};
|
|
13
|
+
/** Renders the conventional admin landing page from application-owned links. */
|
|
14
|
+
export declare function AdminDashboardPage({ title, breadcrumbs, items, }: AdminDashboardPageProps): import("react").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=admin-dashboard-page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-dashboard-page.d.ts","sourceRoot":"","sources":["../../src/pages/admin-dashboard-page.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEvF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,SAAS,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACzC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACtC,CAAC;AAEF,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,EACjC,KAAqB,EACrB,WAAW,EACX,KAAK,GACN,EAAE,uBAAuB,+BAczB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import Link from "next/link";
|
|
3
|
+
import { AdminPageHeader } from "../header/admin-page-header.js";
|
|
4
|
+
/** Renders the conventional admin landing page from application-owned links. */
|
|
5
|
+
export function AdminDashboardPage({ title = "안녕하세요, 관리자님", breadcrumbs, items, }) {
|
|
6
|
+
return (_jsxs("main", { className: "gw-admin-page gw-admin-dashboard", children: [_jsx(AdminPageHeader, { title: title, ...(breadcrumbs ? { breadcrumbs } : {}) }), _jsx("div", { className: "gw-admin-dashboard__grid", children: items.map((item) => (_jsxs(Link, { href: item.href, className: "gw-admin-dashboard__item", children: [_jsx("strong", { children: item.label }), item.description && _jsx("span", { children: item.description })] }, item.href))) })] }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=admin-dashboard-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-dashboard-page.js","sourceRoot":"","sources":["../../src/pages/admin-dashboard-page.tsx"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAwB,MAAM,gCAAgC,CAAC;AAcvF,gFAAgF;AAChF,MAAM,UAAU,kBAAkB,CAAC,EACjC,KAAK,GAAG,aAAa,EACrB,WAAW,EACX,KAAK,GACmB;IACxB,OAAO,CACL,gBAAM,SAAS,EAAC,kCAAkC,aAChD,KAAC,eAAe,IAAC,KAAK,EAAE,KAAK,KAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAI,EAC3E,cAAK,SAAS,EAAC,0BAA0B,YACtC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,MAAC,IAAI,IAAiB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAC,0BAA0B,aACzE,2BAAS,IAAI,CAAC,KAAK,GAAU,EAC5B,IAAI,CAAC,WAAW,IAAI,yBAAO,IAAI,CAAC,WAAW,GAAQ,KAF3C,IAAI,CAAC,IAAI,CAGb,CACR,CAAC,GACE,IACD,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,GAC7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,GAGnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAA8B,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Store } from "gw-store";
|
|
2
|
+
import { type TextEditorProps, type UploadAdapter } from "gw-rich-text-editor/unstyled";
|
|
3
|
+
import type { IconType } from "react-icons";
|
|
4
|
+
export type AdminEditorCommand = "attachFile" | "bold" | "italic" | "underline" | "heading" | "bulletList" | "orderedList" | "link" | "undo" | "redo";
|
|
5
|
+
export type AdminRichTextToolbarItem = {
|
|
6
|
+
command: AdminEditorCommand;
|
|
7
|
+
label: string;
|
|
8
|
+
icon?: IconType;
|
|
9
|
+
};
|
|
10
|
+
export type AdminRichTextEditorProps<TState extends Record<string, unknown>> = {
|
|
11
|
+
store: Store<TState>;
|
|
12
|
+
name: string;
|
|
13
|
+
placeholder?: string;
|
|
14
|
+
invalid?: boolean;
|
|
15
|
+
describedBy?: string;
|
|
16
|
+
upload?: UploadAdapter;
|
|
17
|
+
nodes?: TextEditorProps["nodes"];
|
|
18
|
+
marks?: TextEditorProps["marks"];
|
|
19
|
+
toolbar?: readonly AdminRichTextToolbarItem[] | false;
|
|
20
|
+
className?: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Connects gw-rich-text-editor to one gw-store field. Toolbar entries and
|
|
24
|
+
* upload behavior are independently replaceable or removable.
|
|
25
|
+
*/
|
|
26
|
+
export declare function AdminRichTextEditor<TState extends Record<string, unknown>>({ store, name, placeholder, invalid, describedBy, upload, nodes, marks, toolbar, className, }: AdminRichTextEditorProps<TState>): import("react").JSX.Element;
|
|
27
|
+
//# sourceMappingURL=admin-rich-text-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-rich-text-editor.d.ts","sourceRoot":"","sources":["../../src/rich-text/admin-rich-text-editor.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,aAAa,EACnB,MAAM,8BAA8B,CAAC;AActC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,MAAM,kBAAkB,GAC1B,YAAY,GACZ,MAAM,GACN,QAAQ,GACR,WAAW,GACX,SAAS,GACT,YAAY,GACZ,aAAa,GACb,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IAC7E,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,SAAS,wBAAwB,EAAE,GAAG,KAAK,CAAC;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAeF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC1E,KAAK,EACL,IAAI,EACJ,WAA4B,EAC5B,OAAe,EACf,WAAW,EACX,MAAM,EACN,KAAK,EACL,KAAK,EACL,OAAwB,EACxB,SAAS,GACV,EAAE,wBAAwB,CAAC,MAAM,CAAC,+BAmJlC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useRef, useState } from "react";
|
|
4
|
+
import { TextEditor, } from "gw-rich-text-editor/unstyled";
|
|
5
|
+
import { useStoreController } from "react-store-input";
|
|
6
|
+
import { MdFormatBold, MdFormatItalic, MdFormatListBulleted, MdFormatListNumbered, MdFormatUnderlined, MdLink, MdPhoto, MdRedo, MdTitle, MdUndo, } from "react-icons/md";
|
|
7
|
+
const defaultToolbar = [
|
|
8
|
+
{ command: "attachFile", label: "파일 첨부", icon: MdPhoto },
|
|
9
|
+
{ command: "bold", label: "굵게", icon: MdFormatBold },
|
|
10
|
+
{ command: "italic", label: "기울임", icon: MdFormatItalic },
|
|
11
|
+
{ command: "underline", label: "밑줄", icon: MdFormatUnderlined },
|
|
12
|
+
{ command: "heading", label: "제목", icon: MdTitle },
|
|
13
|
+
{ command: "bulletList", label: "글머리 기호 목록", icon: MdFormatListBulleted },
|
|
14
|
+
{ command: "orderedList", label: "번호 목록", icon: MdFormatListNumbered },
|
|
15
|
+
{ command: "link", label: "링크", icon: MdLink },
|
|
16
|
+
{ command: "undo", label: "실행 취소", icon: MdUndo },
|
|
17
|
+
{ command: "redo", label: "다시 실행", icon: MdRedo },
|
|
18
|
+
];
|
|
19
|
+
/**
|
|
20
|
+
* Connects gw-rich-text-editor to one gw-store field. Toolbar entries and
|
|
21
|
+
* upload behavior are independently replaceable or removable.
|
|
22
|
+
*/
|
|
23
|
+
export function AdminRichTextEditor({ store, name, placeholder = "내용을 입력해 주세요.", invalid = false, describedBy, upload, nodes, marks, toolbar = defaultToolbar, className, }) {
|
|
24
|
+
const editorRef = useRef(null);
|
|
25
|
+
const fileInputRef = useRef(null);
|
|
26
|
+
const subscribedValueRef = useRef(typeof store.state[name] === "string" ? store.state[name] : "");
|
|
27
|
+
const [uploadError, setUploadError] = useState("");
|
|
28
|
+
const { dispatch } = useStoreController(store, {
|
|
29
|
+
onSubscribe: (state) => {
|
|
30
|
+
const editor = editorRef.current;
|
|
31
|
+
const value = typeof state[name] === "string" ? state[name] : "";
|
|
32
|
+
if (subscribedValueRef.current === value) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
subscribedValueRef.current = value;
|
|
36
|
+
if (editor && editor.value !== value) {
|
|
37
|
+
editor.value = value;
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
onDispatch: (state) => {
|
|
41
|
+
const value = editorRef.current?.value ?? "";
|
|
42
|
+
subscribedValueRef.current = value;
|
|
43
|
+
state[name] = value;
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
const runCommand = (command) => {
|
|
47
|
+
if (command === "attachFile") {
|
|
48
|
+
fileInputRef.current?.click();
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const commands = editorRef.current?.commands;
|
|
52
|
+
if (!commands) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
switch (command) {
|
|
56
|
+
case "bold":
|
|
57
|
+
commands.bold();
|
|
58
|
+
break;
|
|
59
|
+
case "italic":
|
|
60
|
+
commands.italic();
|
|
61
|
+
break;
|
|
62
|
+
case "underline":
|
|
63
|
+
commands.underline();
|
|
64
|
+
break;
|
|
65
|
+
case "heading":
|
|
66
|
+
commands.heading(2);
|
|
67
|
+
break;
|
|
68
|
+
case "bulletList":
|
|
69
|
+
commands.bulletList();
|
|
70
|
+
break;
|
|
71
|
+
case "orderedList":
|
|
72
|
+
commands.orderedList();
|
|
73
|
+
break;
|
|
74
|
+
case "link":
|
|
75
|
+
commands.link();
|
|
76
|
+
break;
|
|
77
|
+
case "undo":
|
|
78
|
+
commands.undo();
|
|
79
|
+
break;
|
|
80
|
+
case "redo":
|
|
81
|
+
commands.redo();
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const handleFilesSelected = async (event) => {
|
|
86
|
+
const files = Array.from(event.currentTarget.files ?? []);
|
|
87
|
+
event.currentTarget.value = "";
|
|
88
|
+
if (files.length === 0 || !editorRef.current) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
setUploadError("");
|
|
92
|
+
await editorRef.current.commands.attachFile(files);
|
|
93
|
+
};
|
|
94
|
+
const visibleToolbar = toolbar === false
|
|
95
|
+
? []
|
|
96
|
+
: toolbar.filter((item) => item.command !== "attachFile" || Boolean(upload));
|
|
97
|
+
return (_jsxs("div", { className: className, children: [_jsxs("div", { className: "gw-admin-rich-text-editor", "aria-invalid": invalid, "aria-describedby": describedBy, children: [visibleToolbar.length > 0 && (_jsx("div", { className: "gw-admin-rich-text-editor__toolbar", role: "toolbar", "aria-label": "\uBCF8\uBB38 \uC11C\uC2DD", children: visibleToolbar.map((item) => {
|
|
98
|
+
const Icon = item.icon;
|
|
99
|
+
return (_jsx("button", { type: "button", "aria-label": item.label, title: item.label, onClick: () => runCommand(item.command), className: "gw-admin-rich-text-editor__tool", children: Icon ? _jsx(Icon, { "aria-hidden": "true" }) : _jsx("span", { children: item.label }) }, item.command));
|
|
100
|
+
}) })), _jsx(TextEditor, { ref: editorRef, defaultValue: typeof store.state[name] === "string" ? store.state[name] : "", placeholder: placeholder, ...(nodes ? { nodes } : {}), ...(marks ? { marks } : {}), ...(upload ? { upload } : {}), onChange: dispatch, onUploadError: (_error, file) => setUploadError(`${file.name} 업로드에 실패했습니다.`), className: "gw-admin-rich-text-editor__surface" }), upload && (_jsx("input", { ref: fileInputRef, type: "file", multiple: true, className: "gw-admin-visually-hidden", tabIndex: -1, onChange: handleFilesSelected }))] }), uploadError && (_jsx("p", { role: "alert", className: "gw-admin-field-error", children: uploadError }))] }));
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=admin-rich-text-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-rich-text-editor.js","sourceRoot":"","sources":["../../src/rich-text/admin-rich-text-editor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type UploadAdapter, type UploadContext } from "gw-rich-text-editor/unstyled";
|
|
2
|
+
import type { AdminUploadedFile } from "../attachments/types.js";
|
|
3
|
+
/**
|
|
4
|
+
* A downloadable file node shared by the editor and read-only renderer.
|
|
5
|
+
*/
|
|
6
|
+
export declare const adminRichTextFileElement: import("gw-rich-text-editor/unstyled").EditorElement<{
|
|
7
|
+
href: string;
|
|
8
|
+
name: string;
|
|
9
|
+
size: number | null;
|
|
10
|
+
mimeType: string;
|
|
11
|
+
}>;
|
|
12
|
+
export declare const adminRichTextNodes: readonly [import("gw-rich-text-editor/unstyled").EditorElement<{
|
|
13
|
+
href: string;
|
|
14
|
+
name: string;
|
|
15
|
+
size: number | null;
|
|
16
|
+
mimeType: string;
|
|
17
|
+
}>];
|
|
18
|
+
export type AdminRichTextFileUploader = (file: File, context: UploadContext) => Promise<AdminUploadedFile>;
|
|
19
|
+
/**
|
|
20
|
+
* Adapts an application-owned uploader to image, video, and downloadable file
|
|
21
|
+
* nodes understood by gw-rich-text-editor.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createAdminRichTextUploadAdapter(uploadFile: AdminRichTextFileUploader): UploadAdapter;
|
|
24
|
+
//# sourceMappingURL=admin-rich-text-file.d.ts.map
|