@eintrek/erp-shell 0.1.74 → 0.1.75

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.
@@ -10,9 +10,11 @@
10
10
  * The main entry re-exports the same modules, so a tour defined against
11
11
  * either entry is the same data, and the bus and the "?" entry are shared.
12
12
  */
13
- export type { GuideAbortAction, GuideAnchorKey, GuideApiFailure, GuideApiMatch, GuideAppId, GuideCaptureEvent, GuideConfig, GuideContext, GuideFacts, GuideGate, GuideMission, GuideNothingToSave, GuideOnMissing, GuidePage, GuideStep, GuideStepKind, GuideSuite, GuideText, GuideTrigger, } from "./types";
13
+ export type { GuideAbortAction, GuideAnchorKey, GuideApiFailure, GuideApiMatch, GuideAppId, GuideCaptureEvent, GuideConfig, GuideContext, GuideFacts, GuideGate, GuideMission, GuideNothingToSave, GuideOnMissing, GuidePage, GuideSection, GuideStep, GuideStepKind, GuideSuite, GuideText, GuideTrigger, } from "./types";
14
14
  export { API_EVENT as GUIDE_API_EVENT, GUIDE_EVENT_PREFIX, GUIDE_LAYER_ATTRIBUTE, apiCallDetail, emitGuideEvent, guideAnchor, reportApiCall, reportApiEvent, type ApiCallReport, type ApiEventDetail, type GuideAnchorProps, } from "./events";
15
- export { guideMenuItems, guideMenuShown, openGuidePanel, openPageGuide, openPagesPanel, useGuideEntry, usePageGuideEntry, usePageGuides, type GuideEntry, type GuideMenuItem, type PageGuidesEntry, } from "./guide-store";
15
+ export { guideMenuItems, guideMenuShown, openGuidePanel, openPageGuide, openPagesPanel, openSectionGuide, setSectionGuideValues, useGuideEntry, usePageGuideEntry, usePageGuides, useSectionGuideValues, type GuideEntry, type GuideMenuItem, type PageGuidesEntry, } from "./guide-store";
16
+ export { SectionGuideButton, type SectionGuideButtonProps } from "./section-button";
17
+ export { THAI_MONTHS_SHORT, formatBaht, thaiMonth, thaiMonthYear } from "./format";
16
18
  export { GuideRuntime, type GuideMenu, type GuideRouting, type GuideRuntimeProps, } from "./guide-runtime";
17
19
  export { GuideProgressConflict, loadGuides, storeGuides, type GuideProgressAdapter, type GuideProgressRequest, type GuideProgressResponse, } from "./progress-sync";
18
20
  export type { GuideAudience, GuideMode, PagesMode } from "./progress";
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Small formatters for section guides' copy (shell 0.1.75): the app passes
3
+ * its own computed numbers, and the copy says them the way the page does —
4
+ * "ม.ค. รับ 500,000 − จ่าย 320,000 = คงเหลือ 180,000".
5
+ *
6
+ * Pure: the tests run it in Node.
7
+ */
8
+ export declare const THAI_MONTHS_SHORT: readonly ["ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."];
9
+ /**
10
+ * A baht amount with thousands separators, no currency sign: 500000 →
11
+ * "500,000"; 1234.5 → "1,234.50"; -320000 → "-320,000". Whole amounts
12
+ * have no decimals unless `decimals` says so; others have two. Not a
13
+ * finite number → "" (a step whose value is missing is skipped anyway).
14
+ */
15
+ export declare function formatBaht(n: unknown, opts?: {
16
+ decimals?: number;
17
+ }): string;
18
+ /** "2026-01" (or a Date, or 1) → "ม.ค."; "" when it is not a month. */
19
+ export declare function thaiMonth(m: unknown): string;
20
+ /**
21
+ * "2026-01" → "ม.ค. 69" (the Buddhist year's last two digits), or with
22
+ * `{ year: "full" }` "ม.ค. 2569"; just the month when no year is known.
23
+ */
24
+ export declare function thaiMonthYear(m: unknown, opts?: {
25
+ year?: "short" | "full";
26
+ }): string;
@@ -21,11 +21,19 @@ export interface PageGuidesEntry {
21
21
  } | null;
22
22
  /** Page guides with an `href` this person has (the panel's list). */
23
23
  listed: number;
24
+ /**
25
+ * Section guides on screen here that this person has ("อธิบายส่วนนี้ ·
26
+ * <title>"), in the suite's order. Shell ≥ 0.1.75.
27
+ */
28
+ sections?: ReadonlyArray<{
29
+ key: string;
30
+ title: string;
31
+ }>;
24
32
  }
25
- /** Called by the host: this page's guide and the listed count, and how to open them. */
26
- export declare function publishPageGuides(next: PageGuidesEntry | null, openPage: (() => void) | null, openPages: (() => void) | null): void;
27
- /** The "?" menu's items, in order (pure: the menu and its tests share it). */
28
- export type GuideMenuItem = "page" | "missions" | "pages" | "help";
33
+ /** Called by the host: this page's guide, the listed count, the sections on screen, and how to open them. */
34
+ export declare function publishPageGuides(next: PageGuidesEntry | null, openPage: (() => void) | null, openPages: (() => void) | null, openSection?: ((key: string) => void) | null): void;
35
+ /** The "?" menu's items, in order (pure: the menu and its tests share it). "sections": one entry per section guide. */
36
+ export type GuideMenuItem = "page" | "sections" | "missions" | "pages" | "help";
29
37
  export declare function guideMenuItems(e: GuideEntry | null, p?: PageGuidesEntry): GuideMenuItem[];
30
38
  /**
31
39
  * Whether the "?" press opens a menu rather than the help dialog: a tour
@@ -55,3 +63,28 @@ export declare function usePageGuideEntry(): {
55
63
  title: string;
56
64
  open: () => void;
57
65
  } | null;
66
+ /**
67
+ * Opens a section guide ("อธิบายส่วนนี้"), when it is on screen here for this
68
+ * person. The values it shows are the ones the app last rendered
69
+ * (`useSectionGuideValues`).
70
+ */
71
+ export declare function openSectionGuide(key: string): void;
72
+ type Values = Readonly<Record<string, unknown>>;
73
+ /**
74
+ * Sets (or with undefined, clears) a section guide's live values. The
75
+ * engine reads the latest whenever it draws a step, so a page that
76
+ * re-renders mid-guide never leaves an old number on screen.
77
+ */
78
+ export declare function setSectionGuideValues(key: string, values: Values | undefined): void;
79
+ /** A section guide's live values now (empty when the app has given none). */
80
+ export declare function getSectionGuideValues(key: string | null | undefined): Values;
81
+ /** Re-renders when any section guide's values change (the engine's own use). */
82
+ export declare function useSectionValuesVersion(): number;
83
+ /**
84
+ * Hands a section guide the numbers its copy uses, from the component that
85
+ * computes them: `useSectionGuideValues("cash-flow", { month: "ม.ค.", cashIn,
86
+ * … })`. Call it on every render (the latest wins); they go when the
87
+ * component unmounts. undefined values: nothing.
88
+ */
89
+ export declare function useSectionGuideValues(key: string, values: Values | undefined): void;
90
+ export {};
@@ -58,6 +58,8 @@ export type GuideScreen = {
58
58
  replayNext: boolean;
59
59
  /** A page guide's step: the page key (the mission is `page:<key>`). Shell ≥ 0.1.74. */
60
60
  page?: string;
61
+ /** A section guide's step: the section key (the mission is `section:<key>`). Shell ≥ 0.1.75. */
62
+ section?: string;
61
63
  }
62
64
  /** The first-visit offer of this page's guide: a small card, not modal. */
63
65
  | {
@@ -98,24 +100,38 @@ export interface GuideState {
98
100
  pagesMode: PagesMode;
99
101
  /** Page rows by page key, as the server holds them (or as just written). */
100
102
  pages: Record<string, PageRow>;
103
+ /** Section rows by section key (`<app>.section.<key>`). Shell ≥ 0.1.75. */
104
+ sections: Record<string, PageRow>;
101
105
  /**
102
- * The page guide being played: `write` when its row is still to be
103
- * written (the offer was taken, or this person has never ended this
104
- * version); a replay from "?" of a recorded page writes nothing.
106
+ * The page or section guide being played: `write` when its row is still
107
+ * to be written (the offer was taken, or this person has never ended this
108
+ * version); a replay of a recorded one writes nothing.
105
109
  */
106
110
  pageRun: {
107
111
  key: string;
108
112
  write: boolean;
113
+ kind?: ReadKind;
109
114
  } | null;
110
115
  /** What the panel shows: everything, or the page guides alone ("คู่มือทุกหน้า"). */
111
116
  panelSection: "all" | "pages";
117
+ /**
118
+ * Steps of the mission being played that passed by themselves (a click
119
+ * whose outcome already held): not counted in "ขั้นที่ x/y". Shell ≥ 0.1.75.
120
+ */
121
+ autoPassed: {
122
+ mission: string;
123
+ steps: number[];
124
+ } | null;
112
125
  }
113
126
  /** The page-guide part of the state, from the progress answer. */
114
127
  export interface GuidePagesInit {
115
128
  pageAudience: GuideAudience;
116
129
  pagesMode: PagesMode;
117
130
  pages: Record<string, PageRow>;
131
+ sections?: Record<string, PageRow>;
118
132
  }
133
+ /** A read-only guide: a page guide or a section guide. */
134
+ export type ReadKind = "page" | "section";
119
135
  export interface ReplayPage {
120
136
  mission: string;
121
137
  /** The mission's abort anchors that were on the page at the start. */
@@ -138,6 +154,8 @@ export interface GuideEnv {
138
154
  targetValue: () => string;
139
155
  /** An app dialog (not the tour's) is open. */
140
156
  dialogOpen?: () => boolean;
157
+ /** The running (or opening) section guide's live values (GuideContext.values). */
158
+ values?: Readonly<Record<string, unknown>>;
141
159
  }
142
160
  export type GuideSignal = {
143
161
  kind: "api";
@@ -269,6 +287,12 @@ export type GuideAction = {
269
287
  type: "pageRow";
270
288
  key: string;
271
289
  row: PageRow;
290
+ kind?: ReadKind;
291
+ }
292
+ /** "อธิบายส่วนนี้": a section guide on screen here (its button, or "?"). */
293
+ | {
294
+ type: "startSection";
295
+ section: string;
272
296
  };
273
297
  export type GuideEffect = {
274
298
  type: "save";
@@ -291,12 +315,13 @@ export type GuideEffect = {
291
315
  type: "abort";
292
316
  actions: GuideAbortAction[];
293
317
  }
294
- /** Write a page guide's row, once: `<app>.page.<key>`. */
318
+ /** Write a page (or section) guide's row, once: `<app>.page.<key>` / `<app>.section.<key>`. */
295
319
  | {
296
320
  type: "savePage";
297
321
  key: string;
298
322
  version: number;
299
323
  status: "completed" | "skipped";
324
+ kind?: ReadKind;
300
325
  };
301
326
  export interface GuideResult {
302
327
  state: GuideState;
@@ -312,6 +337,7 @@ export declare const COPY: {
312
337
  readonly hiddenToast: "ซ่อนแล้ว";
313
338
  readonly aborted: "ไกด์ไปต่อไม่ได้ ลองอีกครั้งภายหลัง";
314
339
  readonly pageDone: "จบคู่มือหน้านี้";
340
+ readonly sectionDone: "จบคำอธิบายส่วนนี้";
315
341
  readonly bridgeTitle: "กดปุ่มเมนู";
316
342
  readonly bridgeWhy: (app: string) => string;
317
343
  };
@@ -389,10 +415,14 @@ export declare function chipVisible(state: GuideState, suite: GuideSuite, ctx: G
389
415
  * whose `requires` they lack or whose `skipIf` holds is left out (the step on
390
416
  * screen always counts).
391
417
  */
392
- export declare function stepPosition(mission: GuideMission, index: number, env: GuideEnv, context: Readonly<Record<string, string>>): {
418
+ export declare function stepPosition(mission: GuideMission, index: number, env: GuideEnv, context: Readonly<Record<string, string>>, autoPassed?: readonly number[]): {
393
419
  no: number;
394
420
  total: number;
395
421
  };
422
+ /** A step entered now would pass at once: a click or select step whose route or visible outcome holds. */
423
+ export declare function wouldAutoPass(step: GuideStep, env: GuideEnv): boolean;
424
+ /** The steps of this mission that passed by themselves in this run. */
425
+ export declare function autoPassedOf(state: GuideState, mission: string): readonly number[];
396
426
  /** "กด [บันทึก]" → "กด บันทึก" (for screen readers). */
397
427
  export declare function plainTitle(t: string): string;
398
428
  /** The step's status line (GuideStep.status): trimmed text, or null. */
@@ -428,6 +458,13 @@ export declare function firstStepReady(suite: GuideSuite, pageKey: string, env:
428
458
  * route, a moment of nothing loading, the primary tab, not hidden.
429
459
  */
430
460
  export declare function pageOfferDue(state: GuideState, suite: GuideSuite, env: GuideEnv): string | null;
461
+ /** The section guide's row says this person has ended this version of it. */
462
+ export declare function sectionRecorded(state: GuideState, section: {
463
+ key: string;
464
+ version: number;
465
+ }): boolean;
466
+ /** The section guides on screen here that this person has (the "?" entries, the buttons). */
467
+ export declare function sectionsAvailable(suite: GuideSuite, env: GuideEnv): string[];
431
468
  /** The step before this one that this person sees, or -1. */
432
469
  export declare function previousShownIndex(mission: GuideMission, index: number, env: GuideEnv, context: Readonly<Record<string, string>>): number;
433
470
  /**
@@ -6,7 +6,7 @@
6
6
  * A page guide runs through the missions' machinery as a synthetic mission
7
7
  * `page:<key>` in replay mode, so nothing it does writes tour progress.
8
8
  */
9
- import type { GuideContext, GuideMission, GuidePage, GuideSuite } from "./types";
9
+ import type { GuideContext, GuideMission, GuidePage, GuideSection, GuideSuite } from "./types";
10
10
  /** The synthetic mission key of a page guide: `page:<key>`. */
11
11
  export declare const PAGE_PREFIX = "page:";
12
12
  export declare function isPageMissionKey(key: string | null | undefined): boolean;
@@ -54,3 +54,26 @@ export declare function pageShown(page: GuidePage, ctx: GuideContext): boolean;
54
54
  export declare function currentPage(suite: GuideSuite, where: PageWhere, ctx: GuideContext): GuidePage | null;
55
55
  /** The page guides this person has, for the panel's list (those with an `href`). */
56
56
  export declare function listedPages(suite: GuideSuite, ctx: GuideContext): GuidePage[];
57
+ /** The synthetic mission key of a section guide: `section:<key>`. */
58
+ export declare const SECTION_PREFIX = "section:";
59
+ export declare function isSectionMissionKey(key: string | null | undefined): boolean;
60
+ export declare function sectionKeyOf(missionKey: string | null | undefined): string | undefined;
61
+ /** Why a section guide cannot run, or null when it can. */
62
+ export declare function sectionProblem(app: string, section: GuideSection): string | null;
63
+ /** The suite's section guides that can run (as validPages: the rest dropped, with a warning in development). */
64
+ export declare function validSections(suite: GuideSuite): GuideSection[];
65
+ export declare function findSection(suite: GuideSuite, key: string | null | undefined): GuideSection | undefined;
66
+ /** A live value is missing: undefined, null, "" or a number that is not finite. */
67
+ export declare function valueMissing(v: unknown): boolean;
68
+ /**
69
+ * The section guide as a mission the machine plays: `section:<key>`, read
70
+ * steps only, checkpoints unless they say otherwise. A step is skipped while
71
+ * a value it `needs` is missing, or when its title comes out empty.
72
+ */
73
+ export declare function sectionMission(section: GuideSection): GuideMission;
74
+ /** Whether the section guide applies here: one of its routes matches and its root is on screen. */
75
+ export declare function sectionApplies(section: GuideSection, where: PageWhere): boolean;
76
+ /** Whether this person has the section guide: `visible` (only true) and `requires`. */
77
+ export declare function sectionShown(section: GuideSection, ctx: GuideContext): boolean;
78
+ /** The section guides on screen here that this person has, in the suite's order. */
79
+ export declare function sectionsHere(suite: GuideSuite, where: PageWhere, ctx: GuideContext): GuideSection[];
@@ -67,10 +67,11 @@ export declare function loadGuides(adapter: GuideProgressAdapter, suite: GuideSu
67
67
  */
68
68
  export declare function storeGuides(adapter: GuideProgressAdapter, suite: GuideSuite, progress: GuideProgress): Promise<GuideProgress | null>;
69
69
  /**
70
- * Writes a page guide's row (`<app>.page.<key>`) once: the minimal body,
70
+ * Writes a page guide's row (`<app>.page.<key>`), or a section guide's
71
+ * (`<app>.section.<key>`, kind "section"), once: the minimal body,
71
72
  * with the same 409 handling as the tour's row. Another tab that already
72
73
  * recorded this version wins (its row is returned, nothing is sent again);
73
74
  * an older version's row is replaced with its rev; a newer one stops. Returns
74
75
  * the stored row, or null when it could not be saved.
75
76
  */
76
- export declare function storePageRow(adapter: GuideProgressAdapter, app: string, key: string, version: number, status: "completed" | "skipped", rev: number): Promise<PageRow | null>;
77
+ export declare function storePageRow(adapter: GuideProgressAdapter, app: string, key: string, version: number, status: "completed" | "skipped", rev: number, kind?: "page" | "section"): Promise<PageRow | null>;
@@ -55,6 +55,8 @@ export interface GuidesAnswer {
55
55
  pageAudience: GuideAudience;
56
56
  /** Page rows by page key (the part after `<app>.page.`). */
57
57
  pages: Record<string, PageRow>;
58
+ /** Section rows by section key (the part after `<app>.section.`). Shell ≥ 0.1.75. */
59
+ sections: Record<string, PageRow>;
58
60
  /** The suite's row; a fresh one when the user has none or an older version. */
59
61
  progress: GuideProgress;
60
62
  /** The server holds a newer version than this app's tour: do not run. */
@@ -72,10 +74,10 @@ export declare function parseGuidesAnswer(payload: unknown, suite: {
72
74
  version: number;
73
75
  app: string;
74
76
  }): GuidesAnswer | null;
75
- /** The row key of a page guide: `<app>.page.<key>`. */
76
- export declare function pageRowKey(app: string, key: string): string;
77
- /** Page rows among the list's rows, by page key. Off-shape rows are left out. */
78
- export declare function parsePageRows(rows: unknown[], app: string): Record<string, PageRow>;
77
+ /** The row key of a page guide, `<app>.page.<key>`, or a section guide, `<app>.section.<key>`. */
78
+ export declare function pageRowKey(app: string, key: string, kind?: "page" | "section"): string;
79
+ /** Page (or section) rows among the list's rows, by key. Off-shape rows are left out. */
80
+ export declare function parsePageRows(rows: unknown[], app: string, kind?: "page" | "section"): Record<string, PageRow>;
79
81
  /** One page row (a list entry, a PUT answer, a 409's `current`); null when off-shape. */
80
82
  export declare function parsePageRow(raw: unknown): PageRow | null;
81
83
  /**
@@ -0,0 +1,12 @@
1
+ export interface SectionGuideButtonProps {
2
+ /** The GuideSection's key. */
3
+ guideKey: string;
4
+ /**
5
+ * The numbers the guide's copy uses (`ctx.values`), from this render.
6
+ * Optional: the section may call `useSectionGuideValues` itself instead.
7
+ */
8
+ values?: Readonly<Record<string, unknown>>;
9
+ /** Replaces the default look (a 22px round icon button in the text colour). */
10
+ className?: string;
11
+ }
12
+ export declare function SectionGuideButton({ guideKey, values, className }: SectionGuideButtonProps): import("react/jsx-runtime").JSX.Element | null;
@@ -41,6 +41,12 @@ export interface GuideContext {
41
41
  can: (policyKey: string) => boolean;
42
42
  /** Whether an anchor is on screen now. */
43
43
  visible: (anchor: GuideAnchorKey) => boolean;
44
+ /**
45
+ * A section guide's live values, as the app last rendered them
46
+ * (`useSectionGuideValues` / `SectionGuideButton values`); empty
47
+ * elsewhere. Shell ≥ 0.1.75.
48
+ */
49
+ values?: Readonly<Record<string, unknown>>;
44
50
  }
45
51
  /** Text that may depend on the context. */
46
52
  export type GuideText = string | ((ctx: GuideContext) => string);
@@ -171,6 +177,12 @@ export interface GuideStep {
171
177
  status?: (ctx: GuideContext) => string | null | undefined;
172
178
  /** Skip the step (silently) when true. Runs every time it is entered. */
173
179
  skipIf?: (ctx: GuideContext) => boolean;
180
+ /**
181
+ * Section guides: the live values this step's copy uses
182
+ * (`ctx.values`). The step is skipped while any is missing (undefined,
183
+ * null, "" or a number that is not finite). Shell ≥ 0.1.75.
184
+ */
185
+ needs?: string[];
174
186
  /** A policy key the step needs (checked with `guides.can`); skipped when
175
187
  * the user lacks it. */
176
188
  requires?: string;
@@ -378,6 +390,39 @@ export interface GuidePage {
378
390
  */
379
391
  steps: GuideStep[];
380
392
  }
393
+ /**
394
+ * A section guide ("อธิบายส่วนนี้", shell ≥ 0.1.75): explains one section of
395
+ * a page — a number-heavy card or table — row by row, with the formula and
396
+ * this record's own numbers. Read-only ("view" steps only; a step may point
397
+ * at a row or cell inside the section with `targetId`), never offered by
398
+ * itself: it opens from the section's `SectionGuideButton` or from "?" →
399
+ * "อธิบายส่วนนี้ · <title>". Same switch and audience as page guides
400
+ * (`guides.<app>.pages` not off); one row per section guide per person,
401
+ * `<app>.section.<key>`, written once. Authors:
402
+ * _claude-work/guides-r4/GUIDE-PAGES.md §10.
403
+ */
404
+ export interface GuideSection {
405
+ /** Stable, [a-z0-9-]: the row key is `${suite.app}.section.${key}` (≤ 64 characters). */
406
+ key: string;
407
+ version: number;
408
+ /** The page(s) the section is on, as GuidePage.route. */
409
+ route: string | string[];
410
+ /** The section's root: the guide is there only while it is on screen. */
411
+ anchor: GuideAnchorKey;
412
+ /** "สรุปกระแสเงินสด": the "?" entry and the bubble's heading. ≤ 40 characters. */
413
+ title: string;
414
+ /** Only `true` shows it (as GuideMission.visible). */
415
+ visible?: (ctx: GuideContext) => boolean | undefined;
416
+ /** A policy key the section needs (checked with `guides.can`). */
417
+ requires?: string;
418
+ /**
419
+ * "view" steps (the default here), about 12 at most; titles ≤ 40 and whys
420
+ * ≤ 90 characters (the app's tests check). Copy may be a function of
421
+ * `ctx.values`; list what it uses in `needs`, and a step whose value is
422
+ * missing is skipped (so is one whose title comes out empty).
423
+ */
424
+ steps: GuideStep[];
425
+ }
381
426
  /** One app's whole tour: the welcome, the missions, the finish. */
382
427
  export interface GuideSuite {
383
428
  /** Progress key on the server, "<app>.<name>": "peoplx.first-run". */
@@ -423,6 +468,8 @@ export interface GuideSuite {
423
468
  missions: GuideMission[];
424
469
  /** Page guides ("คู่มือหน้านี้"), shell ≥ 0.1.74. */
425
470
  pages?: GuidePage[];
471
+ /** Section guides ("อธิบายส่วนนี้"), shell ≥ 0.1.75. */
472
+ sections?: GuideSection[];
426
473
  }
427
474
  /** AppLayoutShell's `guides` prop. */
428
475
  export interface GuideConfig {
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var guideRuntime = require('./chunks/guide-runtime-YS2nUhwS.cjs');
4
+ var format = require('./chunks/format-CVazK0hP.cjs');
5
5
  require('react/jsx-runtime');
6
6
  require('react');
7
7
  require('react-dom');
@@ -9,27 +9,35 @@ require('@floating-ui/dom');
9
9
 
10
10
 
11
11
 
12
- exports.GUIDE_API_EVENT = guideRuntime.API_EVENT;
13
- exports.GUIDE_EVENT_PREFIX = guideRuntime.GUIDE_EVENT_PREFIX;
14
- exports.GUIDE_LAYER_ATTRIBUTE = guideRuntime.GUIDE_LAYER_ATTRIBUTE;
15
- exports.GuideProgressConflict = guideRuntime.GuideProgressConflict;
16
- exports.GuideRuntime = guideRuntime.GuideRuntime;
17
- exports.apiCallDetail = guideRuntime.apiCallDetail;
18
- exports.emitGuideEvent = guideRuntime.emitGuideEvent;
19
- exports.fillRoute = guideRuntime.fillRoute;
20
- exports.guideAnchor = guideRuntime.guideAnchor;
21
- exports.guideMenuItems = guideRuntime.guideMenuItems;
22
- exports.guideMenuShown = guideRuntime.guideMenuShown;
23
- exports.loadGuides = guideRuntime.loadGuides;
24
- exports.matchApiPath = guideRuntime.matchApiPath;
25
- exports.matchRoute = guideRuntime.matchRoute;
26
- exports.openGuidePanel = guideRuntime.openGuidePanel;
27
- exports.openPageGuide = guideRuntime.openPageGuide;
28
- exports.openPagesPanel = guideRuntime.openPagesPanel;
29
- exports.reportApiCall = guideRuntime.reportApiCall;
30
- exports.reportApiEvent = guideRuntime.reportApiEvent;
31
- exports.storeGuides = guideRuntime.storeGuides;
32
- exports.useGuideEntry = guideRuntime.useGuideEntry;
33
- exports.usePageGuideEntry = guideRuntime.usePageGuideEntry;
34
- exports.usePageGuides = guideRuntime.usePageGuides;
12
+ exports.GUIDE_API_EVENT = format.API_EVENT;
13
+ exports.GUIDE_EVENT_PREFIX = format.GUIDE_EVENT_PREFIX;
14
+ exports.GUIDE_LAYER_ATTRIBUTE = format.GUIDE_LAYER_ATTRIBUTE;
15
+ exports.GuideProgressConflict = format.GuideProgressConflict;
16
+ exports.GuideRuntime = format.GuideRuntime;
17
+ exports.SectionGuideButton = format.SectionGuideButton;
18
+ exports.THAI_MONTHS_SHORT = format.THAI_MONTHS_SHORT;
19
+ exports.apiCallDetail = format.apiCallDetail;
20
+ exports.emitGuideEvent = format.emitGuideEvent;
21
+ exports.fillRoute = format.fillRoute;
22
+ exports.formatBaht = format.formatBaht;
23
+ exports.guideAnchor = format.guideAnchor;
24
+ exports.guideMenuItems = format.guideMenuItems;
25
+ exports.guideMenuShown = format.guideMenuShown;
26
+ exports.loadGuides = format.loadGuides;
27
+ exports.matchApiPath = format.matchApiPath;
28
+ exports.matchRoute = format.matchRoute;
29
+ exports.openGuidePanel = format.openGuidePanel;
30
+ exports.openPageGuide = format.openPageGuide;
31
+ exports.openPagesPanel = format.openPagesPanel;
32
+ exports.openSectionGuide = format.openSectionGuide;
33
+ exports.reportApiCall = format.reportApiCall;
34
+ exports.reportApiEvent = format.reportApiEvent;
35
+ exports.setSectionGuideValues = format.setSectionGuideValues;
36
+ exports.storeGuides = format.storeGuides;
37
+ exports.thaiMonth = format.thaiMonth;
38
+ exports.thaiMonthYear = format.thaiMonthYear;
39
+ exports.useGuideEntry = format.useGuideEntry;
40
+ exports.usePageGuideEntry = format.usePageGuideEntry;
41
+ exports.usePageGuides = format.usePageGuides;
42
+ exports.useSectionGuideValues = format.useSectionGuideValues;
35
43
  //# sourceMappingURL=guide-core.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"guide-core.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"guide-core.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- export { A as GUIDE_API_EVENT, G as GUIDE_EVENT_PREFIX, a as GUIDE_LAYER_ATTRIBUTE, c as GuideProgressConflict, d as GuideRuntime, e as apiCallDetail, f as emitGuideEvent, g as fillRoute, h as guideAnchor, i as guideMenuItems, j as guideMenuShown, l as loadGuides, m as matchApiPath, k as matchRoute, o as openGuidePanel, n as openPageGuide, p as openPagesPanel, r as reportApiCall, q as reportApiEvent, s as storeGuides, u as useGuideEntry, t as usePageGuideEntry, v as usePageGuides } from './chunks/guide-runtime-Dl8V1iy9.esm.js';
2
+ export { A as GUIDE_API_EVENT, G as GUIDE_EVENT_PREFIX, a as GUIDE_LAYER_ATTRIBUTE, c as GuideProgressConflict, d as GuideRuntime, S as SectionGuideButton, T as THAI_MONTHS_SHORT, e as apiCallDetail, f as emitGuideEvent, g as fillRoute, h as formatBaht, i as guideAnchor, j as guideMenuItems, k as guideMenuShown, l as loadGuides, m as matchApiPath, n as matchRoute, o as openGuidePanel, p as openPageGuide, q as openPagesPanel, r as openSectionGuide, s as reportApiCall, t as reportApiEvent, u as setSectionGuideValues, v as storeGuides, w as thaiMonth, x as thaiMonthYear, y as useGuideEntry, z as usePageGuideEntry, B as usePageGuides, C as useSectionGuideValues } from './chunks/format-DCTuLpBU.esm.js';
3
3
  import 'react/jsx-runtime';
4
4
  import 'react';
5
5
  import 'react-dom';
@@ -6,7 +6,8 @@ export interface HelpButtonProps {
6
6
  * --header-* variables of the workspace chrome, white on the brand chrome).
7
7
  *
8
8
  * When this user has something to open here, it opens a small menu:
9
- * "คู่มือหน้านี้" (this page's guide), "ไกด์เริ่มต้น n/N" (the quest
9
+ * "คู่มือหน้านี้" (this page's guide), "อธิบายส่วนนี้ · <title>" for each
10
+ * section guide on screen, "ไกด์เริ่มต้น n/N" (the quest
10
11
  * panel), "คู่มือทุกหน้า" (the panel's page guides) and "ติดต่อทีมช่วยเหลือ"
11
12
  * (the help dialog), each only when it has something. Otherwise one press
12
13
  * opens the help dialog, as before.