gw-admin 0.1.0 → 0.2.1

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 CHANGED
@@ -2,6 +2,29 @@
2
2
 
3
3
  All notable changes to this project are documented in this file.
4
4
 
5
+ ## 0.2.1 - 2026-08-27
6
+
7
+ ### Fixed
8
+
9
+ - Migrated the rich-text editor integration to the `gw-rich-text-editor` 0.2
10
+ command and file-attachment APIs.
11
+
12
+ ## 0.2.0 - 2026-08-06
13
+
14
+ ### Added
15
+
16
+ - Application-owned form primitives through the new `gw-admin/form` entry point.
17
+ - Breadcrumb and additional header-action slots for CRUD list pages.
18
+ - Custom row-action rendering for CRUD list pages.
19
+
20
+ ### Changed
21
+
22
+ - `AdminCrudForm` now composes the same public form primitives available to consumers.
23
+
24
+ ### Fixed
25
+
26
+ - CRUD search controls remain aligned when a consumer applies global margins to labels.
27
+
5
28
  ## 0.1.0 - 2026-07-31
6
29
 
7
30
  ### Added
package/README.md CHANGED
@@ -178,6 +178,7 @@ back to the preset.
178
178
  | `gw-admin/layout` | Shell and desktop sidebar |
179
179
  | `gw-admin/layout/mobile` | Optional client-side mobile header and drawer |
180
180
  | `gw-admin/header` | Breadcrumb page header |
181
+ | `gw-admin/form` | Application-owned form field, field-group, and alert primitives |
181
182
  | `gw-admin/navigation` | Application-owned navigation rendering |
182
183
  | `gw-admin/account` | Configurable logout button |
183
184
  | `gw-admin/pages` | Dashboard and account pages |
@@ -190,6 +191,26 @@ back to the preset.
190
191
  | `gw-admin/styles.css` | Optional admin UI theme |
191
192
  | `gw-admin/rich-text.css` | Optional rich-editor behavioral baseline |
192
193
 
194
+ ## Application-owned forms
195
+
196
+ Use the lower-level form primitives when a resource does not fit a flat CRUD
197
+ model, such as an editor that owns nested rows in a separate table:
198
+
199
+ ```tsx
200
+ import { AdminFormAlert, AdminFormField, AdminFormFields } from "gw-admin/form";
201
+
202
+ <AdminFormFields>
203
+ {message && <AdminFormAlert tone="error">{message}</AdminFormAlert>}
204
+ <AdminFormField label="제목" htmlFor="title" required>
205
+ <input id="title" className="gw-admin-input" />
206
+ </AdminFormField>
207
+ </AdminFormFields>;
208
+ ```
209
+
210
+ `AdminCrudForm` uses these same primitives internally. CRUD list pages also
211
+ accept `breadcrumbs`, `headerActions`, and `renderRowActions` for
212
+ resource-specific page composition.
213
+
193
214
  Import focused subpaths in shared libraries and large applications. This keeps
194
215
  optional feature dependencies outside bundles that do not use them.
195
216
 
@@ -2,6 +2,7 @@ import { type ReactNode } from "react";
2
2
  import { type Store } from "gw-store";
3
3
  import type { CrudAction, FormPageModel } from "next-headless-crud/core";
4
4
  import { type AdminBreadcrumb } from "../../header/admin-page-header.js";
5
+ import { AdminFormField } from "../../form/admin-form.js";
5
6
  import { type AdminCrudFieldMode, type AdminCrudFormState } from "./form-state.js";
6
7
  type AdminFormField = FormPageModel["fields"][number];
7
8
  export type AdminCrudFieldRenderContext = {
@@ -1 +1 @@
1
- {"version":3,"file":"admin-crud-form.d.ts","sourceRoot":"","sources":["../../../src/crud/form/admin-crud-form.tsx"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAY,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AAEzB,KAAK,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACjC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACzC,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC1D,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,SAAS,GAAG,SAAS,CAAC;IAC9E,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACvC,CAAC;AAWF;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,KAAK,EACL,MAAM,EACN,aAAa,EACb,UAAe,EACf,WAAW,EACX,MAAM,EAAE,cAAc,GACvB,EAAE,kBAAkB,+BA8IpB"}
1
+ {"version":3,"file":"admin-crud-form.d.ts","sourceRoot":"","sources":["../../../src/crud/form/admin-crud-form.tsx"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAY,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAkB,cAAc,EAAmB,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AAEzB,KAAK,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,MAAM,2BAA2B,GAAG;IACxC,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACjC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACzC,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC1D,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,SAAS,GAAG,SAAS,CAAC;IAC9E,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACvC,CAAC;AAWF;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,KAAK,EACL,MAAM,EACN,aAAa,EACb,UAAe,EACf,WAAW,EACX,MAAM,EAAE,cAAc,GACvB,EAAE,kBAAkB,+BAiIpB"}
@@ -5,6 +5,7 @@ import { startTransition, useActionState, useCallback, useState, } from "react";
5
5
  import { useStore } from "gw-store";
6
6
  import { Input, Select, Textarea } from "react-store-input";
7
7
  import { AdminPageHeader, } from "../../header/admin-page-header.js";
8
+ import { AdminFormAlert, AdminFormField, AdminFormFields } from "../../form/admin-form.js";
8
9
  import { createAdminActionFormData, createAdminCrudFormState, } from "./form-state.js";
9
10
  const defaultLabels = {
10
11
  cancel: "취소",
@@ -35,7 +36,7 @@ export function AdminCrudForm({ title, breadcrumbs, model, action, initialValues
35
36
  formAction(createAdminActionFormData(store.state));
36
37
  });
37
38
  }, [formAction, store]);
38
- return (_jsxs("div", { className: "gw-admin-crud-form", children: [_jsx(AdminPageHeader, { title: title, ...(breadcrumbs ? { breadcrumbs } : {}), actions: _jsxs(_Fragment, { children: [_jsx(Link, { href: model.basePath, className: "gw-admin-button gw-admin-button--secondary", children: labels.cancel }), _jsx("button", { type: "button", onClick: save, disabled: pending || uploading, className: "gw-admin-button gw-admin-button--primary", children: uploading ? labels.uploading : pending ? labels.saving : labels.save })] }) }), _jsxs("div", { className: "gw-admin-crud-form__fields", children: [state && !state.success && (_jsx("div", { role: "alert", className: "gw-admin-alert gw-admin-alert--error", children: state.error.message })), model.fields.map((field) => {
39
+ return (_jsxs("div", { className: "gw-admin-crud-form", children: [_jsx(AdminPageHeader, { title: title, ...(breadcrumbs ? { breadcrumbs } : {}), actions: _jsxs(_Fragment, { children: [_jsx(Link, { href: model.basePath, className: "gw-admin-button gw-admin-button--secondary", children: labels.cancel }), _jsx("button", { type: "button", onClick: save, disabled: pending || uploading, className: "gw-admin-button gw-admin-button--primary", children: uploading ? labels.uploading : pending ? labels.saving : labels.save })] }) }), _jsxs(AdminFormFields, { className: "gw-admin-crud-form__fields", children: [state && !state.success && (_jsx(AdminFormAlert, { tone: "error", children: state.error.message })), model.fields.map((field) => {
39
40
  const { name, definition, values } = field;
40
41
  const mode = fieldModes[name] ?? "input";
41
42
  if (mode === "hidden") {
@@ -50,7 +51,7 @@ export function AdminCrudForm({ title, breadcrumbs, model, action, initialValues
50
51
  errorId,
51
52
  setUploading: updateUploading,
52
53
  });
53
- return (_jsxs("div", { className: "gw-admin-field", children: [_jsxs("label", { htmlFor: name, className: "gw-admin-field__label", children: [definition.label, definition.required && (_jsx("span", { className: "gw-admin-field__required", "aria-label": "\uD544\uC218", children: "*" }))] }), customField !== undefined ? (customField) : definition.inputType === "checkbox" ? (_jsxs("span", { className: "gw-admin-checkbox", children: [_jsx(Input, { store: store, id: name, type: "checkbox", name: name, "aria-invalid": Boolean(error), "aria-describedby": error ? errorId : undefined, className: "gw-admin-checkbox__input" }), _jsx("span", { children: labels.checkbox })] })) : definition.inputType === "select" ? (_jsxs(Select, { store: store, id: name, name: name, required: definition.required, "aria-invalid": Boolean(error), "aria-describedby": error ? errorId : undefined, className: "gw-admin-input", children: [!definition.required && _jsx("option", { value: "", children: labels.optionalSelect }), values?.map((option) => (_jsx("option", { value: String(option.value), children: option.label }, String(option.value))))] })) : mode === "textarea" ? (_jsx(Textarea, { store: store, id: name, name: name, required: definition.required, "aria-invalid": Boolean(error), "aria-describedby": error ? errorId : undefined, className: "gw-admin-input gw-admin-textarea" })) : (_jsx(Input, { store: store, id: name, type: definition.inputType, name: name, required: definition.required, "aria-invalid": Boolean(error), "aria-describedby": error ? errorId : undefined, className: "gw-admin-input" })), definition.description && (_jsx("span", { className: "gw-admin-field__description", children: definition.description })), error && (_jsx("span", { id: errorId, className: "gw-admin-field-error", children: error.join(" ") }))] }, name));
54
+ return (_jsx(AdminFormField, { label: definition.label, htmlFor: name, required: definition.required, ...(definition.description ? { description: definition.description } : {}), ...(error ? { error, errorId } : {}), children: customField !== undefined ? (customField) : definition.inputType === "checkbox" ? (_jsxs("span", { className: "gw-admin-checkbox", children: [_jsx(Input, { store: store, id: name, type: "checkbox", name: name, "aria-invalid": Boolean(error), "aria-describedby": error ? errorId : undefined, className: "gw-admin-checkbox__input" }), _jsx("span", { children: labels.checkbox })] })) : definition.inputType === "select" ? (_jsxs(Select, { store: store, id: name, name: name, required: definition.required, "aria-invalid": Boolean(error), "aria-describedby": error ? errorId : undefined, className: "gw-admin-input", children: [!definition.required && _jsx("option", { value: "", children: labels.optionalSelect }), values?.map((option) => (_jsx("option", { value: String(option.value), children: option.label }, String(option.value))))] })) : mode === "textarea" ? (_jsx(Textarea, { store: store, id: name, name: name, required: definition.required, "aria-invalid": Boolean(error), "aria-describedby": error ? errorId : undefined, className: "gw-admin-input gw-admin-textarea" })) : (_jsx(Input, { store: store, id: name, type: definition.inputType, name: name, required: definition.required, "aria-invalid": Boolean(error), "aria-describedby": error ? errorId : undefined, className: "gw-admin-input" })) }, name));
54
55
  })] })] }));
55
56
  }
56
57
  //# sourceMappingURL=admin-crud-form.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-crud-form.js","sourceRoot":"","sources":["../../../src/crud/form/admin-crud-form.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin-crud-form.js","sourceRoot":"","sources":["../../../src/crud/form/admin-crud-form.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { ReactNode } from "react";
2
- import type { CrudResource } from "next-headless-crud/core";
2
+ import type { CrudResource, ListPageModel, ListRowModel } from "next-headless-crud/core";
3
3
  import type { CrudRouteListPageProps } from "next-headless-crud/next";
4
+ import { type AdminBreadcrumb } from "../../header/admin-page-header.js";
4
5
  export type AdminCrudListLabels = {
5
6
  create: string;
6
7
  search: string;
@@ -18,10 +19,13 @@ export type AdminCrudListLabels = {
18
19
  };
19
20
  export type AdminCrudListPageProps<TResource extends CrudResource = CrudResource> = CrudRouteListPageProps<TResource> & {
20
21
  labels?: Partial<AdminCrudListLabels>;
22
+ breadcrumbs?: readonly AdminBreadcrumb[];
23
+ headerActions?: ReactNode;
21
24
  renderValue?: (value: unknown, field: string) => ReactNode;
25
+ renderRowActions?: (row: ListRowModel, model: ListPageModel) => ReactNode;
22
26
  };
23
27
  /**
24
28
  * Renders a complete list page from a next-headless-crud list model.
25
29
  */
26
- export declare function AdminCrudListPage<TResource extends CrudResource = CrudResource>({ resource, searchParams, labels: labelOverrides, renderValue, }: AdminCrudListPageProps<TResource>): Promise<import("react").JSX.Element>;
30
+ export declare function AdminCrudListPage<TResource extends CrudResource = CrudResource>({ resource, searchParams, labels: labelOverrides, breadcrumbs, headerActions, renderValue, renderRowActions, }: AdminCrudListPageProps<TResource>): Promise<import("react").JSX.Element>;
27
31
  //# sourceMappingURL=admin-crud-list-page.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-crud-list-page.d.ts","sourceRoot":"","sources":["../../../src/crud/pages/admin-crud-list-page.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAKtE,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IACvE,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAAC,SAAS,SAAS,YAAY,GAAG,YAAY,IAC9E,sBAAsB,CAAC,SAAS,CAAC,GAAG;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;CAC5D,CAAC;AAmBJ;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,SAAS,YAAY,GAAG,YAAY,EAAE,EACrF,QAAQ,EACR,YAAY,EACZ,MAAM,EAAE,cAAc,EACtB,WAAgD,GACjD,EAAE,sBAAsB,CAAC,SAAS,CAAC,wCAmJnC"}
1
+ {"version":3,"file":"admin-crud-list-page.d.ts","sourceRoot":"","sources":["../../../src/crud/pages/admin-crud-list-page.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,mCAAmC,CAAC;AAG3C,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IACvE,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAAC,SAAS,SAAS,YAAY,GAAG,YAAY,IAC9E,sBAAsB,CAAC,SAAS,CAAC,GAAG;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACzC,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IAC3D,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,KAAK,SAAS,CAAC;CAC3E,CAAC;AAmBJ;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,SAAS,YAAY,GAAG,YAAY,EAAE,EACrF,QAAQ,EACR,YAAY,EACZ,MAAM,EAAE,cAAc,EACtB,WAAW,EACX,aAAa,EACb,WAAgD,EAChD,gBAAgB,GACjB,EAAE,sBAAsB,CAAC,SAAS,CAAC,wCAgKnC"}
@@ -1,7 +1,7 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import Link from "next/link";
3
3
  import { tableHref } from "next-headless-crud/query";
4
- import { AdminPageHeader } from "../../header/admin-page-header.js";
4
+ import { AdminPageHeader, } from "../../header/admin-page-header.js";
5
5
  import { formatAdminValue } from "./format-admin-value.js";
6
6
  const defaultLabels = {
7
7
  create: "새 글 등록",
@@ -21,13 +21,13 @@ const defaultLabels = {
21
21
  /**
22
22
  * Renders a complete list page from a next-headless-crud list model.
23
23
  */
24
- export async function AdminCrudListPage({ resource, searchParams, labels: labelOverrides, renderValue = (value) => formatAdminValue(value), }) {
24
+ export async function AdminCrudListPage({ resource, searchParams, labels: labelOverrides, breadcrumbs, headerActions, renderValue = (value) => formatAdminValue(value), renderRowActions, }) {
25
25
  const labels = { ...defaultLabels, ...labelOverrides };
26
26
  const model = await resource.list(await searchParams);
27
- return (_jsxs("main", { className: "gw-admin-page", children: [_jsx(AdminPageHeader, { title: model.resource.label, actions: _jsx(Link, { href: `${model.basePath}/new`, className: "gw-admin-button gw-admin-button--primary", children: labels.create }) }), _jsxs("form", { action: model.basePath, method: "get", className: "gw-admin-search", children: [_jsxs("label", { className: "gw-admin-search__query", children: [_jsx("span", { className: "gw-admin-field__label", children: labels.search }), _jsx("input", { type: "search", name: "q", defaultValue: model.query.search, placeholder: labels.searchPlaceholder, className: "gw-admin-input" })] }), Object.values(model.filters).map((filter) => (_jsxs("label", { className: "gw-admin-search__filter", children: [_jsx("span", { className: "gw-admin-field__label", children: filter.label }), _jsxs("select", { name: filter.name, defaultValue: String(model.query.filters[filter.field] ?? ""), className: "gw-admin-input", children: [_jsx("option", { value: "", children: labels.all }), filter.values.map((option) => (_jsx("option", { value: String(option.value), children: option.label }, String(option.value))))] })] }, filter.field))), _jsx("input", { type: "hidden", name: "pageSize", value: model.query.pageSize }), _jsx("button", { type: "submit", className: "gw-admin-button gw-admin-button--muted", children: labels.submit }), _jsx(Link, { href: model.basePath, className: "gw-admin-button gw-admin-button--secondary", children: labels.reset })] }), _jsx("div", { className: "gw-admin-table-wrap", children: _jsxs("table", { className: "gw-admin-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [model.columns.map((column) => (_jsx("th", { children: column.sort ? (_jsxs(Link, { href: column.sort.href, className: "gw-admin-table__sort", children: [column.label, _jsx("span", { "aria-hidden": "true", children: column.sort.direction === "asc"
27
+ return (_jsxs("main", { className: "gw-admin-page", children: [_jsx(AdminPageHeader, { title: model.resource.label, ...(breadcrumbs ? { breadcrumbs } : {}), actions: _jsxs(_Fragment, { children: [headerActions, _jsx(Link, { href: `${model.basePath}/new`, className: "gw-admin-button gw-admin-button--primary", children: labels.create })] }) }), _jsxs("form", { action: model.basePath, method: "get", className: "gw-admin-search", children: [_jsxs("label", { className: "gw-admin-search__query", children: [_jsx("span", { className: "gw-admin-field__label", children: labels.search }), _jsx("input", { type: "search", name: "q", defaultValue: model.query.search, placeholder: labels.searchPlaceholder, className: "gw-admin-input" })] }), Object.values(model.filters).map((filter) => (_jsxs("label", { className: "gw-admin-search__filter", children: [_jsx("span", { className: "gw-admin-field__label", children: filter.label }), _jsxs("select", { name: filter.name, defaultValue: String(model.query.filters[filter.field] ?? ""), className: "gw-admin-input", children: [_jsx("option", { value: "", children: labels.all }), filter.values.map((option) => (_jsx("option", { value: String(option.value), children: option.label }, String(option.value))))] })] }, filter.field))), _jsx("input", { type: "hidden", name: "pageSize", value: model.query.pageSize }), _jsx("button", { type: "submit", className: "gw-admin-button gw-admin-button--muted", children: labels.submit }), _jsx(Link, { href: model.basePath, className: "gw-admin-button gw-admin-button--secondary", children: labels.reset })] }), _jsx("div", { className: "gw-admin-table-wrap", children: _jsxs("table", { className: "gw-admin-table", children: [_jsx("thead", { children: _jsxs("tr", { children: [model.columns.map((column) => (_jsx("th", { children: column.sort ? (_jsxs(Link, { href: column.sort.href, className: "gw-admin-table__sort", children: [column.label, _jsx("span", { "aria-hidden": "true", children: column.sort.direction === "asc"
28
28
  ? "↑"
29
29
  : column.sort.direction === "desc"
30
30
  ? "↓"
31
- : "↕" })] })) : (column.label) }, column.name))), _jsx("th", { children: labels.actions })] }) }), _jsxs("tbody", { children: [model.rows.map((row) => (_jsxs("tr", { children: [model.columns.map((column, columnIndex) => (_jsx("td", { children: columnIndex === 0 ? (_jsx(Link, { href: row.href, className: "gw-admin-table__primary-link", children: renderValue(row.data[column.name], column.name) })) : (_jsx("span", { className: "gw-admin-table__value", children: renderValue(row.data[column.name], column.name) })) }, column.name))), _jsx("td", { children: _jsxs("div", { className: "gw-admin-table__actions", children: [_jsx(Link, { href: row.href, children: labels.view }), _jsx(Link, { href: row.editHref, children: labels.edit })] }) })] }, row.id))), model.rows.length === 0 && (_jsx("tr", { children: _jsx("td", { colSpan: model.columns.length + 1, className: "gw-admin-table__empty", children: labels.empty }) }))] })] }) }), _jsxs("footer", { className: "gw-admin-pagination", children: [_jsx("p", { children: labels.total(model.pagination.totalCount, model.pagination.page, model.pagination.pageCount) }), _jsxs("nav", { className: "gw-admin-pagination__navigation", "aria-label": "\uAC8C\uC2DC\uD310 \uD398\uC774\uC9C0 \uC774\uB3D9", children: [model.pagination.hasPreviousPage ? (_jsx(Link, { href: tableHref(model, { page: model.query.page - 1 }), className: "gw-admin-button gw-admin-button--secondary", children: labels.previous })) : (_jsx("span", { className: "gw-admin-button gw-admin-button--disabled", children: labels.previous })), model.pagination.hasNextPage ? (_jsx(Link, { href: tableHref(model, { page: model.query.page + 1 }), className: "gw-admin-button gw-admin-button--secondary", children: labels.next })) : (_jsx("span", { className: "gw-admin-button gw-admin-button--disabled", children: labels.next }))] })] })] }));
31
+ : "↕" })] })) : (column.label) }, column.name))), _jsx("th", { children: labels.actions })] }) }), _jsxs("tbody", { children: [model.rows.map((row) => (_jsxs("tr", { children: [model.columns.map((column, columnIndex) => (_jsx("td", { children: columnIndex === 0 ? (_jsx(Link, { href: row.href, className: "gw-admin-table__primary-link", children: renderValue(row.data[column.name], column.name) })) : (_jsx("span", { className: "gw-admin-table__value", children: renderValue(row.data[column.name], column.name) })) }, column.name))), _jsx("td", { children: _jsx("div", { className: "gw-admin-table__actions", children: renderRowActions ? (renderRowActions(row, model)) : (_jsxs(_Fragment, { children: [_jsx(Link, { href: row.href, children: labels.view }), _jsx(Link, { href: row.editHref, children: labels.edit })] })) }) })] }, row.id))), model.rows.length === 0 && (_jsx("tr", { children: _jsx("td", { colSpan: model.columns.length + 1, className: "gw-admin-table__empty", children: labels.empty }) }))] })] }) }), _jsxs("footer", { className: "gw-admin-pagination", children: [_jsx("p", { children: labels.total(model.pagination.totalCount, model.pagination.page, model.pagination.pageCount) }), _jsxs("nav", { className: "gw-admin-pagination__navigation", "aria-label": "\uAC8C\uC2DC\uD310 \uD398\uC774\uC9C0 \uC774\uB3D9", children: [model.pagination.hasPreviousPage ? (_jsx(Link, { href: tableHref(model, { page: model.query.page - 1 }), className: "gw-admin-button gw-admin-button--secondary", children: labels.previous })) : (_jsx("span", { className: "gw-admin-button gw-admin-button--disabled", children: labels.previous })), model.pagination.hasNextPage ? (_jsx(Link, { href: tableHref(model, { page: model.query.page + 1 }), className: "gw-admin-button gw-admin-button--secondary", children: labels.next })) : (_jsx("span", { className: "gw-admin-button gw-admin-button--disabled", children: labels.next }))] })] })] }));
32
32
  }
33
33
  //# sourceMappingURL=admin-crud-list-page.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-crud-list-page.js","sourceRoot":"","sources":["../../../src/crud/pages/admin-crud-list-page.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin-crud-list-page.js","sourceRoot":"","sources":["../../../src/crud/pages/admin-crud-list-page.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ export type AdminFormFieldsProps = HTMLAttributes<HTMLDivElement>;
3
+ /** Groups application-owned form fields with the standard admin spacing. */
4
+ export declare function AdminFormFields({ className, ...props }: AdminFormFieldsProps): import("react").JSX.Element;
5
+ export type AdminFormFieldProps = Omit<HTMLAttributes<HTMLDivElement>, "children"> & {
6
+ label: ReactNode;
7
+ htmlFor?: string;
8
+ required?: boolean;
9
+ description?: ReactNode;
10
+ error?: readonly string[];
11
+ errorId?: string;
12
+ children: ReactNode;
13
+ };
14
+ /**
15
+ * Renders the shared label, description, and validation treatment around an
16
+ * application-owned input.
17
+ */
18
+ export declare function AdminFormField({ label, htmlFor, required, description, error, errorId, children, className, ...props }: AdminFormFieldProps): import("react").JSX.Element;
19
+ export type AdminFormAlertProps = HTMLAttributes<HTMLDivElement> & {
20
+ tone?: "error";
21
+ };
22
+ /** Renders a form-level status message using the shared admin alert styles. */
23
+ export declare function AdminFormAlert({ tone, className, role, ...props }: AdminFormAlertProps): import("react").JSX.Element;
24
+ //# sourceMappingURL=admin-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-form.d.ts","sourceRoot":"","sources":["../../src/form/admin-form.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvD,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AAElE,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,+BAE5E;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,GAAG;IACnF,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,OAAO,EACP,QAAgB,EAChB,WAAW,EACX,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,mBAAmB,+BA8BrB;AAED,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IACjE,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,SAAS,EACT,IAA6C,EAC7C,GAAG,KAAK,EACT,EAAE,mBAAmB,+BAQrB"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { classNames } from "../internal/class-names.js";
3
+ /** Groups application-owned form fields with the standard admin spacing. */
4
+ export function AdminFormFields({ className, ...props }) {
5
+ return _jsx("div", { className: classNames("gw-admin-form-fields", className), ...props });
6
+ }
7
+ /**
8
+ * Renders the shared label, description, and validation treatment around an
9
+ * application-owned input.
10
+ */
11
+ export function AdminFormField({ label, htmlFor, required = false, description, error, errorId, children, className, ...props }) {
12
+ const labelContent = (_jsxs(_Fragment, { children: [label, required && (_jsx("span", { className: "gw-admin-field__required", "aria-label": "\uD544\uC218", children: "*" }))] }));
13
+ return (_jsxs("div", { className: classNames("gw-admin-field", className), ...props, children: [htmlFor ? (_jsx("label", { htmlFor: htmlFor, className: "gw-admin-field__label", children: labelContent })) : (_jsx("div", { className: "gw-admin-field__label", children: labelContent })), children, description && _jsx("span", { className: "gw-admin-field__description", children: description }), error?.length ? (_jsx("span", { id: errorId, className: "gw-admin-field-error", children: error.join(" ") })) : null] }));
14
+ }
15
+ /** Renders a form-level status message using the shared admin alert styles. */
16
+ export function AdminFormAlert({ tone, className, role = tone === "error" ? "alert" : undefined, ...props }) {
17
+ return (_jsx("div", { role: role, className: classNames("gw-admin-alert", tone === "error" && "gw-admin-alert--error", className), ...props }));
18
+ }
19
+ //# sourceMappingURL=admin-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-form.js","sourceRoot":"","sources":["../../src/form/admin-form.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAIxD,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAwB;IAC3E,OAAO,cAAK,SAAS,EAAE,UAAU,CAAC,sBAAsB,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AACtF,CAAC;AAYD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,WAAW,EACX,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACY;IACpB,MAAM,YAAY,GAAG,CACnB,8BACG,KAAK,EACL,QAAQ,IAAI,CACX,eAAM,SAAS,EAAC,0BAA0B,gBAAY,cAAI,kBAEnD,CACR,IACA,CACJ,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAE,UAAU,CAAC,gBAAgB,EAAE,SAAS,CAAC,KAAM,KAAK,aAC/D,OAAO,CAAC,CAAC,CAAC,CACT,gBAAO,OAAO,EAAE,OAAO,EAAE,SAAS,EAAC,uBAAuB,YACvD,YAAY,GACP,CACT,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,uBAAuB,YAAE,YAAY,GAAO,CAC5D,EACA,QAAQ,EACR,WAAW,IAAI,eAAM,SAAS,EAAC,6BAA6B,YAAE,WAAW,GAAQ,EACjF,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CACf,eAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAC,sBAAsB,YAChD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GACX,CACR,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC;AAMD,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,EAC7B,IAAI,EACJ,SAAS,EACT,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAC7C,GAAG,KAAK,EACY;IACpB,OAAO,CACL,cACE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,UAAU,CAAC,gBAAgB,EAAE,IAAI,KAAK,OAAO,IAAI,uBAAuB,EAAE,SAAS,CAAC,KAC3F,KAAK,GACT,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { AdminFormAlert, AdminFormField, AdminFormFields, type AdminFormAlertProps, type AdminFormFieldProps, type AdminFormFieldsProps, } from "./admin-form.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/form/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { AdminFormAlert, AdminFormField, AdminFormFields, } from "./admin-form.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/form/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,eAAe,GAIhB,MAAM,iBAAiB,CAAC"}
@@ -1 +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"}
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,EAaL,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;AA+BF;;;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,+BAmHlC"}
@@ -1,9 +1,20 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useRef, useState } from "react";
4
- import { TextEditor, } from "gw-rich-text-editor/unstyled";
4
+ import { RichTextEditor, attachFiles, link, redo, toggleBold, toggleBulletList, toggleHeading, toggleItalic, toggleOrderedList, toggleUnderline, undo, } from "gw-rich-text-editor/unstyled";
5
5
  import { useStoreController } from "react-store-input";
6
6
  import { MdFormatBold, MdFormatItalic, MdFormatListBulleted, MdFormatListNumbered, MdFormatUnderlined, MdLink, MdPhoto, MdRedo, MdTitle, MdUndo, } from "react-icons/md";
7
+ const editorCommands = {
8
+ bold: toggleBold,
9
+ italic: toggleItalic,
10
+ underline: toggleUnderline,
11
+ heading: toggleHeading(2),
12
+ bulletList: toggleBulletList,
13
+ orderedList: toggleOrderedList,
14
+ link: link(),
15
+ undo,
16
+ redo,
17
+ };
7
18
  const defaultToolbar = [
8
19
  { command: "attachFile", label: "파일 첨부", icon: MdPhoto },
9
20
  { command: "bold", label: "굵게", icon: MdFormatBold },
@@ -48,48 +59,16 @@ export function AdminRichTextEditor({ store, name, placeholder = "내용을 입
48
59
  fileInputRef.current?.click();
49
60
  return;
50
61
  }
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
- }
62
+ editorRef.current?.execute(editorCommands[command]);
84
63
  };
85
- const handleFilesSelected = async (event) => {
64
+ const handleFilesSelected = (event) => {
86
65
  const files = Array.from(event.currentTarget.files ?? []);
87
66
  event.currentTarget.value = "";
88
67
  if (files.length === 0 || !editorRef.current) {
89
68
  return;
90
69
  }
91
70
  setUploadError("");
92
- await editorRef.current.commands.attachFile(files);
71
+ editorRef.current.execute(attachFiles(files));
93
72
  };
94
73
  const visibleToolbar = toolbar === false
95
74
  ? []
@@ -97,6 +76,9 @@ export function AdminRichTextEditor({ store, name, placeholder = "내용을 입
97
76
  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
77
  const Icon = item.icon;
99
78
  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 }))] }));
79
+ }) })), _jsx(RichTextEditor, { ref: editorRef, defaultValue: typeof store.state[name] === "string" ? store.state[name] : "", placeholder: placeholder, ...(nodes ? { nodes } : {}), ...(marks ? { marks } : {}), fileAttachments: {
80
+ ...(upload ? { upload } : {}),
81
+ onError: (_error, file) => setUploadError(`${file.name} 업로드에 실패했습니다.`),
82
+ }, onChange: dispatch, 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
83
  }
102
84
  //# sourceMappingURL=admin-rich-text-editor.js.map
@@ -1 +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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"}
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gw-admin",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "Composable administration UI for the Next.js App Router and next-headless-crud.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -34,6 +34,10 @@
34
34
  "types": "./dist/header/index.d.ts",
35
35
  "import": "./dist/header/index.js"
36
36
  },
37
+ "./form": {
38
+ "types": "./dist/form/index.d.ts",
39
+ "import": "./dist/form/index.js"
40
+ },
37
41
  "./navigation": {
38
42
  "types": "./dist/navigation/index.d.ts",
39
43
  "import": "./dist/navigation/index.js"
@@ -115,7 +119,7 @@
115
119
  },
116
120
  "peerDependencies": {
117
121
  "gw-react-file-input": "^0.1.0",
118
- "gw-rich-text-editor": "^0.1.4",
122
+ "gw-rich-text-editor": "^0.2.1",
119
123
  "gw-store": "^0.1.1",
120
124
  "next": ">=15.0.0",
121
125
  "next-headless-crud": "^0.1.0",
@@ -145,7 +149,7 @@
145
149
  "@types/react": "^19.2.1",
146
150
  "@types/react-dom": "^19.2.1",
147
151
  "gw-react-file-input": "^0.1.0",
148
- "gw-rich-text-editor": "^0.1.4",
152
+ "gw-rich-text-editor": "^0.2.1",
149
153
  "gw-store": "^0.1.1",
150
154
  "next": "^16.2.12",
151
155
  "next-headless-crud": "^0.1.0",
package/styles.css CHANGED
@@ -403,6 +403,11 @@
403
403
  flex: 1;
404
404
  }
405
405
 
406
+ .gw-admin-search__query,
407
+ .gw-admin-search__filter {
408
+ margin: 0;
409
+ }
410
+
406
411
  .gw-admin-search__filter {
407
412
  min-width: min(100%, 10rem);
408
413
  }
@@ -580,6 +585,7 @@
580
585
  margin-top: 2rem;
581
586
  }
582
587
 
588
+ .gw-admin-form-fields,
583
589
  .gw-admin-crud-form__fields {
584
590
  display: grid;
585
591
  gap: 1.5rem;