hazo_ihelp 2.0.4 → 2.0.9

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 ADDED
@@ -0,0 +1,236 @@
1
+ # hazo_ihelp
2
+
3
+ Contextual popup help system for React/Next.js applications. Provides hierarchical help topics, rich HTML content, context-aware search, and a full CRUD editor.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install hazo_ihelp
9
+ ```
10
+
11
+ ### Peer Dependencies
12
+
13
+ | Package | Required | Notes |
14
+ |---------|----------|-------|
15
+ | `react` | ^18 or ^19 | Required |
16
+ | `react-dom` | ^18 or ^19 | Required |
17
+ | `tailwindcss` | >=3.0.0 | Required for styling |
18
+ | `@tailwindcss/typography` | >=0.5.0 | Required — `prose` classes for rich content rendering |
19
+ | `next` | >=14.0.0 | Optional — needed for API handlers |
20
+ | `hazo_connect` | >=2.4.0 | Optional — needed for API handlers |
21
+
22
+ ## Tailwind v4 Setup (Required)
23
+
24
+ hazo_ihelp uses Tailwind utility classes internally. Tailwind v4's JIT compiler only scans your project files by default — it does **not** scan `node_modules/`. You must add a `@source` directive so Tailwind generates CSS for the package's classes.
25
+
26
+ In your `globals.css`, add this after the tailwind import:
27
+
28
+ ```css
29
+ @import "tailwindcss";
30
+
31
+ /* Required: tell Tailwind to scan hazo_ihelp for utility classes */
32
+ @source "../node_modules/hazo_ihelp/dist";
33
+ ```
34
+
35
+ Adjust the relative path if your CSS file is not at the standard `app/globals.css` location.
36
+
37
+ **Without this directive**, the Help dialog will render with correct structure and dark theme colors (these use inline styles), but will have:
38
+ - Missing hover effects on topic cards
39
+ - Inconsistent spacing and padding in inner content
40
+ - Unstyled badges and tags
41
+ - Missing scrollbar customization
42
+ - **Rich content appears as plain text** — headings, bullet points, bold, and other formatting will be invisible because Tailwind's `prose` classes are not compiled
43
+
44
+ ### Tailwind Typography Plugin (Required)
45
+
46
+ The rich content editor and Help dialog use Tailwind's `prose` classes to render HTML content (headings, lists, bold, etc.). Install the typography plugin:
47
+
48
+ ```bash
49
+ npm install @tailwindcss/typography
50
+ ```
51
+
52
+ Tailwind v4 auto-detects installed plugins. For Tailwind v3, add it to your `tailwind.config.js` plugins array.
53
+
54
+ **Without this plugin**, imported or authored rich content will appear as unstyled plain text — all formatting (headings, bullet points, bold) will be invisible even though the HTML is preserved correctly in the database.
55
+
56
+ ## Quick Start
57
+
58
+ ### 1. Run the database migration
59
+
60
+ Execute the SQL migration to create the required tables:
61
+
62
+ ```bash
63
+ # The migration file is included in the package
64
+ cat node_modules/hazo_ihelp/migrations/001_create_ihelp_tables.sql
65
+ ```
66
+
67
+ This creates two tables:
68
+ - `hazo_ihelp_topics` — help topics with tags and context mappings stored as JSON columns
69
+ - `hazo_config` — key-value configuration store (scoped)
70
+
71
+ The migration file documents both **SQLite** and **PostgreSQL** variants:
72
+
73
+ | Column | SQLite | PostgreSQL |
74
+ |--------|--------|------------|
75
+ | `id` | TEXT (UUID string) | UUID (gen_random_uuid) |
76
+ | `scope_id` | TEXT | UUID |
77
+ | `is_published` | INTEGER (0/1) | BOOLEAN |
78
+ | `tags` | TEXT (JSON string) | JSONB |
79
+ | `contexts` | TEXT (JSON string) | JSONB |
80
+ | `created_at` | TEXT (datetime) | TIMESTAMPTZ |
81
+
82
+ ### 2. Set up API routes (Next.js)
83
+
84
+ ```typescript
85
+ // app/api/ihelp/topics/route.ts
86
+ import { createIhelpHandler } from 'hazo_ihelp/api';
87
+ import { getHazoConnectSingleton } from 'hazo_connect/nextjs/setup';
88
+
89
+ export const dynamic = 'force-dynamic';
90
+
91
+ const { GET, POST } = createIhelpHandler({
92
+ getHazoConnect: () => getHazoConnectSingleton(),
93
+ });
94
+
95
+ export { GET, POST };
96
+ ```
97
+
98
+ ```typescript
99
+ // app/api/ihelp/topics/[id]/route.ts
100
+ import { createIhelpHandler } from 'hazo_ihelp/api';
101
+ import { getHazoConnectSingleton } from 'hazo_connect/nextjs/setup';
102
+
103
+ export const dynamic = 'force-dynamic';
104
+
105
+ const { PATCH, DELETE } = createIhelpHandler({
106
+ getHazoConnect: () => getHazoConnectSingleton(),
107
+ });
108
+
109
+ export { PATCH, DELETE };
110
+ ```
111
+
112
+ ### 3. Add the Provider
113
+
114
+ Wrap your app (or a subtree) with `IhelpProvider`:
115
+
116
+ ```tsx
117
+ import { IhelpProvider } from 'hazo_ihelp';
118
+
119
+ export default function Layout({ children }) {
120
+ return (
121
+ <IhelpProvider api_base_url="/api/ihelp/topics">
122
+ {children}
123
+ </IhelpProvider>
124
+ );
125
+ }
126
+ ```
127
+
128
+ ### 4. Add help icons to your forms
129
+
130
+ ```tsx
131
+ import { IhelpIcon } from 'hazo_ihelp';
132
+
133
+ function MyFormField() {
134
+ return (
135
+ <label>
136
+ Salary & Wages
137
+ <IhelpIcon context_key="tax.salary_wages" />
138
+ </label>
139
+ );
140
+ }
141
+ ```
142
+
143
+ Clicking the icon opens the Help search dialog, pre-filtered to topics mapped to that context key.
144
+
145
+ ## Components
146
+
147
+ ### IhelpProvider
148
+
149
+ Context provider that supplies topics, search, and keyboard shortcuts to all child components.
150
+
151
+ ```tsx
152
+ <IhelpProvider
153
+ api_base_url="/api/ihelp/topics" // Base URL for the topics API
154
+ scope_id="org-uuid" // Optional: multi-tenant scoping
155
+ search_shortcut="mod+k" // Optional: keyboard shortcut (default: mod+k)
156
+ asset_base_url="/api/ihelp/assets" // Optional: base URL for topic images
157
+ theme={{ // Optional: override default dark theme
158
+ background: '#1a2332',
159
+ foreground: '#e2e8f0',
160
+ muted_foreground: '#94a3b8',
161
+ border: '#2d3f56',
162
+ accent: '#253347',
163
+ primary: '#38bdf8',
164
+ }}
165
+ labels={{ // Optional: UI label overrides
166
+ search_placeholder: 'Search help topics...',
167
+ dialog_title: 'Help',
168
+ }}
169
+ >
170
+ {children}
171
+ </IhelpProvider>
172
+ ```
173
+
174
+ ### IhelpIcon
175
+
176
+ Small trigger button that opens the Help dialog for a specific context key.
177
+
178
+ ```tsx
179
+ <IhelpIcon context_key="deductions.work_from_home" size={16} />
180
+ ```
181
+
182
+ ### IhelpSearchDialog
183
+
184
+ The Help search dialog. Usually opened via IhelpIcon or keyboard shortcut, but can be controlled directly:
185
+
186
+ ```tsx
187
+ <IhelpSearchDialog
188
+ open={isOpen}
189
+ onOpenChange={setIsOpen}
190
+ initial_context_key="tax.dividends"
191
+ />
192
+ ```
193
+
194
+ ### IhelpEditor
195
+
196
+ Full CRUD editor for managing help topics (tags and context mappings are embedded JSON on each topic).
197
+
198
+ ```tsx
199
+ <IhelpEditor
200
+ api_url="/api/ihelp/topics" // Topics API URL (default: /api/ihelp)
201
+ upload_url="/api/ihelp/upload" // Optional: image upload endpoint
202
+ config_api_url="/api/ihelp/config" // Optional: context key config endpoint
203
+ scope_id="org-uuid" // Optional: multi-tenant scoping
204
+ />
205
+ ```
206
+
207
+ ## Exports
208
+
209
+ | Import path | Contents |
210
+ |-------------|----------|
211
+ | `hazo_ihelp` | Client components: `IhelpProvider`, `IhelpIcon`, `IhelpSearchDialog`, `IhelpDetailPanel` |
212
+ | `hazo_ihelp/api` | Server handlers: `createIhelpHandler`, `createImageUploadHandler`, `createConfigHandler` |
213
+ | `hazo_ihelp/hooks` | Hooks: `use_ihelp`, `use_ihelp_search`, `use_ihelp_editor`, `use_ihelp_config` |
214
+ | `hazo_ihelp/components` | All components including `IhelpEditor` and UI primitives |
215
+ | `hazo_ihelp/types` | TypeScript type definitions |
216
+
217
+ ## Theme
218
+
219
+ The Help dialog ships with a built-in dark theme that works out of the box. Pass a `theme` prop to `IhelpProvider` to override:
220
+
221
+ ```tsx
222
+ const customTheme = {
223
+ background: '#1a2332', // Dialog background
224
+ foreground: '#e2e8f0', // Primary text
225
+ muted_foreground: '#94a3b8', // Secondary text
226
+ border: '#2d3f56', // Border color
227
+ accent: '#253347', // Hover background
228
+ primary: '#38bdf8', // Accent color (links, highlights)
229
+ };
230
+
231
+ <IhelpProvider theme={customTheme}>
232
+ ```
233
+
234
+ ## License
235
+
236
+ MIT
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * iHelp API Handler Factory
3
3
  *
4
- * Creates GET, POST, PATCH, and DELETE handlers for ihelp topic endpoints.
5
- * These handlers should be used in a Next.js API route.
4
+ * Creates GET, POST, PATCH, and DELETE handlers for hazo_ihelp_topics.
5
+ * Tags and context mappings are stored as JSON columns directly on the
6
+ * topics table — no separate join tables required.
6
7
  *
7
8
  * @example
8
9
  * ```typescript
@@ -1 +1 @@
1
- {"version":3,"file":"create_ihelp_handler.d.ts","sourceRoot":"","sources":["../../src/api/create_ihelp_handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EACV,yBAAyB,EACzB,gBAAgB,EAChB,UAAU,EAIX,MAAM,mBAAmB,CAAC;AA2C3B;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB;mBA0CxD,WAAW,KACnB,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;oBAsG1D,WAAW,KACnB,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;qBAoF3C,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;sBAqG3C,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;EA8BjD"}
1
+ {"version":3,"file":"create_ihelp_handler.d.ts","sourceRoot":"","sources":["../../src/api/create_ihelp_handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EACV,yBAAyB,EACzB,gBAAgB,EAChB,UAAU,EAIX,MAAM,mBAAmB,CAAC;AAwD3B;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB;mBAmCxD,WAAW,KACnB,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC;oBAgG1D,WAAW,KACnB,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;qBAiF3C,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;sBAgF3C,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;EA6BjD"}
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * iHelp API Handler Factory
3
3
  *
4
- * Creates GET, POST, PATCH, and DELETE handlers for ihelp topic endpoints.
5
- * These handlers should be used in a Next.js API route.
4
+ * Creates GET, POST, PATCH, and DELETE handlers for hazo_ihelp_topics.
5
+ * Tags and context mappings are stored as JSON columns directly on the
6
+ * topics table — no separate join tables required.
6
7
  *
7
8
  * @example
8
9
  * ```typescript
@@ -55,6 +56,18 @@ const noopLogger = {
55
56
  function createErrorResponse(error, status) {
56
57
  return NextResponse.json({ success: false, error }, { status });
57
58
  }
59
+ /** Parse a JSON column value that may be a string or already parsed */
60
+ function parseJsonColumn(value) {
61
+ if (typeof value === 'string') {
62
+ try {
63
+ return JSON.parse(value);
64
+ }
65
+ catch {
66
+ return [];
67
+ }
68
+ }
69
+ return (value ?? []);
70
+ }
58
71
  // ============================================================================
59
72
  // Handler Factory
60
73
  // ============================================================================
@@ -68,19 +81,16 @@ export function createIhelpHandler(options) {
68
81
  const { getHazoConnect, getLogger } = options;
69
82
  const logger = getLogger?.() || noopLogger;
70
83
  // ---------------------------------------------------------------------------
71
- // Internal helper: assemble a full IhelpTopic with joined tags & context_keys
84
+ // Internal helper: normalise a DB row into a full IhelpTopic
72
85
  // ---------------------------------------------------------------------------
73
- async function assembleTopicWithJoins(topicRow, adapter) {
74
- const tagsService = createCrudService(adapter, 'ihelp_tags');
75
- const contextMapService = createCrudService(adapter, 'ihelp_context_map');
76
- const [tags, contextMappings] = await Promise.all([
77
- tagsService.findBy({ topic_id: topicRow.id }),
78
- contextMapService.findBy({ topic_id: topicRow.id }),
79
- ]);
86
+ function normaliseTopic(row) {
87
+ const tags = parseJsonColumn(row.tags);
88
+ const contexts = parseJsonColumn(row.contexts);
80
89
  return {
81
- ...topicRow,
90
+ ...row,
82
91
  tags,
83
- context_keys: contextMappings.map((m) => m.context_key),
92
+ contexts,
93
+ context_keys: contexts.map((c) => c.key),
84
94
  };
85
95
  }
86
96
  // ---------------------------------------------------------------------------
@@ -106,41 +116,43 @@ export function createIhelpHandler(options) {
106
116
  const search = searchParams.get('search');
107
117
  logger.debug('[hazo_ihelp] GET request', { id, context_key, scope_id, category, search });
108
118
  const adapter = await getHazoConnect();
109
- const topicsService = createCrudService(adapter, 'ihelp_topics');
119
+ const topicsService = createCrudService(adapter, 'hazo_ihelp_topics');
110
120
  // ---- Single topic fetch ----
111
121
  if (id) {
112
122
  const topic = await topicsService.findById(id);
113
123
  if (!topic) {
114
124
  return createErrorResponse('Topic not found', 404);
115
125
  }
116
- const assembled = await assembleTopicWithJoins(topic, adapter);
117
- return NextResponse.json({ success: true, data: assembled });
126
+ return NextResponse.json({ success: true, data: normaliseTopic(topic) });
118
127
  }
119
128
  // ---- Context key lookup ----
120
129
  if (context_key) {
121
- const contextMapService = createCrudService(adapter, 'ihelp_context_map');
122
- const mappings = await contextMapService.findBy({ context_key });
123
- if (!mappings.length) {
124
- return NextResponse.json({ success: true, data: [] });
125
- }
126
- // Sort by priority ascending, then fetch matching topics
127
- const sortedMappings = mappings.sort((a, b) => a.priority - b.priority);
128
- const topicIds = sortedMappings.map((m) => m.topic_id);
129
- const allTopics = [];
130
- for (const topicId of topicIds) {
131
- const topic = await topicsService.findById(topicId);
132
- if (topic) {
133
- const assembled = await assembleTopicWithJoins(topic, adapter);
134
- allTopics.push(assembled);
130
+ // Fetch all topics, filter by context key in application code
131
+ // (works with both SQLite TEXT and PostgreSQL JSONB)
132
+ const rows = await topicsService.list((qb) => {
133
+ let q = qb;
134
+ if (scope_id) {
135
+ q = q.whereOr([
136
+ { field: 'scope_id', operator: 'is', value: null },
137
+ { field: 'scope_id', operator: 'eq', value: scope_id },
138
+ ]);
135
139
  }
136
- }
137
- return NextResponse.json({ success: true, data: allTopics });
140
+ return q;
141
+ });
142
+ const matched = rows
143
+ .map(normaliseTopic)
144
+ .filter((t) => t.contexts.some((c) => c.key === context_key))
145
+ .sort((a, b) => {
146
+ const pa = a.contexts.find((c) => c.key === context_key)?.priority ?? 0;
147
+ const pb = b.contexts.find((c) => c.key === context_key)?.priority ?? 0;
148
+ return pa - pb;
149
+ });
150
+ return NextResponse.json({ success: true, data: matched });
138
151
  }
139
152
  // ---- List with optional filters ----
140
153
  const rows = await topicsService.list((qb) => {
141
154
  let q = qb;
142
155
  if (scope_id) {
143
- // Topics where scope_id IS NULL or matches the given value
144
156
  q = q.whereOr([
145
157
  { field: 'scope_id', operator: 'is', value: null },
146
158
  { field: 'scope_id', operator: 'eq', value: scope_id },
@@ -150,7 +162,6 @@ export function createIhelpHandler(options) {
150
162
  q = q.where('category', 'eq', category);
151
163
  }
152
164
  if (search) {
153
- // ilike search on title and description
154
165
  q = q.whereOr([
155
166
  { field: 'title', operator: 'ilike', value: `%${search}%` },
156
167
  { field: 'description', operator: 'ilike', value: `%${search}%` },
@@ -158,7 +169,7 @@ export function createIhelpHandler(options) {
158
169
  }
159
170
  return q;
160
171
  });
161
- const assembled = await Promise.all(rows.map((row) => assembleTopicWithJoins(row, adapter)));
172
+ const assembled = rows.map(normaliseTopic);
162
173
  return NextResponse.json({ success: true, data: assembled });
163
174
  }
164
175
  catch (error) {
@@ -184,12 +195,32 @@ export function createIhelpHandler(options) {
184
195
  }
185
196
  logger.debug('[hazo_ihelp] POST request', { title: body.title });
186
197
  const adapter = await getHazoConnect();
187
- const topicsService = createCrudService(adapter, 'ihelp_topics');
188
- const tagsService = createCrudService(adapter, 'ihelp_tags');
189
- const contextMapService = createCrudService(adapter, 'ihelp_context_map');
198
+ const topicsService = createCrudService(adapter, 'hazo_ihelp_topics');
190
199
  const topicId = generateUUID();
191
200
  const now = new Date().toISOString();
192
- // Insert topic
201
+ // Build tags array
202
+ const tags = (body.tags ?? []).map((t) => ({
203
+ label: t.label,
204
+ variant: t.variant ?? 'default',
205
+ icon: t.icon ?? null,
206
+ }));
207
+ // Build contexts array — prefer explicit contexts, fall back to context_keys shorthand
208
+ let contexts;
209
+ if (body.contexts) {
210
+ contexts = body.contexts.map((c) => ({
211
+ key: c.key,
212
+ priority: c.priority ?? 0,
213
+ }));
214
+ }
215
+ else if (body.context_keys) {
216
+ contexts = body.context_keys.map((key, i) => ({
217
+ key,
218
+ priority: i,
219
+ }));
220
+ }
221
+ else {
222
+ contexts = [];
223
+ }
193
224
  const inserted = await topicsService.insert({
194
225
  id: topicId,
195
226
  parent_id: body.parent_id ?? null,
@@ -201,33 +232,13 @@ export function createIhelpHandler(options) {
201
232
  icon: body.icon ?? null,
202
233
  sort_order: body.sort_order ?? 0,
203
234
  is_published: body.is_published ?? false,
235
+ tags: JSON.stringify(tags),
236
+ contexts: JSON.stringify(contexts),
204
237
  created_at: now,
205
238
  changed_at: null,
206
239
  });
207
240
  const topicRow = Array.isArray(inserted) ? inserted[0] : inserted;
208
- // Insert tags if provided
209
- if (body.tags && body.tags.length > 0) {
210
- const tagRows = body.tags.map((tag) => ({
211
- id: generateUUID(),
212
- topic_id: topicId,
213
- label: tag.label,
214
- variant: tag.variant ?? 'default',
215
- icon: tag.icon ?? null,
216
- }));
217
- await tagsService.insert(tagRows);
218
- }
219
- // Insert context_keys if provided
220
- if (body.context_keys && body.context_keys.length > 0) {
221
- const mapRows = body.context_keys.map((key, index) => ({
222
- id: generateUUID(),
223
- topic_id: topicId,
224
- context_key: key,
225
- priority: index,
226
- }));
227
- await contextMapService.insert(mapRows);
228
- }
229
- const assembled = await assembleTopicWithJoins(topicRow, adapter);
230
- return NextResponse.json({ success: true, data: assembled }, { status: 201 });
241
+ return NextResponse.json({ success: true, data: normaliseTopic(topicRow) }, { status: 201 });
231
242
  }
232
243
  catch (error) {
233
244
  logger.error('[hazo_ihelp] POST error', {
@@ -247,7 +258,6 @@ export function createIhelpHandler(options) {
247
258
  */
248
259
  async function PATCH(request, context) {
249
260
  try {
250
- // Resolve id from params or query string
251
261
  const { id: paramId } = await context.params;
252
262
  let id = paramId;
253
263
  if (!id) {
@@ -259,10 +269,8 @@ export function createIhelpHandler(options) {
259
269
  const body = (await request.json());
260
270
  logger.debug('[hazo_ihelp] PATCH request', { id });
261
271
  const adapter = await getHazoConnect();
262
- const topicsService = createCrudService(adapter, 'ihelp_topics');
263
- const tagsService = createCrudService(adapter, 'ihelp_tags');
264
- const contextMapService = createCrudService(adapter, 'ihelp_context_map');
265
- // Build the patch payload (exclude relation fields)
272
+ const topicsService = createCrudService(adapter, 'hazo_ihelp_topics');
273
+ // Build the patch payload
266
274
  const patch = { changed_at: new Date().toISOString() };
267
275
  if (body.parent_id !== undefined)
268
276
  patch.parent_id = body.parent_id;
@@ -282,47 +290,35 @@ export function createIhelpHandler(options) {
282
290
  patch.sort_order = body.sort_order;
283
291
  if (body.is_published !== undefined)
284
292
  patch.is_published = body.is_published;
285
- const updated = await topicsService.updateById(id, patch);
286
- if (!updated || updated.length === 0) {
287
- return createErrorResponse('Topic not found', 404);
288
- }
289
- const topicRow = updated[0];
290
293
  // Replace tags if provided
291
294
  if (body.tags !== undefined) {
292
- // Delete existing tags one-by-one (deleteById targets the primary key)
293
- const existingTags = await tagsService.findBy({ topic_id: id });
294
- for (const tag of existingTags) {
295
- await tagsService.deleteById(tag.id);
296
- }
297
- if (body.tags.length > 0) {
298
- const tagRows = body.tags.map((tag) => ({
299
- id: generateUUID(),
300
- topic_id: id,
301
- label: tag.label,
302
- variant: tag.variant ?? 'default',
303
- icon: tag.icon ?? null,
304
- }));
305
- await tagsService.insert(tagRows);
306
- }
295
+ const tags = body.tags.map((t) => ({
296
+ label: t.label,
297
+ variant: t.variant ?? 'default',
298
+ icon: t.icon ?? null,
299
+ }));
300
+ patch.tags = JSON.stringify(tags);
307
301
  }
308
- // Replace context_keys if provided
309
- if (body.context_keys !== undefined) {
310
- const existingMappings = await contextMapService.findBy({ topic_id: id });
311
- for (const mapping of existingMappings) {
312
- await contextMapService.deleteById(mapping.id);
313
- }
314
- if (body.context_keys.length > 0) {
315
- const mapRows = body.context_keys.map((key, index) => ({
316
- id: generateUUID(),
317
- topic_id: id,
318
- context_key: key,
319
- priority: index,
320
- }));
321
- await contextMapService.insert(mapRows);
322
- }
302
+ // Replace contexts if provided
303
+ if (body.contexts !== undefined) {
304
+ const contexts = body.contexts.map((c) => ({
305
+ key: c.key,
306
+ priority: c.priority ?? 0,
307
+ }));
308
+ patch.contexts = JSON.stringify(contexts);
323
309
  }
324
- const assembled = await assembleTopicWithJoins(topicRow, adapter);
325
- return NextResponse.json({ success: true, data: assembled });
310
+ else if (body.context_keys !== undefined) {
311
+ const contexts = body.context_keys.map((key, i) => ({
312
+ key,
313
+ priority: i,
314
+ }));
315
+ patch.contexts = JSON.stringify(contexts);
316
+ }
317
+ const updated = await topicsService.updateById(id, patch);
318
+ if (!updated || updated.length === 0) {
319
+ return createErrorResponse('Topic not found', 404);
320
+ }
321
+ return NextResponse.json({ success: true, data: normaliseTopic(updated[0]) });
326
322
  }
327
323
  catch (error) {
328
324
  logger.error('[hazo_ihelp] PATCH error', {
@@ -332,7 +328,7 @@ export function createIhelpHandler(options) {
332
328
  }
333
329
  }
334
330
  // ---------------------------------------------------------------------------
335
- // DELETE handler — remove a topic (CASCADE handles tags & context_map)
331
+ // DELETE handler — remove a topic
336
332
  // ---------------------------------------------------------------------------
337
333
  /**
338
334
  * DELETE handler
@@ -341,7 +337,6 @@ export function createIhelpHandler(options) {
341
337
  */
342
338
  async function DELETE(request, context) {
343
339
  try {
344
- // Resolve id from params or query string
345
340
  const { id: paramId } = await context.params;
346
341
  let id = paramId;
347
342
  if (!id) {
@@ -352,7 +347,7 @@ export function createIhelpHandler(options) {
352
347
  }
353
348
  logger.debug('[hazo_ihelp] DELETE request', { id });
354
349
  const adapter = await getHazoConnect();
355
- const topicsService = createCrudService(adapter, 'ihelp_topics');
350
+ const topicsService = createCrudService(adapter, 'hazo_ihelp_topics');
356
351
  await topicsService.deleteById(id);
357
352
  return NextResponse.json({ success: true, data: null });
358
353
  }
@@ -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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"}
@@ -8,7 +8,9 @@ interface EditorTopicListProps {
8
8
  onNew: () => void;
9
9
  onExport: () => void;
10
10
  onImport: () => void;
11
+ onDeleteSelected: () => void;
12
+ onDeleteAll: () => void;
11
13
  }
12
- export declare function EditorTopicList({ topics, loading, error, selected_id, onSelect, onNew, onExport, onImport, }: EditorTopicListProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function EditorTopicList({ topics, loading, error, selected_id, onSelect, onNew, onExport, onImport, onDeleteSelected, onDeleteAll, }: EditorTopicListProps): import("react/jsx-runtime").JSX.Element;
13
15
  export {};
14
16
  //# sourceMappingURL=editor_topic_list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor_topic_list.d.ts","sourceRoot":"","sources":["../../../src/components/editor/editor_topic_list.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAOvD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,OAAO,EACP,KAAK,EACL,WAAW,EACX,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE,oBAAoB,2CA2ItB"}
1
+ {"version":3,"file":"editor_topic_list.d.ts","sourceRoot":"","sources":["../../../src/components/editor/editor_topic_list.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAOvD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,OAAO,EACP,KAAK,EACL,WAAW,EACX,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,WAAW,GACZ,EAAE,oBAAoB,2CA8JtB"}