hazo_ihelp 2.5.0 → 2.7.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/README.md +26 -1
- package/db_setup_postgres.sql +2 -0
- package/db_setup_sqlite.sql +2 -0
- package/dist/api/create_config_handler.d.ts +7 -0
- package/dist/api/create_config_handler.d.ts.map +1 -1
- package/dist/api/create_config_handler.js +31 -2
- package/dist/api/create_config_handler.js.map +1 -1
- package/dist/api/create_ihelp_handler.d.ts.map +1 -1
- package/dist/api/create_ihelp_handler.js +62 -4
- package/dist/api/create_ihelp_handler.js.map +1 -1
- package/dist/components/editor/editor_context_keys_section.d.ts.map +1 -1
- package/dist/components/editor/editor_context_keys_section.js +9 -6
- package/dist/components/editor/editor_context_keys_section.js.map +1 -1
- package/dist/components/editor/editor_form.d.ts.map +1 -1
- package/dist/components/editor/editor_form.js +5 -2
- package/dist/components/editor/editor_form.js.map +1 -1
- package/dist/components/editor/editor_import_export.d.ts.map +1 -1
- package/dist/components/editor/editor_import_export.js +12 -6
- package/dist/components/editor/editor_import_export.js.map +1 -1
- package/dist/components/editor/editor_tags_section.d.ts.map +1 -1
- package/dist/components/editor/editor_tags_section.js +5 -2
- package/dist/components/editor/editor_tags_section.js.map +1 -1
- package/dist/components/editor/editor_topic_list.d.ts.map +1 -1
- package/dist/components/editor/editor_topic_list.js +4 -1
- package/dist/components/editor/editor_topic_list.js.map +1 -1
- package/dist/components/editor/editor_topic_list_item.d.ts.map +1 -1
- package/dist/components/editor/editor_topic_list_item.js +4 -1
- package/dist/components/editor/editor_topic_list_item.js.map +1 -1
- package/dist/components/hover_help_icon.d.ts +18 -1
- package/dist/components/hover_help_icon.d.ts.map +1 -1
- package/dist/components/hover_help_icon.js +22 -3
- package/dist/components/hover_help_icon.js.map +1 -1
- package/dist/components/ihelp_detail_panel.d.ts.map +1 -1
- package/dist/components/ihelp_detail_panel.js +5 -2
- package/dist/components/ihelp_detail_panel.js.map +1 -1
- package/dist/components/ihelp_editor.d.ts.map +1 -1
- package/dist/components/ihelp_editor.js +9 -3
- package/dist/components/ihelp_editor.js.map +1 -1
- package/dist/components/ihelp_field_help.d.ts +5 -1
- package/dist/components/ihelp_field_help.d.ts.map +1 -1
- package/dist/components/ihelp_field_help.js +5 -2
- package/dist/components/ihelp_field_help.js.map +1 -1
- package/dist/components/ihelp_icon.d.ts.map +1 -1
- package/dist/components/ihelp_icon.js +4 -1
- package/dist/components/ihelp_icon.js.map +1 -1
- package/dist/components/ihelp_page_sidebar.d.ts +21 -0
- package/dist/components/ihelp_page_sidebar.d.ts.map +1 -0
- package/dist/components/ihelp_page_sidebar.js +24 -0
- package/dist/components/ihelp_page_sidebar.js.map +1 -0
- package/dist/components/ihelp_rich_editor.d.ts.map +1 -1
- package/dist/components/ihelp_rich_editor.js +4 -1
- package/dist/components/ihelp_rich_editor.js.map +1 -1
- package/dist/components/ihelp_search_dialog.d.ts.map +1 -1
- package/dist/components/ihelp_search_dialog.js +21 -15
- package/dist/components/ihelp_search_dialog.js.map +1 -1
- package/dist/components/ihelp_topic_cards.d.ts +14 -0
- package/dist/components/ihelp_topic_cards.d.ts.map +1 -0
- package/dist/components/ihelp_topic_cards.js +22 -0
- package/dist/components/ihelp_topic_cards.js.map +1 -0
- package/dist/components/ihelp_topic_list.d.ts +14 -0
- package/dist/components/ihelp_topic_list.d.ts.map +1 -0
- package/dist/components/ihelp_topic_list.js +12 -0
- package/dist/components/ihelp_topic_list.js.map +1 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +3 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/topic_hover_icon.d.ts.map +1 -1
- package/dist/components/topic_hover_icon.js +5 -2
- package/dist/components/topic_hover_icon.js.map +1 -1
- package/dist/index.client.d.ts +3 -0
- package/dist/index.client.d.ts.map +1 -1
- package/dist/index.client.js.map +1 -1
- package/dist/index.runtime.d.ts +3 -0
- package/dist/index.runtime.d.ts.map +1 -1
- package/dist/index.runtime.js +3 -0
- package/dist/index.runtime.js.map +1 -1
- package/dist/locales/en.json +105 -0
- package/dist/types/index.d.ts +27 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +26 -22
package/README.md
CHANGED
|
@@ -117,6 +117,31 @@ const { PATCH, DELETE } = createIhelpHandler({
|
|
|
117
117
|
export { PATCH, DELETE };
|
|
118
118
|
```
|
|
119
119
|
|
|
120
|
+
> **Security note:** by default, POST/PATCH/DELETE on these routes are
|
|
121
|
+
> **unauthenticated** — anyone who can reach the route can write. Pass an
|
|
122
|
+
> `authorize` hook to gate mutations behind your own auth check; GET stays
|
|
123
|
+
> public either way (topic reads are meant to be public) and is never
|
|
124
|
+
> gated by `authorize`:
|
|
125
|
+
>
|
|
126
|
+
> ```typescript
|
|
127
|
+
> const { GET, POST, PATCH, DELETE } = createIhelpHandler({
|
|
128
|
+
> getHazoConnect: () => getHazoConnectSingleton(),
|
|
129
|
+
> authorize: async (req) => {
|
|
130
|
+
> // Your own auth check — e.g. verify a session/JWT and role.
|
|
131
|
+
> const user = await getUserFromRequest(req);
|
|
132
|
+
> return !!user?.is_admin;
|
|
133
|
+
> },
|
|
134
|
+
> });
|
|
135
|
+
> ```
|
|
136
|
+
>
|
|
137
|
+
> Resolving `false` (or throwing) responds `401` and the mutation never
|
|
138
|
+
> runs. Omitting `authorize` preserves the original unauthenticated
|
|
139
|
+
> behaviour — this is an opt-in hook, not a default-on gate.
|
|
140
|
+
>
|
|
141
|
+
> `createConfigHandler`'s PUT route (`hazo_config` key/value upserts)
|
|
142
|
+
> takes the same `authorize` option, enforced the same way, before PUT.
|
|
143
|
+
> Its GET is never gated either.
|
|
144
|
+
|
|
120
145
|
### 3. Add the Provider
|
|
121
146
|
|
|
122
147
|
Wrap your app (or a subtree) with `IhelpProvider`:
|
|
@@ -195,7 +220,7 @@ import { IhelpFieldHelp } from 'hazo_ihelp';
|
|
|
195
220
|
</label>
|
|
196
221
|
```
|
|
197
222
|
|
|
198
|
-
Props: `title` (string), `body` (string or ReactNode), `size` (default 13), `side` (`"top"` | `"right"` | `"bottom"` | `"left"`, default `"top"`), `className
|
|
223
|
+
Props: `title` (string), `body` (string or ReactNode), `size` (default 13), `side` (`"top"` | `"right"` | `"bottom"` | `"left"`, default `"top"`), `className`, `content_className` (extra class on the popover itself — a `z-*` utility here wins over the default `z-[200]`), `container` (mount the popover's DOM under this element instead of `document.body`).
|
|
199
224
|
|
|
200
225
|
### IhelpIcon
|
|
201
226
|
|
package/db_setup_postgres.sql
CHANGED
|
@@ -14,6 +14,7 @@ CREATE TABLE IF NOT EXISTS hazo_ihelp_topics (
|
|
|
14
14
|
scope_id UUID, -- NULL = global, UUID = org-specific
|
|
15
15
|
category TEXT NOT NULL DEFAULT 'General',
|
|
16
16
|
title TEXT NOT NULL,
|
|
17
|
+
slug TEXT, -- URL-addressable path (e.g. getting-started/welcome)
|
|
17
18
|
description TEXT, -- short summary for search cards
|
|
18
19
|
content TEXT, -- rich HTML from Tiptap editor
|
|
19
20
|
icon TEXT, -- Lucide icon name
|
|
@@ -29,6 +30,7 @@ CREATE INDEX IF NOT EXISTS idx_hazo_ihelp_topics_scope ON hazo_ihelp_topics(s
|
|
|
29
30
|
CREATE INDEX IF NOT EXISTS idx_hazo_ihelp_topics_parent ON hazo_ihelp_topics(parent_id);
|
|
30
31
|
CREATE INDEX IF NOT EXISTS idx_hazo_ihelp_topics_tags ON hazo_ihelp_topics USING GIN (tags);
|
|
31
32
|
CREATE INDEX IF NOT EXISTS idx_hazo_ihelp_topics_contexts ON hazo_ihelp_topics USING GIN (contexts);
|
|
33
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_hazo_ihelp_topics_slug ON hazo_ihelp_topics(scope_id, slug) WHERE slug IS NOT NULL;
|
|
32
34
|
|
|
33
35
|
-- =============================================================================
|
|
34
36
|
-- JSON column shapes
|
package/db_setup_sqlite.sql
CHANGED
|
@@ -9,6 +9,7 @@ CREATE TABLE IF NOT EXISTS hazo_ihelp_topics (
|
|
|
9
9
|
scope_id TEXT, -- UUID, NULL = global
|
|
10
10
|
category TEXT NOT NULL DEFAULT 'General',
|
|
11
11
|
title TEXT NOT NULL,
|
|
12
|
+
slug TEXT, -- URL-addressable path
|
|
12
13
|
description TEXT,
|
|
13
14
|
content TEXT, -- rich HTML from Tiptap editor
|
|
14
15
|
icon TEXT, -- Lucide icon name
|
|
@@ -23,3 +24,4 @@ CREATE TABLE IF NOT EXISTS hazo_ihelp_topics (
|
|
|
23
24
|
|
|
24
25
|
CREATE INDEX IF NOT EXISTS idx_hazo_ihelp_topics_scope ON hazo_ihelp_topics(scope_id);
|
|
25
26
|
CREATE INDEX IF NOT EXISTS idx_hazo_ihelp_topics_parent ON hazo_ihelp_topics(parent_id);
|
|
27
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_hazo_ihelp_topics_slug ON hazo_ihelp_topics(scope_id, slug);
|
|
@@ -21,6 +21,13 @@ import { NextRequest, NextResponse } from 'next/server';
|
|
|
21
21
|
import type { IhelpApiResponse } from '../types/index.js';
|
|
22
22
|
export interface CreateConfigHandlerOptions {
|
|
23
23
|
getHazoConnect: () => Promise<any> | any;
|
|
24
|
+
/**
|
|
25
|
+
* Optional authorization hook, run before PUT. Resolve `false` or throw
|
|
26
|
+
* to reject the write with a 401. A no-op when omitted — PUT proceeds
|
|
27
|
+
* unchecked, preserving the pre-existing, unauthenticated behaviour.
|
|
28
|
+
* GET never calls this — config reads stay public.
|
|
29
|
+
*/
|
|
30
|
+
authorize?: (req: NextRequest) => Promise<boolean>;
|
|
24
31
|
}
|
|
25
32
|
export declare function createConfigHandler(options: CreateConfigHandlerOptions): {
|
|
26
33
|
GET: (request: NextRequest) => Promise<NextResponse<IhelpApiResponse>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create_config_handler.d.ts","sourceRoot":"","sources":["../../src/api/create_config_handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"create_config_handler.d.ts","sourceRoot":"","sources":["../../src/api/create_config_handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAWxD,OAAO,KAAK,EAAiB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AA0BzE,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACzC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACpD;AAkCD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B;mBAKzC,WAAW,KAAG,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;mBAiDrD,WAAW,KAAG,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;EA0ElF"}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import { NextResponse } from 'next/server';
|
|
21
21
|
import { createCrudService } from 'hazo_connect/server';
|
|
22
|
-
import { HazoError, HazoValidationError, generateRequestId, getCorrelationId, withContext, } from 'hazo_core';
|
|
22
|
+
import { HazoError, HazoAuthError, HazoValidationError, generateRequestId, getCorrelationId, withContext, } from 'hazo_core';
|
|
23
23
|
import { get_logger } from '../utils/logger.js';
|
|
24
24
|
function generateUUID() {
|
|
25
25
|
return generateRequestId().slice(4);
|
|
@@ -41,8 +41,36 @@ function handleError(logger, event, error) {
|
|
|
41
41
|
logger.error(event, { error: error instanceof Error ? error.message : String(error) });
|
|
42
42
|
return errResponse(error instanceof Error ? error.message : 'Internal server error', 500);
|
|
43
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Run the consumer-supplied `authorize` hook (if any) and reject the
|
|
46
|
+
* request with a `HazoAuthError` (401) when it resolves `false` or throws.
|
|
47
|
+
* Mirrors `create_ihelp_handler.ts`'s `ensureAuthorized`.
|
|
48
|
+
*/
|
|
49
|
+
async function ensureAuthorized(authorize, request) {
|
|
50
|
+
if (!authorize)
|
|
51
|
+
return;
|
|
52
|
+
let allowed;
|
|
53
|
+
try {
|
|
54
|
+
allowed = await authorize(request);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
throw new HazoAuthError({
|
|
58
|
+
code: 'HAZO_IHELP_UNAUTHORIZED',
|
|
59
|
+
pkg: 'hazo_ihelp',
|
|
60
|
+
message: 'Unauthorized',
|
|
61
|
+
cause: error instanceof Error ? error : undefined,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
if (!allowed) {
|
|
65
|
+
throw new HazoAuthError({
|
|
66
|
+
code: 'HAZO_IHELP_UNAUTHORIZED',
|
|
67
|
+
pkg: 'hazo_ihelp',
|
|
68
|
+
message: 'Unauthorized',
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
44
72
|
export function createConfigHandler(options) {
|
|
45
|
-
const { getHazoConnect } = options;
|
|
73
|
+
const { getHazoConnect, authorize } = options;
|
|
46
74
|
const logger = get_logger();
|
|
47
75
|
// GET ?config_key=context_keys&scope_id=...
|
|
48
76
|
async function GET(request) {
|
|
@@ -91,6 +119,7 @@ export function createConfigHandler(options) {
|
|
|
91
119
|
async function PUT(request) {
|
|
92
120
|
return withContext({ correlationId: getCorrelationId() ?? generateRequestId() }, async () => {
|
|
93
121
|
try {
|
|
122
|
+
await ensureAuthorized(authorize, request);
|
|
94
123
|
const adapter = await getHazoConnect();
|
|
95
124
|
const configService = createCrudService(adapter, 'hazo_config');
|
|
96
125
|
const body = await request.json();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create_config_handler.js","sourceRoot":"","sources":["../../src/api/create_config_handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAe,YAAY,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,GACZ,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAe,MAAM,oBAAoB,CAAC;AAG7D,SAAS,YAAY;IACnB,OAAO,iBAAiB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,MAAc;IAChD,OAAO,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAsB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,KAAa,EAAE,KAAc;IAChE,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC;QACvC,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5F,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvF,OAAO,WAAW,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;AAC5F,CAAC;
|
|
1
|
+
{"version":3,"file":"create_config_handler.js","sourceRoot":"","sources":["../../src/api/create_config_handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create_ihelp_handler.d.ts","sourceRoot":"","sources":["../../src/api/create_ihelp_handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"create_ihelp_handler.d.ts","sourceRoot":"","sources":["../../src/api/create_ihelp_handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAYxD,OAAO,KAAK,EACV,yBAAyB,EACzB,gBAAgB,EAChB,UAAU,EAIX,MAAM,mBAAmB,CAAC;AAgG3B;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB;mBAuCxD,WAAW,KACnB,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;oBA4H1D,WAAW,KACnB,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;qBA0F3C,WAAW,WACX;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,KAC5C,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;sBA8F3C,WAAW,WACX;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,KAC5C,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;EAoCjD"}
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
*/
|
|
27
27
|
import { NextResponse } from 'next/server';
|
|
28
28
|
import { createCrudService } from 'hazo_connect/server';
|
|
29
|
-
import { HazoError, HazoValidationError, HazoNotFoundError, generateRequestId, getCorrelationId, withContext, } from 'hazo_core';
|
|
29
|
+
import { HazoError, HazoAuthError, HazoValidationError, HazoNotFoundError, generateRequestId, getCorrelationId, withContext, } from 'hazo_core';
|
|
30
30
|
import { get_logger, set_logger } from '../utils/logger.js';
|
|
31
31
|
// ============================================================================
|
|
32
32
|
// Helper Functions
|
|
@@ -54,6 +54,35 @@ function handleError(logger, event, error) {
|
|
|
54
54
|
logger.error(event, { error: error instanceof Error ? error.message : String(error) });
|
|
55
55
|
return createErrorResponse('Internal server error', 500);
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Run the consumer-supplied `authorize` hook (if any) and reject the
|
|
59
|
+
* request with a `HazoAuthError` (401) when it resolves `false` or throws.
|
|
60
|
+
* A no-op when `authorize` is undefined — mutations proceed unchecked,
|
|
61
|
+
* preserving the pre-existing, unauthenticated behaviour.
|
|
62
|
+
*/
|
|
63
|
+
async function ensureAuthorized(authorize, request) {
|
|
64
|
+
if (!authorize)
|
|
65
|
+
return;
|
|
66
|
+
let allowed;
|
|
67
|
+
try {
|
|
68
|
+
allowed = await authorize(request);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
throw new HazoAuthError({
|
|
72
|
+
code: 'HAZO_IHELP_UNAUTHORIZED',
|
|
73
|
+
pkg: 'hazo_ihelp',
|
|
74
|
+
message: 'Unauthorized',
|
|
75
|
+
cause: error instanceof Error ? error : undefined,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
if (!allowed) {
|
|
79
|
+
throw new HazoAuthError({
|
|
80
|
+
code: 'HAZO_IHELP_UNAUTHORIZED',
|
|
81
|
+
pkg: 'hazo_ihelp',
|
|
82
|
+
message: 'Unauthorized',
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
57
86
|
/** Parse a JSON column value that may be a string or already parsed */
|
|
58
87
|
function parseJsonColumn(value) {
|
|
59
88
|
if (typeof value === 'string') {
|
|
@@ -76,7 +105,7 @@ function parseJsonColumn(value) {
|
|
|
76
105
|
* @returns Object with GET, POST, PATCH, and DELETE handlers
|
|
77
106
|
*/
|
|
78
107
|
export function createIhelpHandler(options) {
|
|
79
|
-
const { getHazoConnect, getLogger } = options;
|
|
108
|
+
const { getHazoConnect, getLogger, authorize } = options;
|
|
80
109
|
if (getLogger) {
|
|
81
110
|
// Consumer override — wire through the package-level logger.
|
|
82
111
|
set_logger(getLogger());
|
|
@@ -113,14 +142,15 @@ export function createIhelpHandler(options) {
|
|
|
113
142
|
try {
|
|
114
143
|
const searchParams = request.nextUrl.searchParams;
|
|
115
144
|
const id = searchParams.get('id');
|
|
145
|
+
const slug = searchParams.get('slug');
|
|
116
146
|
const context_key = searchParams.get('context_key');
|
|
117
147
|
const scope_id = searchParams.get('scope_id');
|
|
118
148
|
const category = searchParams.get('category');
|
|
119
149
|
const search = searchParams.get('search');
|
|
120
|
-
logger.debug('topic.list.request', { id, context_key, scope_id, category, search });
|
|
150
|
+
logger.debug('topic.list.request', { id, slug, context_key, scope_id, category, search });
|
|
121
151
|
const adapter = await getHazoConnect();
|
|
122
152
|
const topicsService = createCrudService(adapter, 'hazo_ihelp_topics');
|
|
123
|
-
// ---- Single topic fetch ----
|
|
153
|
+
// ---- Single topic fetch by id ----
|
|
124
154
|
if (id) {
|
|
125
155
|
const topic = await topicsService.findById(id);
|
|
126
156
|
if (!topic) {
|
|
@@ -133,6 +163,28 @@ export function createIhelpHandler(options) {
|
|
|
133
163
|
}
|
|
134
164
|
return NextResponse.json({ success: true, data: normaliseTopic(topic) });
|
|
135
165
|
}
|
|
166
|
+
// ---- Single topic fetch by slug ----
|
|
167
|
+
if (slug) {
|
|
168
|
+
const rows = await topicsService.list((qb) => {
|
|
169
|
+
let q = qb.where('slug', 'eq', slug);
|
|
170
|
+
if (scope_id) {
|
|
171
|
+
q = q.whereOr([
|
|
172
|
+
{ field: 'scope_id', operator: 'is', value: null },
|
|
173
|
+
{ field: 'scope_id', operator: 'eq', value: scope_id },
|
|
174
|
+
]);
|
|
175
|
+
}
|
|
176
|
+
return q;
|
|
177
|
+
});
|
|
178
|
+
if (rows.length === 0) {
|
|
179
|
+
throw new HazoNotFoundError({
|
|
180
|
+
code: 'HAZO_IHELP_TOPIC_NOT_FOUND',
|
|
181
|
+
pkg: 'hazo_ihelp',
|
|
182
|
+
message: 'Topic not found',
|
|
183
|
+
context: { slug },
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
return NextResponse.json({ success: true, data: normaliseTopic(rows[0]) });
|
|
187
|
+
}
|
|
136
188
|
// ---- Context key lookup ----
|
|
137
189
|
if (context_key) {
|
|
138
190
|
// Fetch all topics, filter by context key in application code
|
|
@@ -196,6 +248,7 @@ export function createIhelpHandler(options) {
|
|
|
196
248
|
async function POST(request) {
|
|
197
249
|
return withContext({ correlationId: getCorrelationId() ?? generateRequestId() }, async () => {
|
|
198
250
|
try {
|
|
251
|
+
await ensureAuthorized(authorize, request);
|
|
199
252
|
const body = (await request.json());
|
|
200
253
|
if (!body.title) {
|
|
201
254
|
throw new HazoValidationError({
|
|
@@ -238,6 +291,7 @@ export function createIhelpHandler(options) {
|
|
|
238
291
|
scope_id: body.scope_id ?? null,
|
|
239
292
|
category: body.category ?? '',
|
|
240
293
|
title: body.title,
|
|
294
|
+
slug: body.slug ?? null,
|
|
241
295
|
description: body.description ?? null,
|
|
242
296
|
content: body.content ?? null,
|
|
243
297
|
icon: body.icon ?? null,
|
|
@@ -282,6 +336,7 @@ export function createIhelpHandler(options) {
|
|
|
282
336
|
message: 'id is required',
|
|
283
337
|
});
|
|
284
338
|
}
|
|
339
|
+
await ensureAuthorized(authorize, request);
|
|
285
340
|
const body = (await request.json());
|
|
286
341
|
logger.debug('topic.update.request', { id });
|
|
287
342
|
const adapter = await getHazoConnect();
|
|
@@ -296,6 +351,8 @@ export function createIhelpHandler(options) {
|
|
|
296
351
|
patch.category = body.category;
|
|
297
352
|
if (body.title !== undefined)
|
|
298
353
|
patch.title = body.title;
|
|
354
|
+
if (body.slug !== undefined)
|
|
355
|
+
patch.slug = body.slug;
|
|
299
356
|
if (body.description !== undefined)
|
|
300
357
|
patch.description = body.description;
|
|
301
358
|
if (body.content !== undefined)
|
|
@@ -371,6 +428,7 @@ export function createIhelpHandler(options) {
|
|
|
371
428
|
message: 'id is required',
|
|
372
429
|
});
|
|
373
430
|
}
|
|
431
|
+
await ensureAuthorized(authorize, request);
|
|
374
432
|
logger.debug('topic.delete.request', { id });
|
|
375
433
|
const adapter = await getHazoConnect();
|
|
376
434
|
const topicsService = createCrudService(adapter, 'hazo_ihelp_topics');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create_ihelp_handler.js","sourceRoot":"","sources":["../../src/api/create_ihelp_handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create_ihelp_handler.js","sourceRoot":"","sources":["../../src/api/create_ihelp_handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor_context_keys_section.d.ts","sourceRoot":"","sources":["../../../src/components/editor/editor_context_keys_section.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"editor_context_keys_section.d.ts","sourceRoot":"","sources":["../../../src/components/editor/editor_context_keys_section.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAa7D,UAAU,6BAA6B;IACrC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,gBAAgB,EAAE,CAAC;IACnC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;CACnD;AAwMD,wBAAgB,wBAAwB,CAAC,EACvC,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,WAAW,EACX,KAAK,EACL,QAAQ,EACR,YAAY,GACb,EAAE,6BAA6B,qBAwE/B"}
|
|
@@ -2,10 +2,13 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useState, useCallback, useRef, useEffect, useMemo } from 'react';
|
|
4
4
|
import { Key, X, ChevronDown, Plus, Settings2 } from 'lucide-react';
|
|
5
|
+
import { createPackageT } from 'hazo_core/i18n';
|
|
5
6
|
import { Badge } from '../ui/badge.js';
|
|
6
7
|
import { Button } from '../ui/button.js';
|
|
7
8
|
import { Input } from '../ui/input.js';
|
|
8
9
|
import { CollapsibleSection } from './editor_collapsible_section.js';
|
|
10
|
+
import en from '../../locales/en.json' with { type: 'json' };
|
|
11
|
+
const t = createPackageT('hazo_ihelp', en);
|
|
9
12
|
// ---------------------------------------------------------------------------
|
|
10
13
|
// Searchable dropdown for selecting from available keys
|
|
11
14
|
// ---------------------------------------------------------------------------
|
|
@@ -40,14 +43,14 @@ function ContextKeyDropdown({ available_keys, assigned_keys, onSelect, }) {
|
|
|
40
43
|
if (!open)
|
|
41
44
|
setTimeout(() => inputRef.current?.focus(), 0);
|
|
42
45
|
}, children: [_jsx("input", { ref: inputRef, value: filter, onChange: (e) => { set_filter(e.target.value); if (!open)
|
|
43
|
-
set_open(true); }, onFocus: () => set_open(true), placeholder:
|
|
46
|
+
set_open(true); }, onFocus: () => set_open(true), placeholder: t('editor_context_keys.dropdown_placeholder'), className: "flex-1 bg-transparent outline-none placeholder:text-muted-foreground/50 text-xs", onKeyDown: (e) => {
|
|
44
47
|
if (e.key === 'Enter' && filtered.length === 1) {
|
|
45
48
|
e.preventDefault();
|
|
46
49
|
handleSelect(filtered[0].key);
|
|
47
50
|
}
|
|
48
51
|
if (e.key === 'Escape')
|
|
49
52
|
set_open(false);
|
|
50
|
-
} }), _jsx(ChevronDown, { className: "h-3 w-3 text-muted-foreground ml-1 shrink-0" })] }), open && (_jsx("div", { className: "absolute z-50 mt-1 w-full rounded-md border bg-popover shadow-md max-h-48 overflow-y-auto", style: { backgroundColor: 'var(--popover, #ffffff)' }, children: filtered.length === 0 ? (_jsx("div", { className: "px-3 py-2 text-xs text-muted-foreground", children: available_keys.length === 0 ? '
|
|
53
|
+
} }), _jsx(ChevronDown, { className: "h-3 w-3 text-muted-foreground ml-1 shrink-0" })] }), open && (_jsx("div", { className: "absolute z-50 mt-1 w-full rounded-md border bg-popover shadow-md max-h-48 overflow-y-auto", style: { backgroundColor: 'var(--popover, #ffffff)' }, children: filtered.length === 0 ? (_jsx("div", { className: "px-3 py-2 text-xs text-muted-foreground", children: available_keys.length === 0 ? t('editor_context_keys.no_keys_defined') : t('editor_context_keys.no_matching_keys') })) : (filtered.map((opt) => (_jsxs("button", { type: "button", className: "w-full px-3 py-1.5 text-left text-xs hover:bg-accent hover:text-accent-foreground flex flex-col", onClick: () => handleSelect(opt.key), children: [_jsx("span", { className: "font-medium", children: opt.label }), _jsx("span", { className: "text-[10px] text-muted-foreground", children: opt.key })] }, opt.key)))) }))] }));
|
|
51
54
|
}
|
|
52
55
|
// ---------------------------------------------------------------------------
|
|
53
56
|
// Manage keys dialog (inline popover)
|
|
@@ -79,13 +82,13 @@ function ManageKeysPopover({ available_keys, onSave, onClose, }) {
|
|
|
79
82
|
const handleRemove = (key) => {
|
|
80
83
|
set_keys((prev) => prev.filter((x) => x.key !== key));
|
|
81
84
|
};
|
|
82
|
-
return (_jsxs("div", { ref: ref, className: "absolute z-50 right-0 top-full mt-1 w-80 rounded-md border bg-popover p-3 shadow-lg", style: { backgroundColor: 'var(--popover, #ffffff)' }, children: [_jsx("p", { className: "text-xs font-semibold mb-2", children:
|
|
85
|
+
return (_jsxs("div", { ref: ref, className: "absolute z-50 right-0 top-full mt-1 w-80 rounded-md border bg-popover p-3 shadow-lg", style: { backgroundColor: 'var(--popover, #ffffff)' }, children: [_jsx("p", { className: "text-xs font-semibold mb-2", children: t('editor_context_keys.manage_popover_title') }), _jsxs("div", { className: "max-h-40 overflow-y-auto space-y-1 mb-3", children: [keys.map((opt) => (_jsxs("div", { className: "flex items-center justify-between gap-2 text-xs py-0.5", children: [_jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("span", { className: "font-medium", children: opt.label }), _jsxs("span", { className: "text-muted-foreground ml-1", children: ["(", opt.key, ")"] })] }), _jsx("button", { type: "button", onClick: () => handleRemove(opt.key), className: "shrink-0 text-muted-foreground hover:text-destructive", children: _jsx(X, { className: "h-3 w-3" }) })] }, opt.key))), keys.length === 0 && (_jsx("p", { className: "text-xs text-muted-foreground py-1", children: t('editor_context_keys.manage_no_keys') }))] }), _jsxs("div", { className: "flex gap-1.5 mb-2", children: [_jsx(Input, { value: new_key, onChange: (e) => set_new_key(e.target.value), placeholder: t('editor_context_keys.new_key_placeholder'), className: "h-7 text-xs flex-1", onKeyDown: (e) => { if (e.key === 'Enter') {
|
|
83
86
|
e.preventDefault();
|
|
84
87
|
handleAdd();
|
|
85
|
-
} } }), _jsx(Input, { value: new_label, onChange: (e) => set_new_label(e.target.value), placeholder:
|
|
88
|
+
} } }), _jsx(Input, { value: new_label, onChange: (e) => set_new_label(e.target.value), placeholder: t('editor_context_keys.new_label_placeholder'), className: "h-7 text-xs flex-1", onKeyDown: (e) => { if (e.key === 'Enter') {
|
|
86
89
|
e.preventDefault();
|
|
87
90
|
handleAdd();
|
|
88
|
-
} } }), _jsx(Button, { type: "button", size: "sm", variant: "outline", className: "h-7 px-2", onClick: handleAdd, disabled: !new_key.trim() || !new_label.trim(), children: _jsx(Plus, { className: "h-3 w-3" }) })] }), _jsxs("div", { className: "flex justify-end gap-2", children: [_jsx(Button, { type: "button", size: "sm", variant: "ghost", className: "h-7 text-xs", onClick: onClose, children:
|
|
91
|
+
} } }), _jsx(Button, { type: "button", size: "sm", variant: "outline", className: "h-7 px-2", onClick: handleAdd, disabled: !new_key.trim() || !new_label.trim(), children: _jsx(Plus, { className: "h-3 w-3" }) })] }), _jsxs("div", { className: "flex justify-end gap-2", children: [_jsx(Button, { type: "button", size: "sm", variant: "ghost", className: "h-7 text-xs", onClick: onClose, children: t('editor_context_keys.cancel') }), _jsx(Button, { type: "button", size: "sm", className: "h-7 text-xs", onClick: () => { onSave(keys); onClose(); }, children: t('editor_context_keys.save') })] })] }));
|
|
89
92
|
}
|
|
90
93
|
// ---------------------------------------------------------------------------
|
|
91
94
|
// Main component
|
|
@@ -94,6 +97,6 @@ export function EditorContextKeysSection({ context_keys, available_keys, availab
|
|
|
94
97
|
const [manage_open, set_manage_open] = useState(false);
|
|
95
98
|
// Resolve label for a key
|
|
96
99
|
const labelFor = useCallback((key) => available_keys.find((o) => o.key === key)?.label ?? key, [available_keys]);
|
|
97
|
-
return (_jsx(CollapsibleSection, { icon: _jsx(Key, { className: "h-3.5 w-3.5" }), label:
|
|
100
|
+
return (_jsx(CollapsibleSection, { icon: _jsx(Key, { className: "h-3.5 w-3.5" }), label: t('editor_context_keys.section_label'), badge: context_keys.length > 0 ? String(context_keys.length) : undefined, defaultOpen: defaultOpen, children: _jsxs("div", { className: "space-y-3", children: [context_keys.length > 0 && (_jsx("div", { className: "flex flex-wrap gap-1.5", children: context_keys.map((key, idx) => (_jsxs(Badge, { variant: "default", children: [labelFor(key), _jsx("button", { type: "button", className: "ml-1 rounded-full hover:bg-black/10", onClick: () => onRemove(idx), title: t('editor_context_keys.remove_key_title', { key }), children: _jsx(X, { className: "h-3 w-3" }) })] }, idx))) })), _jsxs("div", { className: "relative flex items-end gap-2", children: [available_keys_loading ? (_jsx("div", { className: "h-8 flex-1 flex items-center text-xs text-muted-foreground", children: t('editor_context_keys.loading_keys') })) : (_jsx(ContextKeyDropdown, { available_keys: available_keys, assigned_keys: context_keys, onSelect: onAdd })), onManageKeys && (_jsx(Button, { type: "button", size: "sm", variant: "ghost", className: "h-8 w-8 p-0 shrink-0", onClick: () => set_manage_open(!manage_open), title: t('editor_context_keys.manage_button_title'), children: _jsx(Settings2, { className: "h-3.5 w-3.5" }) })), manage_open && onManageKeys && (_jsx(ManageKeysPopover, { available_keys: available_keys, onSave: onManageKeys, onClose: () => set_manage_open(false) }))] })] }) }));
|
|
98
101
|
}
|
|
99
102
|
//# sourceMappingURL=editor_context_keys_section.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor_context_keys_section.js","sourceRoot":"","sources":["../../../src/components/editor/editor_context_keys_section.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"editor_context_keys_section.js","sourceRoot":"","sources":["../../../src/components/editor/editor_context_keys_section.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor_form.d.ts","sourceRoot":"","sources":["../../../src/components/editor/editor_form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"editor_form.d.ts","sourceRoot":"","sources":["../../../src/components/editor/editor_form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAgBzG,UAAU,eAAe;IACvB,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,CAAC,CAAC,SAAS,MAAM,eAAe,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC5F,QAAQ,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IACvC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,sBAAsB,EAAE,gBAAgB,EAAE,CAAC;IAC3C,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,IAAI,CAAC;IACzD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,SAAS,EACT,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,UAAU,EACV,WAAW,EACX,MAAM,EACN,UAAU,EACV,aAAa,EACb,QAAQ,EACR,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,8BAA8B,EAC9B,mBAAmB,EACnB,MAAM,EACN,QAAQ,EACR,UAAU,EACV,QAAQ,GACT,EAAE,eAAe,qBA6NjB"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useMemo } from 'react';
|
|
4
4
|
import { Save, Trash2, Settings } from 'lucide-react';
|
|
5
|
+
import { createPackageT } from 'hazo_core/i18n';
|
|
5
6
|
import { cn } from 'hazo_ui';
|
|
6
7
|
import { Button } from '../ui/button.js';
|
|
7
8
|
import { Input } from '../ui/input.js';
|
|
@@ -12,14 +13,16 @@ import { IhelpRichEditor } from '../ihelp_rich_editor.js';
|
|
|
12
13
|
import { CollapsibleSection } from './editor_collapsible_section.js';
|
|
13
14
|
import { EditorTagsSection } from './editor_tags_section.js';
|
|
14
15
|
import { EditorContextKeysSection } from './editor_context_keys_section.js';
|
|
16
|
+
import en from '../../locales/en.json' with { type: 'json' };
|
|
17
|
+
const t = createPackageT('hazo_ihelp', en);
|
|
15
18
|
export function EditorForm({ form, form_tags, form_context_keys, is_new, saving, save_error, selected_id, topics, categories, onUpdateField, onAddTag, onRemoveTag, onAddContextKey, onRemoveContextKey, available_context_keys, available_context_keys_loading, onManageContextKeys, onSave, onDelete, upload_url, scope_id, }) {
|
|
16
19
|
const parent_name = useMemo(() => {
|
|
17
20
|
if (!form.parent_id)
|
|
18
21
|
return null;
|
|
19
22
|
return topics.find((t) => t.id === form.parent_id)?.title ?? null;
|
|
20
23
|
}, [form.parent_id, topics]);
|
|
21
|
-
return (_jsxs("div", { className: "flex flex-1 flex-col overflow-y-auto", children: [_jsxs("div", { className: "sticky top-0 z-10 flex items-center justify-between border-b bg-background/95 px-6 py-3 backdrop-blur-sm", children: [_jsx("span", { className: "text-xs font-semibold uppercase tracking-widest text-muted-foreground", children: is_new ? '
|
|
24
|
+
return (_jsxs("div", { className: "flex flex-1 flex-col overflow-y-auto", children: [_jsxs("div", { className: "sticky top-0 z-10 flex items-center justify-between border-b bg-background/95 px-6 py-3 backdrop-blur-sm", children: [_jsx("span", { className: "text-xs font-semibold uppercase tracking-widest text-muted-foreground", children: is_new ? t('editor_form.title_new') : t('editor_form.title_edit') }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Switch, { id: "ihelp-ed-published", checked: form.is_published ?? false, onCheckedChange: (val) => onUpdateField('is_published', val) }), _jsx("label", { htmlFor: "ihelp-ed-published", className: cn('text-xs font-medium transition-colors', form.is_published ? 'text-emerald-600' : 'text-muted-foreground'), children: form.is_published ? t('editor_form.published') : t('editor_form.draft') })] }), _jsxs(Button, { size: "sm", onClick: onSave, disabled: saving || !form.title.trim(), className: "h-8", children: [_jsx(Save, { className: "mr-1.5 h-3.5 w-3.5" }), saving ? t('editor_form.saving') : is_new ? t('editor_form.create') : t('editor_form.save')] }), !is_new && selected_id && (_jsx(Button, { size: "sm", variant: "ghost", onClick: onDelete, disabled: saving, className: "h-8 w-8 p-0 text-destructive hover:bg-destructive/10 hover:text-destructive", title: t('editor_form.delete_topic_title'), children: _jsx(Trash2, { className: "h-3.5 w-3.5" }) }))] })] }), _jsxs("div", { className: "flex-1 px-6 py-5", children: [save_error && (_jsx("p", { className: "mb-4 rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-sm text-destructive", children: save_error })), _jsx("input", { value: form.title, onChange: (e) => onUpdateField('title', e.target.value), placeholder: t('editor_form.title_placeholder'), className: "w-full border-0 bg-transparent text-2xl font-bold tracking-tight text-foreground outline-none placeholder:text-muted-foreground/30" }), _jsxs("div", { className: "mt-1 flex items-center gap-1.5", children: [_jsx("span", { className: "text-xs text-muted-foreground/60", children: t('editor_form.slug_prefix') }), _jsx("input", { value: form.slug ?? '', onChange: (e) => onUpdateField('slug', e.target.value || null), placeholder: t('editor_form.slug_placeholder'), className: "border-0 bg-transparent text-sm font-mono text-muted-foreground outline-none placeholder:text-muted-foreground/30" })] }), _jsxs("div", { className: "mt-1 flex items-center gap-1.5", children: [_jsx("span", { className: "text-xs text-muted-foreground/60", children: t('editor_form.category_prefix') }), _jsx("input", { value: form.category ?? '', onChange: (e) => onUpdateField('category', e.target.value), placeholder: t('editor_form.category_placeholder'), list: "ihelp-ed-categories", className: "border-0 bg-transparent text-sm text-muted-foreground outline-none placeholder:text-muted-foreground/30" }), _jsx("datalist", { id: "ihelp-ed-categories", children: categories.map((c) => (_jsx("option", { value: c }, c))) })] }), _jsx("textarea", { value: form.description ?? '', onChange: (e) => onUpdateField('description', e.target.value), placeholder: t('editor_form.description_placeholder'), rows: 2, className: "mt-4 w-full resize-none border-0 bg-transparent text-sm text-muted-foreground outline-none placeholder:text-muted-foreground/30" }), _jsx("div", { className: "mt-4", children: _jsx(IhelpRichEditor, { content: form.content ?? '', onChange: (html) => onUpdateField('content', html), placeholder: t('editor_form.content_placeholder'), className: "min-h-[300px]", upload_url: upload_url, scope_id: scope_id ?? undefined }) }), _jsxs("div", { className: "mt-6", children: [_jsx(CollapsibleSection, { icon: _jsx(Settings, { className: "h-3.5 w-3.5" }), label: t('editor_form.settings_label'), badge: parent_name ? t('editor_form.parent_badge', { name: parent_name }) : undefined, defaultOpen: is_new, children: _jsxs("div", { className: "grid grid-cols-2 gap-4", children: [_jsxs("div", { className: "col-span-2 space-y-1", children: [_jsx(Label, { className: "text-xs", children: t('editor_form.parent_topic_label') }), _jsxs(Select, { value: form.parent_id ?? '__none__', onValueChange: (val) => onUpdateField('parent_id', val === '__none__' ? null : val), children: [_jsx(SelectTrigger, { className: "h-9", children: _jsx(SelectValue, { placeholder: t('editor_form.none_root_level') }) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "__none__", children: t('editor_form.none_root_level') }), topics
|
|
22
25
|
.filter((t) => t.id !== selected_id)
|
|
23
|
-
.map((t) => (_jsx(SelectItem, { value: t.id, children: t.title }, t.id)))] })] })] }), _jsxs("div", { className: "space-y-1", children: [_jsx(Label, { className: "text-xs", children:
|
|
26
|
+
.map((t) => (_jsx(SelectItem, { value: t.id, children: t.title }, t.id)))] })] })] }), _jsxs("div", { className: "space-y-1", children: [_jsx(Label, { className: "text-xs", children: t('editor_form.sort_order_label') }), _jsx(Input, { type: "number", value: form.sort_order ?? 0, onChange: (e) => onUpdateField('sort_order', parseInt(e.target.value, 10) || 0), className: "h-9" })] }), _jsxs("div", { className: "space-y-1", children: [_jsx(Label, { className: "text-xs", children: t('editor_form.icon_label') }), _jsx(Input, { value: form.icon ?? '', onChange: (e) => onUpdateField('icon', e.target.value), placeholder: t('editor_form.icon_placeholder'), className: "h-9" })] }), _jsxs("div", { className: "col-span-2 space-y-1", children: [_jsx(Label, { className: "text-xs", children: t('editor_form.scope_id_label') }), _jsx(Input, { value: form.scope_id ?? '', onChange: (e) => onUpdateField('scope_id', e.target.value || null), placeholder: t('editor_form.scope_id_placeholder'), className: "h-9" })] })] }) }), _jsx(EditorTagsSection, { tags: form_tags, defaultOpen: is_new, onAdd: onAddTag, onRemove: onRemoveTag }), _jsx(EditorContextKeysSection, { context_keys: form_context_keys, available_keys: available_context_keys, available_keys_loading: available_context_keys_loading, defaultOpen: is_new, onAdd: onAddContextKey, onRemove: onRemoveContextKey, onManageKeys: onManageContextKeys })] })] })] }));
|
|
24
27
|
}
|
|
25
28
|
//# sourceMappingURL=editor_form.js.map
|