@alfadocs/ui-kit-debug 1.2.0 → 1.3.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.
Files changed (120) hide show
  1. package/dist/_chunks/{actions-cell-renderer-ClGCSQnA.js → actions-cell-renderer-Ceah0ywE.js} +2 -2
  2. package/dist/_chunks/{actions-cell-renderer-ClGCSQnA.js.map → actions-cell-renderer-Ceah0ywE.js.map} +1 -1
  3. package/dist/_chunks/anamnesis-i18n-DGRdwc0i.js +8720 -0
  4. package/dist/_chunks/anamnesis-i18n-DGRdwc0i.js.map +1 -0
  5. package/dist/_chunks/arrow-up-BYvcvTkB.js +26 -0
  6. package/dist/_chunks/arrow-up-BYvcvTkB.js.map +1 -0
  7. package/dist/_chunks/{editable-currency-cell-renderer-Dus_sBvX.js → editable-currency-cell-renderer-Uhzkd0ZP.js} +68 -88
  8. package/dist/_chunks/editable-currency-cell-renderer-Uhzkd0ZP.js.map +1 -0
  9. package/dist/_chunks/{exceljs.min-DUJ-5CGx.js → exceljs.min-D2MHbJsF.js} +10 -9
  10. package/dist/_chunks/{exceljs.min-DUJ-5CGx.js.map → exceljs.min-D2MHbJsF.js.map} +1 -1
  11. package/dist/_chunks/{face-scheme-Cou2efl7.js → face-scheme-C00IvkUA.js} +237 -243
  12. package/dist/_chunks/face-scheme-C00IvkUA.js.map +1 -0
  13. package/dist/_chunks/{file-manager-CNSLiuLo.js → file-manager-lNjcSXoD.js} +174 -186
  14. package/dist/_chunks/file-manager-lNjcSXoD.js.map +1 -0
  15. package/dist/_chunks/minus-BQDHq1c1.js +12 -0
  16. package/dist/_chunks/minus-BQDHq1c1.js.map +1 -0
  17. package/dist/_chunks/notebook-pen-CO7HoM-W.js +25 -0
  18. package/dist/_chunks/notebook-pen-CO7HoM-W.js.map +1 -0
  19. package/dist/_chunks/{notes-panel-CCz0J140.js → notes-panel-DPsgB4Mv.js} +73 -92
  20. package/dist/_chunks/notes-panel-DPsgB4Mv.js.map +1 -0
  21. package/dist/_chunks/{patient-table-DXk0wW8Q.js → patient-table-C7QHFC63.js} +2 -2
  22. package/dist/_chunks/{patient-table-DXk0wW8Q.js.map → patient-table-C7QHFC63.js.map} +1 -1
  23. package/dist/_chunks/share-2-B49jcW2I.js +18 -0
  24. package/dist/_chunks/share-2-B49jcW2I.js.map +1 -0
  25. package/dist/_chunks/{sparkline-DJtZBe7O.js → sparkline-BTY4B5tv.js} +153 -145
  26. package/dist/_chunks/sparkline-BTY4B5tv.js.map +1 -0
  27. package/dist/agent-catalog.json +1 -1
  28. package/dist/components/data-table/index.js +2 -2
  29. package/dist/components/face-scheme/index.js +1 -1
  30. package/dist/components/file-manager/index.js +1 -1
  31. package/dist/components/index.d.ts +1 -0
  32. package/dist/components/index.d.ts.map +1 -1
  33. package/dist/components/notes-panel/index.d.ts +1 -1
  34. package/dist/components/notes-panel/index.d.ts.map +1 -1
  35. package/dist/components/notes-panel/index.js +1 -1
  36. package/dist/components/patient-table/index.js +1 -1
  37. package/dist/components/sparkline/index.js +1 -1
  38. package/dist/components/sparkline/sparkline.d.ts +5 -4
  39. package/dist/components/sparkline/sparkline.d.ts.map +1 -1
  40. package/dist/index.js +132 -109
  41. package/dist/index.js.map +1 -1
  42. package/dist/patterns/_shared/target-tile.d.ts +31 -0
  43. package/dist/patterns/_shared/target-tile.d.ts.map +1 -0
  44. package/dist/patterns/anamnesis/anamnesis-catalogue.d.ts +23 -0
  45. package/dist/patterns/anamnesis/anamnesis-catalogue.d.ts.map +1 -0
  46. package/dist/patterns/anamnesis/anamnesis-compare-panel.d.ts +82 -0
  47. package/dist/patterns/anamnesis/anamnesis-compare-panel.d.ts.map +1 -0
  48. package/dist/patterns/anamnesis/anamnesis-compile-blocks.d.ts +46 -0
  49. package/dist/patterns/anamnesis/anamnesis-compile-blocks.d.ts.map +1 -0
  50. package/dist/patterns/anamnesis/anamnesis-compile.d.ts +48 -0
  51. package/dist/patterns/anamnesis/anamnesis-compile.d.ts.map +1 -0
  52. package/dist/patterns/anamnesis/anamnesis-config-editor.d.ts +26 -0
  53. package/dist/patterns/anamnesis/anamnesis-config-editor.d.ts.map +1 -0
  54. package/dist/patterns/anamnesis/anamnesis-config.d.ts +62 -0
  55. package/dist/patterns/anamnesis/anamnesis-config.d.ts.map +1 -0
  56. package/dist/patterns/anamnesis/anamnesis-derive.d.ts +194 -0
  57. package/dist/patterns/anamnesis/anamnesis-derive.d.ts.map +1 -0
  58. package/dist/patterns/anamnesis/anamnesis-digest.d.ts +84 -0
  59. package/dist/patterns/anamnesis/anamnesis-digest.d.ts.map +1 -0
  60. package/dist/patterns/anamnesis/anamnesis-disclosure.d.ts +19 -0
  61. package/dist/patterns/anamnesis/anamnesis-disclosure.d.ts.map +1 -0
  62. package/dist/patterns/anamnesis/anamnesis-event-bar.d.ts +12 -0
  63. package/dist/patterns/anamnesis/anamnesis-event-bar.d.ts.map +1 -0
  64. package/dist/patterns/anamnesis/anamnesis-events.d.ts +60 -0
  65. package/dist/patterns/anamnesis/anamnesis-events.d.ts.map +1 -0
  66. package/dist/patterns/anamnesis/anamnesis-evolution-grid.d.ts +48 -0
  67. package/dist/patterns/anamnesis/anamnesis-evolution-grid.d.ts.map +1 -0
  68. package/dist/patterns/anamnesis/anamnesis-evolution.d.ts +37 -0
  69. package/dist/patterns/anamnesis/anamnesis-evolution.d.ts.map +1 -0
  70. package/dist/patterns/anamnesis/anamnesis-export-download.d.ts +10 -0
  71. package/dist/patterns/anamnesis/anamnesis-export-download.d.ts.map +1 -0
  72. package/dist/patterns/anamnesis/anamnesis-export-menu.d.ts +23 -0
  73. package/dist/patterns/anamnesis/anamnesis-export-menu.d.ts.map +1 -0
  74. package/dist/patterns/anamnesis/anamnesis-export-pdf.d.ts +36 -0
  75. package/dist/patterns/anamnesis/anamnesis-export-pdf.d.ts.map +1 -0
  76. package/dist/patterns/anamnesis/anamnesis-export.d.ts +143 -0
  77. package/dist/patterns/anamnesis/anamnesis-export.d.ts.map +1 -0
  78. package/dist/patterns/anamnesis/anamnesis-field.d.ts +14 -0
  79. package/dist/patterns/anamnesis/anamnesis-field.d.ts.map +1 -0
  80. package/dist/patterns/anamnesis/anamnesis-format.d.ts +67 -0
  81. package/dist/patterns/anamnesis/anamnesis-format.d.ts.map +1 -0
  82. package/dist/patterns/anamnesis/anamnesis-i18n.d.ts +6 -0
  83. package/dist/patterns/anamnesis/anamnesis-i18n.d.ts.map +1 -0
  84. package/dist/patterns/anamnesis/anamnesis-indicators.d.ts +53 -0
  85. package/dist/patterns/anamnesis/anamnesis-indicators.d.ts.map +1 -0
  86. package/dist/patterns/anamnesis/anamnesis-intake.d.ts +16 -0
  87. package/dist/patterns/anamnesis/anamnesis-intake.d.ts.map +1 -0
  88. package/dist/patterns/anamnesis/anamnesis-matrix.d.ts +91 -0
  89. package/dist/patterns/anamnesis/anamnesis-matrix.d.ts.map +1 -0
  90. package/dist/patterns/anamnesis/anamnesis-notes.d.ts +19 -0
  91. package/dist/patterns/anamnesis/anamnesis-notes.d.ts.map +1 -0
  92. package/dist/patterns/anamnesis/anamnesis-readonly.d.ts +17 -0
  93. package/dist/patterns/anamnesis/anamnesis-readonly.d.ts.map +1 -0
  94. package/dist/patterns/anamnesis/anamnesis-summary.d.ts +35 -0
  95. package/dist/patterns/anamnesis/anamnesis-summary.d.ts.map +1 -0
  96. package/dist/patterns/anamnesis/anamnesis-target-editor.d.ts +18 -0
  97. package/dist/patterns/anamnesis/anamnesis-target-editor.d.ts.map +1 -0
  98. package/dist/patterns/anamnesis/anamnesis-target-strip.d.ts +14 -0
  99. package/dist/patterns/anamnesis/anamnesis-target-strip.d.ts.map +1 -0
  100. package/dist/patterns/anamnesis/anamnesis-targets.d.ts +58 -0
  101. package/dist/patterns/anamnesis/anamnesis-targets.d.ts.map +1 -0
  102. package/dist/patterns/anamnesis/anamnesis-types.d.ts +336 -0
  103. package/dist/patterns/anamnesis/anamnesis-types.d.ts.map +1 -0
  104. package/dist/patterns/anamnesis/anamnesis-visit-note.d.ts +35 -0
  105. package/dist/patterns/anamnesis/anamnesis-visit-note.d.ts.map +1 -0
  106. package/dist/patterns/anamnesis/anamnesis-window.d.ts +37 -0
  107. package/dist/patterns/anamnesis/anamnesis-window.d.ts.map +1 -0
  108. package/dist/patterns/anamnesis/anamnesis.d.ts +48 -0
  109. package/dist/patterns/anamnesis/anamnesis.d.ts.map +1 -0
  110. package/dist/patterns/anamnesis/index.d.ts +8 -0
  111. package/dist/patterns/anamnesis/index.d.ts.map +1 -0
  112. package/dist/patterns/anamnesis/index.js +26 -0
  113. package/dist/patterns/anamnesis/index.js.map +1 -0
  114. package/dist/tokens.css +1 -1
  115. package/package.json +5 -1
  116. package/dist/_chunks/editable-currency-cell-renderer-Dus_sBvX.js.map +0 -1
  117. package/dist/_chunks/face-scheme-Cou2efl7.js.map +0 -1
  118. package/dist/_chunks/file-manager-CNSLiuLo.js.map +0 -1
  119. package/dist/_chunks/notes-panel-CCz0J140.js.map +0 -1
  120. package/dist/_chunks/sparkline-DJtZBe7O.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anamnesis-format.d.ts","sourceRoot":"","sources":["../../../src/patterns/anamnesis/anamnesis-format.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAQzC,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,KAAK,EACN,MAAM,mBAAmB,CAAC;AAI3B;;4EAE4E;AAC5E,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAG1E;AAID;gFACgF;AAChF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAGzD;AAED;oEACoE;AACpE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAEhE;AAED;;0DAE0D;AAC1D,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAI/D;AAED;8EAC8E;AAC9E,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAGhD;AAED;;;;;oEAKoE;AACpE,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,CAAC,EAAE,SAAS,EACZ,OAAO,UAAQ,GACd,MAAM,CAOR;AAID;;;;6BAI6B;AAC7B,wBAAgB,QAAQ,CACtB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,CAAC,EAAE,SAAS,GACX,MAAM,CAGR;AAED;;;4EAG4E;AAC5E,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAI7E;AAUD,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,GAAG,EAAE,mBAAmB,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAK7E;AAED;mEACmE;AACnE,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,mBAAmB,EACxB,CAAC,EAAE,SAAS,GACX,MAAM,CAGR;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,cAAc,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAK1E;AAED;6DAC6D;AAC7D,wBAAgB,eAAe,CAC7B,GAAG,EAAE,cAAc,EACnB,CAAC,EAAE,SAAS,GACX,MAAM,GAAG,SAAS,CAKpB;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAK5E;AAED;;;4DAG4D;AAC5D,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,SAAS,EACZ,KAAK,CAAC,EAAE,aAAa,GACpB,MAAM,CAKR;AAED;oEACoE;AACpE,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,CAAC,EAAE,SAAS,EACZ,KAAK,CAAC,EAAE,aAAa,GACpB,MAAM,CAGR;AAID;;;0EAG0E;AAC1E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAkB1E;AAED;;qDAEqD;AACrD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,cAAc,EACnB,CAAC,EAAE,SAAS,GACX,MAAM,CA6CR"}
@@ -0,0 +1,6 @@
1
+ import type { i18n as I18nInstance } from 'i18next';
2
+ export declare const PATTERN_NS = "patterns";
3
+ /** Register the story-local bundles onto the shared singleton (deep-merge,
4
+ * never overwrite; never init). Idempotent across HMR reloads. */
5
+ export declare function registerAnamnesisBundles(i18n: I18nInstance): void;
6
+ //# sourceMappingURL=anamnesis-i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anamnesis-i18n.d.ts","sourceRoot":"","sources":["../../../src/patterns/anamnesis/anamnesis-i18n.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,SAAS,CAAC;AAEpD,eAAO,MAAM,UAAU,aAAa,CAAC;AAu2DrC;kEACkE;AAClE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAQjE"}
@@ -0,0 +1,53 @@
1
+ import type { TFunction } from 'i18next';
2
+ import { type SparklineAnnotation } from '../../components/sparkline';
3
+ import { type DeltaInfo, type RangeFlag } from './anamnesis-derive';
4
+ import type { NumericParameterDef } from './anamnesis-types';
5
+ export interface DeltaIndicatorProps {
6
+ /** The derived change vs the previous visit; `null` renders nothing (first
7
+ * visit has no delta — never render a broken arrow). */
8
+ delta: DeltaInfo | null;
9
+ def: NumericParameterDef;
10
+ t: TFunction;
11
+ }
12
+ /** Arrow + signed change vs the previous visit, coloured by whether the change
13
+ * is an improvement for THIS parameter. */
14
+ export declare function DeltaIndicator({ delta, def, t }: DeltaIndicatorProps): import("react/jsx-runtime").JSX.Element | null;
15
+ export interface OriginMarkerProps {
16
+ t: TFunction;
17
+ }
18
+ /** "From patient" badge shown against a value the patient submitted and the
19
+ * clinician has not yet confirmed or edited. Uses the info family (calm,
20
+ * informational — distinct from the clinical status colours). */
21
+ export declare function OriginMarker({ t }: OriginMarkerProps): import("react/jsx-runtime").JSX.Element;
22
+ export interface OutOfRangeBadgeProps {
23
+ flag: RangeFlag;
24
+ t: TFunction;
25
+ /** Icon-only chip for dense grid cells; otherwise shows a short label. */
26
+ compact?: boolean;
27
+ }
28
+ /** H/L flag for a lab value outside its reference range. Warning tone +
29
+ * direction glyph + colour-blind dot; the accessible name says above/below. */
30
+ export declare function OutOfRangeBadge({ flag, t, compact, }: OutOfRangeBadgeProps): import("react/jsx-runtime").JSX.Element | null;
31
+ export interface TrendSparklineProps {
32
+ /** ONE ENTRY PER RECORD VISIT, in visit order. `null` is a visit where this
33
+ * parameter was not measured, and it HOLDS its place on the x extent —
34
+ * that is what keeps a lab drawn four times over a thirteen-visit history
35
+ * on the same x scale as a weight drawn thirteen times, so an event
36
+ * annotation lands on the same date in both. */
37
+ series: (number | null)[];
38
+ def: NumericParameterDef;
39
+ t: TFunction;
40
+ /** Event reference lines. The SAME array is handed to every row, so one
41
+ * event is one vertical line down the whole grid. */
42
+ annotations?: readonly SparklineAnnotation[];
43
+ /** Make those lines pointer-selectable. Supplied ⇒ pressing one does what
44
+ * pressing its chip in the bar above does. The chip bar is the keyboard
45
+ * route and stays the only one — the lines live inside a `role="img"`. */
46
+ onSelectAnnotation?: (eventId: string) => void;
47
+ }
48
+ /** Compact inline trend across all visits, tinted by the overall valence
49
+ * (first → last measurement) for the parameter. Reduced motion is honoured by
50
+ * Sparkline internally. Renders nothing below two measurements (no trend to
51
+ * draw) — the gaps do not count towards that. */
52
+ export declare function TrendSparkline({ series, def, t, annotations, onSelectAnnotation, }: TrendSparklineProps): import("react/jsx-runtime").JSX.Element | null;
53
+ //# sourceMappingURL=anamnesis-indicators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anamnesis-indicators.d.ts","sourceRoot":"","sources":["../../../src/patterns/anamnesis/anamnesis-indicators.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzC,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAoB7D,MAAM,WAAW,mBAAmB;IAClC;4DACwD;IACxD,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,GAAG,EAAE,mBAAmB,CAAC;IACzB,CAAC,EAAE,SAAS,CAAC;CACd;AAED;2CAC2C;AAC3C,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,mBAAmB,kDA8BpE;AAID,MAAM,WAAW,iBAAiB;IAChC,CAAC,EAAE,SAAS,CAAC;CACd;AAED;;iEAEiE;AACjE,wBAAgB,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,iBAAiB,2CAMpD;AAID,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,SAAS,CAAC;IAChB,CAAC,EAAE,SAAS,CAAC;IACb,0EAA0E;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;+EAC+E;AAC/E,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,CAAC,EACD,OAAe,GAChB,EAAE,oBAAoB,kDAkBtB;AAUD,MAAM,WAAW,mBAAmB;IAClC;;;;oDAIgD;IAChD,MAAM,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC1B,GAAG,EAAE,mBAAmB,CAAC;IACzB,CAAC,EAAE,SAAS,CAAC;IACb;yDACqD;IACrD,WAAW,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC7C;;8EAE0E;IAC1E,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAED;;;iDAGiD;AACjD,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,GAAG,EACH,CAAC,EACD,WAAW,EACX,kBAAkB,GACnB,EAAE,mBAAmB,kDAkBrB"}
@@ -0,0 +1,16 @@
1
+ import type { TFunction } from 'i18next';
2
+ import { type PracticeAnamnesisConfig } from './anamnesis-config';
3
+ import type { AnamnesisRecord } from './anamnesis-types';
4
+ export interface AnamnesisIntakeProps {
5
+ record: AnamnesisRecord;
6
+ t: TFunction;
7
+ /** Mount flush inside a host section tab (drops the full-page chrome + own
8
+ * page title). */
9
+ embedded?: boolean;
10
+ /** The practice's configured questionnaire. Omitted = the kit-seeded form. */
11
+ config?: PracticeAnamnesisConfig;
12
+ /** Demo/story hook: which section is open on mount. Defaults to the first. */
13
+ defaultOpenSection?: string;
14
+ }
15
+ export declare function AnamnesisIntake({ record, t, embedded, config, defaultOpenSection, }: AnamnesisIntakeProps): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=anamnesis-intake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anamnesis-intake.d.ts","sourceRoot":"","sources":["../../../src/patterns/anamnesis/anamnesis-intake.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAczC,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAe5B,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,mBAAmB,CAAC;AAiBvE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,eAAe,CAAC;IACxB,CAAC,EAAE,SAAS,CAAC;IACb;sBACkB;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,CAAC,EACD,QAAgB,EAChB,MAAM,EACN,kBAAkB,GACnB,EAAE,oBAAoB,2CA+RtB"}
@@ -0,0 +1,91 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { TFunction } from 'i18next';
3
+ import type { OpenAnamnesisNote } from './anamnesis-types';
4
+ import type { VisitColumn } from './anamnesis-window';
5
+ /** Static class literals — Tailwind has to see every arbitrary value at build
6
+ * time, and a class built by interpolation emits no CSS at all. */
7
+ /** Floored at the longest parameter label + its unit and reference range on
8
+ * ONE line — measured across en / ar / ja under `.theme-accessible`, whose
9
+ * larger type is the widest case (ja "HDLコレステロール", 147px + 16px of cell
10
+ * padding). Below that the label wraps and the cell goes to three lines. */
11
+ export declare const MATRIX_IDENTITY_CLASS = "ds:min-w-[11rem]";
12
+ /** Floored by the editable cell, not by the number it shows: `NumberInput`
13
+ * spends 56px on its two spinners and 16px on input padding before a digit is
14
+ * drawn, so 128px of column is 40px of readable value. It cannot go lower. */
15
+ export declare const MATRIX_VISIT_COLUMN_CLASS = "ds:min-w-[8rem]";
16
+ /**
17
+ * A PERCENTAGE, not a rem cap — that is what redirects the spare pixels.
18
+ *
19
+ * Under `table-layout: auto` the spare width of a table narrower than its
20
+ * container goes to whichever columns declare no width, and `max-width` on a
21
+ * table cell is only honoured while some other column is left to absorb. The
22
+ * old `w-[9rem] max-w-[10rem]` therefore pinned the trend at 160px and handed
23
+ * everything else to the identity and value columns — 325px and 443px of
24
+ * mostly whitespace at 1440px wide. Claiming a share instead inverts that.
25
+ * When the table DOES overflow, the percentage stops applying and the
26
+ * min-width is what the trend gets.
27
+ */
28
+ export declare const MATRIX_TREND_COLUMN_CLASS = "ds:w-[40%] ds:min-w-[14rem]";
29
+ /** Apply to every `<td>` a surface hands to `trailing`, so the column sticks
30
+ * as one piece rather than only in its header. */
31
+ export declare const MATRIX_TRAILING_CELL_CLASS = "ds:sticky ds:end-0 ds:z-[1] ds:bg-[color:var(--card)] ds:shadow-[var(--shadow-chrome-start)]";
32
+ /** Every body cell in a value column. Exported so both surfaces open from the
33
+ * same padding / alignment rather than each picking its own. */
34
+ export declare const MATRIX_CELL_CLASS = "ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-xs)] ds:align-top";
35
+ export interface MatrixVisitHeaderProps {
36
+ column: VisitColumn;
37
+ t: TFunction;
38
+ /** Muted fill — the column is one of the compared pair/set. */
39
+ emphasised?: boolean;
40
+ /** Adds the "Editable" chip; compile mode's newest column only. */
41
+ editable?: boolean;
42
+ /** Render this visit's note popover already open (demo hook). */
43
+ defaultOpenNoteVisitId?: string;
44
+ /** Offer the note affordance. The compare panel sets this `false`: its
45
+ * columns repeat the grid's, and two note triggers with the same accessible
46
+ * name on one screen is a control the reader has to disambiguate. */
47
+ withNote?: boolean;
48
+ /** Route the note to the host's side panel instead of opening it in place. */
49
+ onOpenNote?: OpenAnamnesisNote;
50
+ }
51
+ /** One visit's `<th scope="col">`, identical wherever the visit is a column. */
52
+ export declare function MatrixVisitHeader({ column, t, emphasised, editable, defaultOpenNoteVisitId, withNote, onOpenNote, }: MatrixVisitHeaderProps): import("react/jsx-runtime").JSX.Element;
53
+ export interface MatrixRowSpec {
54
+ key: string;
55
+ /** Full-width group banner. When set, every other field is ignored. */
56
+ banner?: string;
57
+ /** The row's `<th scope="row">` element. */
58
+ header?: ReactNode;
59
+ /** One `<td>` per visit column, in column order. */
60
+ cells?: readonly ReactNode[];
61
+ /** The `<td>` under the trend column. */
62
+ trend?: ReactNode;
63
+ /** The `<td>` under the trailing column, where the table declares one. */
64
+ trailing?: ReactNode;
65
+ }
66
+ export interface AnamnesisMatrixProps {
67
+ captionId: string;
68
+ /** Screen-reader caption naming what the table holds. */
69
+ caption: string;
70
+ /** Header of the sticky identity column. */
71
+ identityLabel: string;
72
+ /** Header of the trend column. */
73
+ trendLabel: string;
74
+ /** Test hook on the trend header. Only one matrix on screen may claim it,
75
+ * so the grid takes it and the compare panel below goes without. */
76
+ trendTestId?: string;
77
+ /** One `<th scope="col">` per visit column — build them with
78
+ * `MatrixVisitHeader` so the two surfaces cannot disagree. */
79
+ visitHeaders: readonly ReactNode[];
80
+ /** Header of a column rendered after every visit. Omitted = no such column. */
81
+ trailingLabel?: string;
82
+ /** Test hook on the trailing header — the surface names it, not the shell. */
83
+ trailingTestId?: string;
84
+ rows: readonly MatrixRowSpec[];
85
+ /** Draw the outer border + surface. `false` inside a card, to avoid a
86
+ * box-in-a-box. */
87
+ framed?: boolean;
88
+ testId?: string;
89
+ }
90
+ export declare function AnamnesisMatrix({ captionId, caption, identityLabel, trendLabel, trendTestId, visitHeaders, trailingLabel, trailingTestId, rows, framed, testId, }: AnamnesisMatrixProps): import("react/jsx-runtime").JSX.Element;
91
+ //# sourceMappingURL=anamnesis-matrix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anamnesis-matrix.d.ts","sourceRoot":"","sources":["../../../src/patterns/anamnesis/anamnesis-matrix.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD;mEACmE;AACnE;;;4EAG4E;AAC5E,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AACxD;;8EAE8E;AAC9E,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAC3D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB,gCAAgC,CAAC;AAWvE;kDACkD;AAClD,eAAO,MAAM,0BAA0B,iGACyD,CAAC;AAEjG;gEACgE;AAChE,eAAO,MAAM,iBAAiB,qEACsC,CAAC;AAIrE,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,WAAW,CAAC;IACpB,CAAC,EAAE,SAAS,CAAC;IACb,+DAA+D;IAC/D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iEAAiE;IACjE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;yEAEqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,CAAC,EACD,UAAkB,EAClB,QAAgB,EAChB,sBAAsB,EACtB,QAAe,EACf,UAAU,GACX,EAAE,sBAAsB,2CAiDxB;AAID,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,oDAAoD;IACpD,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC7B,yCAAyC;IACzC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAID,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB;wEACoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;kEAC8D;IAC9D,YAAY,EAAE,SAAS,SAAS,EAAE,CAAC;IACnC,+EAA+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;IAC/B;uBACmB;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,OAAO,EACP,aAAa,EACb,UAAU,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,IAAI,EACJ,MAAa,EACb,MAAM,GACP,EAAE,oBAAoB,2CAyFtB"}
@@ -0,0 +1,19 @@
1
+ import type { TFunction } from 'i18next';
2
+ import type { NotesPanelNote } from '../../components/notes-panel';
3
+ import type { AnamnesisNoteTarget, AnamnesisRecord } from './anamnesis-types';
4
+ /**
5
+ * The note id a target addresses. The host hands this to `NotesPanel`'s
6
+ * `currentNoteId`; the panel marks, scrolls to and focuses that note. Namespaced
7
+ * so anamnesis notes can share a timeline with the host's own without a
8
+ * collision.
9
+ */
10
+ export declare function anamnesisNoteId(target: AnamnesisNoteTarget): string;
11
+ /**
12
+ * The record's notes and events as one timeline, newest first — the order
13
+ * `NotesPanel` documents for `notes` (it re-sorts only to lead with pinned).
14
+ *
15
+ * A host with notes of its own concatenates and re-sorts by `dateIso`: this is
16
+ * a contribution to the patient's timeline, not a replacement for it.
17
+ */
18
+ export declare function anamnesisNotes(record: AnamnesisRecord, t: TFunction): NotesPanelNote[];
19
+ //# sourceMappingURL=anamnesis-notes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anamnesis-notes.d.ts","sourceRoot":"","sources":["../../../src/patterns/anamnesis/anamnesis-notes.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE9E;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAInE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,eAAe,EACvB,CAAC,EAAE,SAAS,GACX,cAAc,EAAE,CA2ClB"}
@@ -0,0 +1,17 @@
1
+ import type { TFunction } from 'i18next';
2
+ import { type PracticeAnamnesisConfig } from './anamnesis-config';
3
+ import type { AnamnesisRecord, OpenAnamnesisNote } from './anamnesis-types';
4
+ export interface AnamnesisReadOnlyProps {
5
+ record: AnamnesisRecord;
6
+ t: TFunction;
7
+ /** Mount flush inside a host section tab (drops the full-page chrome + the
8
+ * patient-name page heading). */
9
+ embedded?: boolean;
10
+ /** The practice's configured vocabulary. Omitted = the kit-seeded default. */
11
+ config?: PracticeAnamnesisConfig;
12
+ /** The host's side panel, forwarded to the Evolution block. Omitted = the
13
+ * evolution surface reads notes in place. */
14
+ onOpenNote?: OpenAnamnesisNote;
15
+ }
16
+ export declare function AnamnesisReadOnly({ record, t, embedded, config, onOpenNote, }: AnamnesisReadOnlyProps): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=anamnesis-readonly.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anamnesis-readonly.d.ts","sourceRoot":"","sources":["../../../src/patterns/anamnesis/anamnesis-readonly.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAMzC,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAgB5B,OAAO,KAAK,EACV,eAAe,EAEf,iBAAiB,EAElB,MAAM,mBAAmB,CAAC;AAkF3B,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,eAAe,CAAC;IACxB,CAAC,EAAE,SAAS,CAAC;IACb;qCACiC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC;iDAC6C;IAC7C,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAID,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,CAAC,EACD,QAAgB,EAChB,MAAM,EACN,UAAU,GACX,EAAE,sBAAsB,2CA4TxB"}
@@ -0,0 +1,35 @@
1
+ import type { TFunction } from 'i18next';
2
+ import { type IntakeDigest, type MissingAnswer } from './anamnesis-digest';
3
+ import type { IntakeResponse, IntakeSectionDef, PatientSex } from './anamnesis-types';
4
+ /** The kit's token-driven focus ring for an unstyled `CollapsibleTrigger`.
5
+ * Without it the UA outline shows, which neither widens under
6
+ * `.theme-accessible` nor uses `--ring`. */
7
+ export declare const TRIGGER_FOCUS_RING: string;
8
+ export interface AnamnesisAnswerListProps {
9
+ intake: IntakeResponse;
10
+ /** History vocabulary, not the live one — archiving a question must never
11
+ * erase the answer already recorded under it. */
12
+ sections: readonly IntakeSectionDef[];
13
+ sex: PatientSex;
14
+ t: TFunction;
15
+ }
16
+ /** Every recorded answer as term ↔ detail, grouped by questionnaire section,
17
+ * with the "from patient" marker on values the clinician has not touched.
18
+ * Zero edit affordances — this is a read presentation, not a disabled form. */
19
+ export declare function AnamnesisAnswerList({ intake, sections, sex, t, }: AnamnesisAnswerListProps): import("react/jsx-runtime").JSX.Element;
20
+ export interface AnamnesisSummaryProps {
21
+ /** Absent = no questionnaire was ever sent back. */
22
+ intake: IntakeResponse | undefined;
23
+ sections: readonly IntakeSectionDef[];
24
+ sex: PatientSex;
25
+ digest: IntakeDigest;
26
+ missing: readonly MissingAnswer[];
27
+ /** Hands the gap to the Compile tab, which is where answers are recorded. */
28
+ onJump: (missing: MissingAnswer) => void;
29
+ t: TFunction;
30
+ }
31
+ /** The Summary panel. One h2 for the tab's subject, the digest's groups as
32
+ * h3 under it, then the full questionnaire behind its own h2 trigger — so the
33
+ * heading order is h1 → h2 → h3 with no jump, on a panel with no inputs. */
34
+ export declare function AnamnesisSummary({ intake, sections, sex, digest, missing, onJump, t, }: AnamnesisSummaryProps): import("react/jsx-runtime").JSX.Element;
35
+ //# sourceMappingURL=anamnesis-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anamnesis-summary.d.ts","sourceRoot":"","sources":["../../../src/patterns/anamnesis/anamnesis-summary.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AASzC,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,EACX,MAAM,mBAAmB,CAAC;AAE3B;;4CAE4C;AAC5C,eAAO,MAAM,kBAAkB,QAEoF,CAAC;AAIpH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,cAAc,CAAC;IACvB;qDACiD;IACjD,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACtC,GAAG,EAAE,UAAU,CAAC;IAChB,CAAC,EAAE,SAAS,CAAC;CACd;AAED;;+EAE+E;AAC/E,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,QAAQ,EACR,GAAG,EACH,CAAC,GACF,EAAE,wBAAwB,2CAqD1B;AAID,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC;IACnC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACtC,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,6EAA6E;IAC7E,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IACzC,CAAC,EAAE,SAAS,CAAC;CACd;AAED;;4EAE4E;AAC5E,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,QAAQ,EACR,GAAG,EACH,MAAM,EACN,OAAO,EACP,MAAM,EACN,CAAC,GACF,EAAE,qBAAqB,2CAqEvB"}
@@ -0,0 +1,18 @@
1
+ import type { TFunction } from 'i18next';
2
+ import type { NumericParameterDef } from './anamnesis-types';
3
+ export interface TargetEditorProps {
4
+ def: NumericParameterDef;
5
+ /** The host's own label for the metric, for the trigger's accessible name. */
6
+ label: string;
7
+ /** The committed target, or `null` when none is set. */
8
+ committed: number | null;
9
+ /** The current-value line ("Now 74.5 kg"), reused as the form's context. */
10
+ nowLabel: string;
11
+ t: TFunction;
12
+ onCommit: (target: number | null) => void;
13
+ }
14
+ /** The edit affordance: a labelled button on the tile that opens a small form.
15
+ * The draft is local and discarded on dismiss — nothing is committed until
16
+ * Save, which is the tile's committed/dirty boundary. */
17
+ export declare function TargetEditor({ def, label, committed, nowLabel, t, onCommit, }: TargetEditorProps): import("react/jsx-runtime").JSX.Element;
18
+ //# sourceMappingURL=anamnesis-target-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anamnesis-target-editor.d.ts","sourceRoot":"","sources":["../../../src/patterns/anamnesis/anamnesis-target-editor.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAazC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAI7D,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,mBAAmB,CAAC;IACzB,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB,CAAC,EAAE,SAAS,CAAC;IACb,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3C;AAcD;;yDAEyD;AACzD,wBAAgB,YAAY,CAAC,EAC3B,GAAG,EACH,KAAK,EACL,SAAS,EACT,QAAQ,EACR,CAAC,EACD,QAAQ,GACT,EAAE,iBAAiB,2CA+FnB"}
@@ -0,0 +1,14 @@
1
+ import type { TFunction } from 'i18next';
2
+ import type { NumericParameterDef, Visit } from './anamnesis-types';
3
+ export interface AnamnesisTargetStripProps {
4
+ /** The visit the "Now" figures are read from — the newest one. */
5
+ visit: Visit;
6
+ /** The strip's parameters, in order. See `stripParameters`. */
7
+ defs: NumericParameterDef[];
8
+ /** Committed targets by parameter key. */
9
+ targets: Map<string, number>;
10
+ t: TFunction;
11
+ onTargetChange: (def: NumericParameterDef, target: number | null) => void;
12
+ }
13
+ export declare function AnamnesisTargetStrip({ visit, defs, targets, t, onTargetChange, }: AnamnesisTargetStripProps): import("react/jsx-runtime").JSX.Element | null;
14
+ //# sourceMappingURL=anamnesis-target-strip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anamnesis-target-strip.d.ts","sourceRoot":"","sources":["../../../src/patterns/anamnesis/anamnesis-target-strip.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAQzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAwEpE,MAAM,WAAW,yBAAyB;IACxC,kEAAkE;IAClE,KAAK,EAAE,KAAK,CAAC;IACb,+DAA+D;IAC/D,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAC5B,0CAA0C;IAC1C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC,EAAE,SAAS,CAAC;IACb,cAAc,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC3E;AAID,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,IAAI,EACJ,OAAO,EACP,CAAC,EACD,cAAc,GACf,EAAE,yBAAyB,kDA6B3B"}
@@ -0,0 +1,58 @@
1
+ import type { TargetStatus } from '../_shared/target-tile';
2
+ import type { PracticeAnamnesisConfig } from './anamnesis-config';
3
+ import type { NumericParameterDef } from './anamnesis-types';
4
+ export type { TargetStatus };
5
+ /** The strip is the practice's CHOSEN goals — every live parameter whose
6
+ * `goal` flag is set, in capture display order. The kit seeds the four
7
+ * figures a nutrition plan is written in (weight, BMI, daily energy,
8
+ * protein), and the configuration editor's Targets tab toggles the set. A
9
+ * parameter the practice archived is simply absent, so a practice that does
10
+ * not estimate intake gets a two-tile strip rather than a tile reading from
11
+ * nothing. */
12
+ export declare function stripParameters(config?: PracticeAnamnesisConfig): NumericParameterDef[];
13
+ /** How wide "on target" and "approaching" are for one parameter.
14
+ *
15
+ * `kind` — `absolute` bands are in the parameter's own unit; `relative` ones
16
+ * are a fraction of the target. Absolute is right where the scale itself is
17
+ * narrow and fixed (BMI); relative is right where the target's magnitude
18
+ * varies patient to patient (weight, energy, protein).
19
+ *
20
+ * `sided` — `both` counts an overshoot as a miss; `atLeast` treats the target
21
+ * as a FLOOR (at or above it is met); `atMost` as a CAP. */
22
+ export interface TargetBand {
23
+ kind: 'absolute' | 'relative';
24
+ /** Within this of the target = on target. */
25
+ onTarget: number;
26
+ /** Within this = approaching; beyond it = off target. */
27
+ approaching: number;
28
+ sided: 'both' | 'atLeast' | 'atMost';
29
+ }
30
+ /** Per-parameter bands. Each comment is the clinical reason for the width. */
31
+ export declare const TARGET_BANDS: Readonly<Record<string, TargetBand>>;
32
+ /** The band for a parameter the practice added itself. Two-sided 5% / 15% —
33
+ * wide enough not to shout at a measurement's own noise, narrow enough that
34
+ * "on target" still means something. */
35
+ export declare const DEFAULT_TARGET_BAND: TargetBand;
36
+ /** The band a parameter is judged by. Never throws on an unknown key. */
37
+ export declare function targetBandFor(parameterKey: string): TargetBand;
38
+ /** Where `now` stands against `target`. `null` whenever the question cannot be
39
+ * asked — no target set, or nothing measured yet — so the tile shows no
40
+ * traffic light rather than a green one it has not earned. */
41
+ export declare function targetStatus(now: number | null, target: number | null, parameterKey: string): TargetStatus | null;
42
+ /** The range and granularity the target editor accepts for one parameter. */
43
+ export interface TargetBounds {
44
+ min: number;
45
+ max: number;
46
+ step: number;
47
+ }
48
+ /** Physiologically sane editor bounds. Wide enough for any real patient,
49
+ * narrow enough that a slipped decimal point is rejected at the input. */
50
+ export declare const TARGET_BOUNDS: Readonly<Record<string, TargetBounds>>;
51
+ /** Bounds for a parameter, falling back to a non-negative range stepped at the
52
+ * parameter's own precision so a practice-added target is still editable. */
53
+ export declare function targetBoundsFor(def: NumericParameterDef): TargetBounds;
54
+ /** Whether a drafted target may be committed. Out-of-bounds is rejected at the
55
+ * editor rather than clamped: silently changing a clinician's 620 to 400 is
56
+ * worse than refusing it. `null` is always committable — it clears. */
57
+ export declare function isTargetInBounds(draft: number | null, bounds: TargetBounds): boolean;
58
+ //# sourceMappingURL=anamnesis-targets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anamnesis-targets.d.ts","sourceRoot":"","sources":["../../../src/patterns/anamnesis/anamnesis-targets.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,YAAY,EAAE,YAAY,EAAE,CAAC;AAI7B;;;;;;cAMc;AACd,wBAAgB,eAAe,CAC7B,MAAM,CAAC,EAAE,uBAAuB,GAC/B,mBAAmB,EAAE,CAEvB;AAID;;;;;;;;4DAQ4D;AAC5D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IAC9B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;CACtC;AAED,8EAA8E;AAC9E,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAiC7D,CAAC;AAEF;;wCAEwC;AACxC,eAAO,MAAM,mBAAmB,EAAE,UAKjC,CAAC;AAEF,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,CAE9D;AAQD;;8DAE8D;AAC9D,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,YAAY,EAAE,MAAM,GACnB,YAAY,GAAG,IAAI,CAcrB;AAID,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED;0EAC0E;AAC1E,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAMhE,CAAC;AAEF;6EAC6E;AAC7E,wBAAgB,eAAe,CAAC,GAAG,EAAE,mBAAmB,GAAG,YAAY,CAKtE;AAED;;uEAEuE;AACvE,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,MAAM,EAAE,YAAY,GACnB,OAAO,CAIT"}