@alfadocs/ui-kit 1.4.17 → 1.6.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 (92) hide show
  1. package/dist/_chunks/{booking-CGKof8QU.js → booking-D84O6H2X.js} +553 -546
  2. package/dist/_chunks/{care-plan-card-C83Hb9EE.js → care-plan-card-CehAU7F_.js} +2 -2
  3. package/dist/_chunks/{care-plan-entry-card-CHMPSTCz.js → care-plan-entry-card-ChWRMfMw.js} +2 -2
  4. package/dist/_chunks/{periodontal-chart-brakjj0s.js → periodontal-chart-C0nNQKKK.js} +121 -121
  5. package/dist/_chunks/practice-profile-hero-Bdd0bFqC.js +187 -0
  6. package/dist/_chunks/{practice-results-DWUZRm2x.js → practice-results-CKoLD_x5.js} +220 -206
  7. package/dist/_chunks/tooth-data-DR8Kdnup.js +903 -0
  8. package/dist/_chunks/tooth-finding-palette-vqC-D2Ye.js +708 -0
  9. package/dist/_chunks/tooth-scheme-BPXE1_3N.js +2051 -0
  10. package/dist/agent-catalog.json +497 -56
  11. package/dist/agent-i18n/en.json +29 -11
  12. package/dist/components/booking/booking-types.d.ts +9 -0
  13. package/dist/components/booking/index.js +1 -1
  14. package/dist/components/care-plan-card/index.js +1 -1
  15. package/dist/components/care-plan-entry-card/index.js +1 -1
  16. package/dist/components/index.d.ts +2 -0
  17. package/dist/components/periodontal-chart/index.js +1 -1
  18. package/dist/components/practice-profile-hero/index.d.ts +4 -0
  19. package/dist/components/practice-profile-hero/index.js +6 -0
  20. package/dist/components/practice-profile-hero/practice-profile-hero.agent.d.ts +4 -0
  21. package/dist/components/practice-profile-hero/practice-profile-hero.d.ts +60 -0
  22. package/dist/components/practice-results/index.js +1 -1
  23. package/dist/components/practice-results/practice-results.d.ts +15 -1
  24. package/dist/components/tooth-finding-palette/index.d.ts +4 -0
  25. package/dist/components/tooth-finding-palette/index.js +9 -0
  26. package/dist/components/tooth-finding-palette/tooth-finding-palette.agent.d.ts +4 -0
  27. package/dist/components/tooth-finding-palette/tooth-finding-palette.d.ts +89 -0
  28. package/dist/components/tooth-scheme/index.d.ts +2 -2
  29. package/dist/components/tooth-scheme/index.js +57 -30
  30. package/dist/components/tooth-scheme/tooth-data.d.ts +279 -10
  31. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts +2 -2
  32. package/dist/components/tooth-scheme/tooth-scheme.d.ts +30 -3
  33. package/dist/host-compat.css +1 -4
  34. package/dist/i18n/locales/ar.d.ts +41 -1
  35. package/dist/i18n/locales/ar.js +42 -2
  36. package/dist/i18n/locales/de.d.ts +41 -1
  37. package/dist/i18n/locales/de.js +42 -2
  38. package/dist/i18n/locales/el.d.ts +41 -1
  39. package/dist/i18n/locales/el.js +42 -2
  40. package/dist/i18n/locales/en.d.ts +41 -1
  41. package/dist/i18n/locales/en.js +42 -2
  42. package/dist/i18n/locales/es.d.ts +41 -1
  43. package/dist/i18n/locales/es.js +42 -2
  44. package/dist/i18n/locales/fr.d.ts +41 -1
  45. package/dist/i18n/locales/fr.js +42 -2
  46. package/dist/i18n/locales/hi.d.ts +41 -1
  47. package/dist/i18n/locales/hi.js +42 -2
  48. package/dist/i18n/locales/it.d.ts +41 -1
  49. package/dist/i18n/locales/it.js +42 -2
  50. package/dist/i18n/locales/ja.d.ts +41 -1
  51. package/dist/i18n/locales/ja.js +42 -2
  52. package/dist/i18n/locales/nl.d.ts +41 -1
  53. package/dist/i18n/locales/nl.js +42 -2
  54. package/dist/i18n/locales/pl.d.ts +41 -1
  55. package/dist/i18n/locales/pl.js +42 -2
  56. package/dist/i18n/locales/pt.d.ts +41 -1
  57. package/dist/i18n/locales/pt.js +42 -2
  58. package/dist/i18n/locales/ro.d.ts +41 -1
  59. package/dist/i18n/locales/ro.js +42 -2
  60. package/dist/i18n/locales/ru.d.ts +41 -1
  61. package/dist/i18n/locales/ru.js +42 -2
  62. package/dist/i18n/locales/sq.d.ts +41 -1
  63. package/dist/i18n/locales/sq.js +42 -2
  64. package/dist/i18n/locales/sv.d.ts +41 -1
  65. package/dist/i18n/locales/sv.js +42 -2
  66. package/dist/i18n/locales/tr.d.ts +41 -1
  67. package/dist/i18n/locales/tr.js +42 -2
  68. package/dist/i18n/locales/zh.d.ts +41 -1
  69. package/dist/i18n/locales/zh.js +42 -2
  70. package/dist/index.js +561 -525
  71. package/dist/locales/ar.json +42 -2
  72. package/dist/locales/de.json +42 -2
  73. package/dist/locales/el.json +42 -2
  74. package/dist/locales/en.json +42 -2
  75. package/dist/locales/es.json +42 -2
  76. package/dist/locales/fr.json +42 -2
  77. package/dist/locales/hi.json +42 -2
  78. package/dist/locales/it.json +42 -2
  79. package/dist/locales/ja.json +42 -2
  80. package/dist/locales/nl.json +42 -2
  81. package/dist/locales/pl.json +42 -2
  82. package/dist/locales/pt.json +42 -2
  83. package/dist/locales/ro.json +42 -2
  84. package/dist/locales/ru.json +42 -2
  85. package/dist/locales/sq.json +42 -2
  86. package/dist/locales/sv.json +42 -2
  87. package/dist/locales/tr.json +42 -2
  88. package/dist/locales/zh.json +42 -2
  89. package/dist/tokens.css +1 -1
  90. package/package.json +9 -1
  91. package/dist/_chunks/tooth-data-BwuoKFf4.js +0 -660
  92. package/dist/_chunks/tooth-scheme-s0ipC0-Z.js +0 -1483
@@ -1019,6 +1019,12 @@
1019
1019
  "clear": "Empty the field. Loses any typed value."
1020
1020
  }
1021
1021
  },
1022
+ "practiceProfileHero": {
1023
+ "state": {
1024
+ "name": "Practice display name currently rendered.",
1025
+ "hasCover": "Whether a cover-image strip is rendered. Structural flag only — never the image URL or any PHI."
1026
+ }
1027
+ },
1022
1028
  "practiceResults": {
1023
1029
  "state": {
1024
1030
  "variant": "Active variant — one of `split-list-map`, `map-first`, `rich-cards`."
@@ -1439,21 +1445,38 @@
1439
1445
  "insert": "Emit a merge-token to the consumer for cursor insertion."
1440
1446
  }
1441
1447
  },
1448
+ "toothFindingPalette": {
1449
+ "state": {
1450
+ "activeFinding": "Id of the armed finding tool, or null when no tool is selected. Identifies a finding TYPE — never a patient, and never a charted finding.",
1451
+ "status": "Execution status the next charted finding takes — 'planned' or 'executed'.",
1452
+ "tools": "Every finding id the palette currently offers, in render order — built-ins plus any practice-defined ids. The authoritative vocabulary for select_finding."
1453
+ },
1454
+ "actions": {
1455
+ "selectFinding": "Arm a finding tool, so the next tooth (or surface, or root) picked on the paired dental chart records that finding.",
1456
+ "clearSelection": "Disarm the palette so clicks on the chart stop recording a finding. Charted findings are untouched.",
1457
+ "setStatus": "Choose whether the next charted finding is recorded as planned or executed.",
1458
+ "focusTool": "Move keyboard focus to a tool without arming it — relocates the toolbar's single roving tab stop."
1459
+ }
1460
+ },
1442
1461
  "toothScheme": {
1443
1462
  "state": {
1444
- "chart": "Current dental chart — findings (and marked surfaces) keyed by FDI id, or by a special-element id (quadrant / sextant / arch / general) for region-spanning findings.",
1463
+ "chart": "Current dental chart keyed by FDI id, or by a special-element id (quadrant / sextant / arch / general) for region-spanning findings. Each entry carries the flat `conditions` + `surfaces` pair AND the normalised per-symbol list, where every finding scopes its own surfaces, roots, planned/executed status and colour. Free-text clinical notes are PHI and omitted — read them per tooth via get_symbols / get_notes.",
1445
1464
  "chartedTeeth": "Ids carrying at least one finding — FDI tooth ids and/or special-element ids (quadrant / sextant / arch / general).",
1446
1465
  "radiographs": "Structural references (id + kind) to the radiographs on each tooth, keyed by FDI id. Notes, dates and image URLs are not exposed here — fetch them on demand via get_radiographs.",
1447
1466
  "teethWithRadiographs": "FDI ids of every tooth carrying at least one radiograph."
1448
1467
  },
1449
1468
  "actions": {
1450
1469
  "focusTooth": "Move focus to a specific tooth by FDI id.",
1451
- "getTooth": "Read the findings recorded on one tooth (FDI id).",
1452
- "teethWith": "List the ids carrying a given findingFDI tooth ids and/or special-element ids (e.g. all teeth with caries).",
1453
- "getRadiographs": "Read the radiographs (x-rays) attached to one tooth.",
1470
+ "getTooth": "Read the BUILT-IN findings recorded on one tooth (FDI id), as a flat list of condition ids. Practice-defined findings, per-finding surfaces, roots and status are not included — use get_symbols for the tooth's full record.",
1471
+ "getSymbols": "Read one tooth's full finding record (incl. notes) one entry per symbol, each with its own surfaces, roots, planned/executed status, colour override, provenance id and free-text note. Normalised, so a tooth charted with the flat conditions/surfaces pair reports the same shape.",
1472
+ "getNotes": "Read the tooth-level free-text clinical note, or null when there is none. Per-finding notes are separate — they come back from get_symbols.",
1473
+ "teethWith": "List the ids carrying a given built-in finding — FDI tooth ids and/or special-element ids (e.g. all teeth with caries). For a practice-defined finding use teeth_with_symbol.",
1474
+ "teethWithSymbol": "As teeth_with, but open to the practice-defined ids in the host's `conditionRegistry` as well as the built-ins.",
1475
+ "getRadiographs": "Read the radiographs (x-rays) attached to one tooth, including their notes, dates and image urls.",
1454
1476
  "openRadiographs": "Focus a tooth and open its radiograph archive (fires the host's onOpenRadiographs).",
1455
- "setFinding": "Record a finding on a tooth or region element (crown, implant, root canal, caries, …). Optionally mark the affected surfaces for a surface finding.",
1456
- "removeFinding": "Remove a single finding from a tooth.",
1477
+ "setFinding": "Record a built-in finding on a tooth or region element (crown, implant, root canal, caries, …). Optionally mark the affected surfaces for a surface finding. Structural only — to set a finding’s roots, planned/executed status, colour or note, or to chart a practice-defined finding, use set_symbol.",
1478
+ "setSymbol": "Add or replace one finding on a tooth or region element, with its own part, surfaces, roots, planned/executed status, colour override and note. Matched by `symbol.id` when the symbol carries provenance, otherwise by its condition; appended when nothing matches. Accepts practice-defined `conditionRegistry` ids as well as the built-ins.",
1479
+ "removeFinding": "Remove a finding from a tooth — every symbol carrying that condition goes, whatever its surfaces or roots. Built-in ids only.",
1457
1480
  "clearTooth": "Clear every finding from a tooth."
1458
1481
  }
1459
1482
  },
@@ -1798,11 +1821,6 @@
1798
1821
  "clearDiagnosis": "Reset the recorded stage, grade, extent and contributing factors back to empty, leaving the chart readings untouched. Not undoable from this surface."
1799
1822
  }
1800
1823
  },
1801
- "practiceProfileHero": {
1802
- "workflows": {
1803
- "viewProfile": "Read the practice's public profile summary — name, tagline, average rating, review count, and trust badges."
1804
- }
1805
- },
1806
1824
  "prenota": {
1807
1825
  "workflows": {
1808
1826
  "searchPractitioners": "Pick a specialty / clinic and a location in the hero search comboboxes and submit to find matching practitioners.",
@@ -18,6 +18,15 @@ export interface BookingService {
18
18
  label: string;
19
19
  /** Minutes — required for slot fetching. */
20
20
  durationMin: number;
21
+ /**
22
+ * Pre-formatted price label (e.g. "€ 80", "da € 60"). When present, the
23
+ * service picker shows the price INSTEAD of the duration — durations vary
24
+ * case by case and set the wrong expectation, while price is what patients
25
+ * compare. `durationMin` keeps driving slot fetching either way. Currency
26
+ * and number formatting are the consumer's domain — the kit renders the
27
+ * string verbatim. Added in 1.6.0.
28
+ */
29
+ priceLabel?: string;
21
30
  /** Required when useSpecialties is true. */
22
31
  specialtyId?: string;
23
32
  /** Operators who can perform this service. */
@@ -1,4 +1,4 @@
1
- import { B as A, C as R, O as a, b as s } from "../../_chunks/booking-CGKof8QU.js";
1
+ import { B as A, C as R, O as a, b as s } from "../../_chunks/booking-D84O6H2X.js";
2
2
  export {
3
3
  A as Booking,
4
4
  R as CONFIRMATION_CHANNEL_ORDER,
@@ -1,4 +1,4 @@
1
- import { C as e, c as C } from "../../_chunks/care-plan-card-C83Hb9EE.js";
1
+ import { C as e, c as C } from "../../_chunks/care-plan-card-CehAU7F_.js";
2
2
  export {
3
3
  e as CarePlanCard,
4
4
  C as carePlanCardAgent
@@ -1,4 +1,4 @@
1
- import { C as n, c as e } from "../../_chunks/care-plan-entry-card-CHMPSTCz.js";
1
+ import { C as n, c as e } from "../../_chunks/care-plan-entry-card-ChWRMfMw.js";
2
2
  export {
3
3
  n as CarePlanEntryCard,
4
4
  e as carePlanEntryCardAgent
@@ -172,6 +172,7 @@ export * from './care-plan-card';
172
172
  export * from './care-plan-entry-card';
173
173
  export * from './care-plan-header';
174
174
  export * from './operator-hero';
175
+ export * from './practice-profile-hero';
175
176
  export * from './patient-details';
176
177
  export * from './patient-search';
177
178
  export * from './patient-summary-card';
@@ -196,6 +197,7 @@ export * from './sign-document';
196
197
  export * from './slot-grid';
197
198
  export * from './face-scheme';
198
199
  export * from './tooth-scheme';
200
+ export * from './tooth-finding-palette';
199
201
  export * from './transaction-chip';
200
202
  export * from './whatsapp-button';
201
203
  export * from './workflow';
@@ -1,4 +1,4 @@
1
- import { B as t, M as s, P as e, a as i, b as E, c as r, d as P, S as _, e as n, f as A, g as d, h as l, p as T, i as p, j as C, k as L, s as N, t as O, l as R } from "../../_chunks/periodontal-chart-brakjj0s.js";
1
+ import { B as t, M as s, P as e, a as i, b as E, c as r, d as P, S as _, e as n, f as A, g as d, h as l, p as T, i as p, j as C, k as L, s as N, t as O, l as R } from "../../_chunks/periodontal-chart-C0nNQKKK.js";
2
2
  export {
3
3
  t as BLEEDING_WARN_PERCENT,
4
4
  s as MODERATE_POCKET_MM,
@@ -0,0 +1,4 @@
1
+ export { PracticeProfileHero } from './practice-profile-hero';
2
+ export type { PracticeProfileHeroProps, PracticeProfileHeroBadge, PracticeProfileHeroRating, PracticeProfileHeroHandle, } from './practice-profile-hero';
3
+ export { practiceProfileHeroAgent } from './practice-profile-hero.agent';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,6 @@
1
+ import { P as o, p as a } from "../../_chunks/practice-profile-hero-Bdd0bFqC.js";
2
+ export {
3
+ o as PracticeProfileHero,
4
+ a as practiceProfileHeroAgent
5
+ };
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,4 @@
1
+ import type { AgentAdapter } from '../../agent/types';
2
+ import type { PracticeProfileHeroHandle } from './practice-profile-hero';
3
+ export declare const practiceProfileHeroAgent: AgentAdapter<PracticeProfileHeroHandle>;
4
+ //# sourceMappingURL=practice-profile-hero.agent.d.ts.map
@@ -0,0 +1,60 @@
1
+ import { type ComponentPropsWithoutRef, type ReactNode } from 'react';
2
+ export interface PracticeProfileHeroBadge {
3
+ /** Display key — i18n is up to the consumer. */
4
+ key: string;
5
+ /** Display label. */
6
+ label: string;
7
+ /** Badge variant — falls back to `neutral`. */
8
+ variant?: 'neutral' | 'info' | 'success' | 'warning' | 'error';
9
+ }
10
+ export interface PracticeProfileHeroRating {
11
+ /** Mean rating, 0–5. */
12
+ value: number;
13
+ /** Total number of reviews. */
14
+ count: number;
15
+ }
16
+ export interface PracticeProfileHeroHandle {
17
+ getName: () => string;
18
+ /** Structural flag — whether a cover strip is rendered. No PHI. */
19
+ getHasCover: () => boolean;
20
+ }
21
+ export interface PracticeProfileHeroProps extends Omit<ComponentPropsWithoutRef<'div'>, 'aria-label' | 'children'> {
22
+ /** Practice display name. Rendered as the H1 heading. */
23
+ name: string;
24
+ /** Slogan / tagline subtitle (e.g. "15 anni di esperienza nel cuore di Brera"). */
25
+ tagline?: string;
26
+ /**
27
+ * Optional practice photo / logo URL. The kit always renders an
28
+ * `<Avatar>` — when `imageUrl` is missing the avatar falls back to
29
+ * initials.
30
+ */
31
+ imageUrl?: string;
32
+ /**
33
+ * Optional cover image painted as a full-width strip above the body.
34
+ * The strip renders ONLY when this is set — a practice without a cover
35
+ * image gets no strip (and no empty gradient band). While the image
36
+ * loads, the brand gradient shows underneath it.
37
+ */
38
+ coverImageUrl?: string;
39
+ /** Rating summary — when present, renders a Rating + numeric breakdown line. */
40
+ rating?: PracticeProfileHeroRating;
41
+ /**
42
+ * Optional badge row beneath the rating. Use sparingly — 1–3 chips
43
+ * suit the hero's density; longer lists belong in `<ContactProfileCard>`.
44
+ */
45
+ badges?: PracticeProfileHeroBadge[];
46
+ /**
47
+ * Rendered at the inline-end of the heading row (right side on LTR).
48
+ * Use for a "Book an appointment" `<Button>` or a share action.
49
+ */
50
+ actionSlot?: ReactNode;
51
+ /**
52
+ * `elevated` (default) wraps in `<Card variant="elevated">`. `flat`
53
+ * drops the Card — use inside another card / sheet.
54
+ */
55
+ surface?: 'flat' | 'elevated';
56
+ 'aria-label'?: string;
57
+ id?: string;
58
+ }
59
+ export declare const PracticeProfileHero: import("react").ForwardRefExoticComponent<PracticeProfileHeroProps & import("react").RefAttributes<HTMLDivElement>>;
60
+ //# sourceMappingURL=practice-profile-hero.d.ts.map
@@ -1,4 +1,4 @@
1
- import { P as t, p as a } from "../../_chunks/practice-results-DWUZRm2x.js";
1
+ import { P as t, p as a } from "../../_chunks/practice-results-CKoLD_x5.js";
2
2
  export {
3
3
  t as PracticeResults,
4
4
  a as practiceResultsAgent
@@ -74,9 +74,23 @@ export interface FacetOption {
74
74
  export interface FacetGroup {
75
75
  key: string;
76
76
  label: string;
77
- /** Empty array = boolean toggle. Non-empty = dropdown. */
77
+ /** Non-empty = dropdown of selectable options. */
78
78
  options: FacetOption[];
79
79
  multi?: boolean;
80
+ /**
81
+ * Facet behaviour. `'boolean'` renders a single on/off toggle chip that
82
+ * keeps results whose `field` (default: `key`) is `true`. `'options'`
83
+ * forces dropdown semantics. When omitted, non-empty `options` means
84
+ * dropdown; an empty `options` array falls back to the legacy boolean
85
+ * degrade ONLY when at least one result actually carries a boolean at
86
+ * `field` — otherwise the group is not rendered and not filtered on.
87
+ * (Before 1.6.0 an empty-options group always became a boolean toggle
88
+ * keyed by `key`; with missing data or a mismatched field name a single
89
+ * click filtered out every result.) Added in 1.6.0.
90
+ */
91
+ type?: 'options' | 'boolean';
92
+ /** Result field a boolean facet reads — defaults to `key`. Added in 1.6.0. */
93
+ field?: string;
80
94
  }
81
95
  export interface PracticeResultsHandle {
82
96
  getVariant: () => PracticeResultsVariant;
@@ -0,0 +1,4 @@
1
+ export { ToothFindingPalette, toothFindingPaletteVariants, DEFAULT_FINDING_GROUPS, CUSTOM_FINDING_GROUP_ID, } from './tooth-finding-palette';
2
+ export type { ToothFindingPaletteProps, ToothFindingPaletteHandle, ToothFindingPaletteGroup, } from './tooth-finding-palette';
3
+ export { toothFindingPaletteAgent } from './tooth-finding-palette.agent';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,9 @@
1
+ import { C as e, D as n, T as o, t as i, a as s } from "../../_chunks/tooth-finding-palette-vqC-D2Ye.js";
2
+ export {
3
+ e as CUSTOM_FINDING_GROUP_ID,
4
+ n as DEFAULT_FINDING_GROUPS,
5
+ o as ToothFindingPalette,
6
+ i as toothFindingPaletteAgent,
7
+ s as toothFindingPaletteVariants
8
+ };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,4 @@
1
+ import type { AgentAdapter } from '../../agent/types';
2
+ import type { ToothFindingPaletteHandle } from './tooth-finding-palette';
3
+ export declare const toothFindingPaletteAgent: AgentAdapter<ToothFindingPaletteHandle>;
4
+ //# sourceMappingURL=tooth-finding-palette.agent.d.ts.map
@@ -0,0 +1,89 @@
1
+ import { type HTMLAttributes } from 'react';
2
+ import { type ConditionDefinition, type ConditionId, type SymbolStatus } from '../tooth-scheme/tooth-data';
3
+ /** One clinically-meaningful run of tools inside the palette. */
4
+ export interface ToothFindingPaletteGroup {
5
+ /** Stable id — emitted as `data-group` and used for the default heading key. */
6
+ id: string;
7
+ /**
8
+ * Already-translated heading. Omit for a built-in group and the palette
9
+ * resolves `toothFindingPalette.group.<id>` instead; a custom group with no
10
+ * label and no matching key falls back to its own id.
11
+ */
12
+ label?: string;
13
+ /** Findings in this group, in render order. */
14
+ conditions: ConditionId[];
15
+ }
16
+ /**
17
+ * Curated imperative handle. Exposed as the `forwardRef` target so a future
18
+ * agent / MCP UI bridge can arm a tool without touching the DOM — see
19
+ * `tooth-finding-palette.agent.ts`. Everything here is transient tool state;
20
+ * no patient record is reachable through it.
21
+ */
22
+ export interface ToothFindingPaletteHandle {
23
+ /** The armed finding id, or null when the palette is disarmed. */
24
+ getValue: () => ConditionId | null;
25
+ /** Arm a finding tool (or pass null to disarm). */
26
+ setValue: (condition: ConditionId | null) => void;
27
+ /** Disarm the palette. Charted findings are untouched. */
28
+ clear: () => void;
29
+ /** The status the next charted finding takes. */
30
+ getStatus: () => SymbolStatus;
31
+ setStatus: (status: SymbolStatus) => void;
32
+ /** Every finding id the palette currently offers, in render order. */
33
+ getTools: () => ConditionId[];
34
+ /** Move the roving tab stop (and focus) to a tool without arming it. */
35
+ focusTool: (condition: ConditionId) => void;
36
+ }
37
+ export interface ToothFindingPaletteProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue' | 'role' | 'color'> {
38
+ /** Controlled armed finding. `null` means "no tool armed". */
39
+ value?: ConditionId | null;
40
+ /** Initial armed finding when uncontrolled. */
41
+ defaultValue?: ConditionId | null;
42
+ /** Fires on every arm / disarm, including the toggle-off to `null`. */
43
+ onChange?: (condition: ConditionId | null) => void;
44
+ /**
45
+ * Which tools to show. Ignored when `groups` is supplied (order the groups
46
+ * instead). Omit both and the palette ships the default grouping of all
47
+ * built-in findings.
48
+ */
49
+ conditions?: ConditionId[];
50
+ /** Explicit grouping. Wins over `conditions`. */
51
+ groups?: ToothFindingPaletteGroup[];
52
+ /**
53
+ * Practice-defined findings. They resolve exactly as they do on the chart
54
+ * (registry → built-in → glyph fallback) and, under the default grouping,
55
+ * any id that is not a built-in is appended as a "Practice findings" group.
56
+ */
57
+ conditionRegistry?: ConditionDefinition[];
58
+ /** Show the planned / executed selector. Default `false`. */
59
+ showStatus?: boolean;
60
+ /** Controlled execution status. */
61
+ status?: SymbolStatus;
62
+ /** Initial execution status when uncontrolled. Default `'planned'`. */
63
+ defaultStatus?: SymbolStatus;
64
+ onStatusChange?: (status: SymbolStatus) => void;
65
+ /** Tile scale. Default `'md'`. */
66
+ size?: 'sm' | 'md' | 'lg';
67
+ /** Wide bar (`'horizontal'`, default) or sidebar rail (`'vertical'`). */
68
+ orientation?: 'horizontal' | 'vertical';
69
+ /** Root the tooth renders are served from. Matches `ToothScheme`. */
70
+ assetBaseUrl?: string;
71
+ /** Disable every tool. */
72
+ disabled?: boolean;
73
+ /** Disable individual tools (e.g. findings this practice cannot chart). */
74
+ disabledConditions?: ConditionId[];
75
+ /** Accessible name for the toolbar. Falls back to a translated default. */
76
+ ariaLabel?: string;
77
+ /** Render the group headings. Default `true`. */
78
+ showGroupLabels?: boolean;
79
+ className?: string;
80
+ }
81
+ export declare const DEFAULT_FINDING_GROUPS: ToothFindingPaletteGroup[];
82
+ /** Group id used for registry findings under the default grouping. */
83
+ export declare const CUSTOM_FINDING_GROUP_ID = "custom";
84
+ export declare const toothFindingPaletteVariants: (props?: ({
85
+ orientation?: "vertical" | "horizontal" | null | undefined;
86
+ size?: "sm" | "md" | "lg" | null | undefined;
87
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
88
+ export declare const ToothFindingPalette: import("react").ForwardRefExoticComponent<ToothFindingPaletteProps & import("react").RefAttributes<ToothFindingPaletteHandle>>;
89
+ //# sourceMappingURL=tooth-finding-palette.d.ts.map
@@ -1,5 +1,5 @@
1
1
  export * from './tooth-scheme';
2
- export { FDI_TO_META, FDI_TO_UNIVERSAL, FDI_TO_PALMER, CONDITION_COLORS, CONDITION_TOKENS, CONDITION_SIDE_SYMBOL, CONDITION_PLAN_FOLDER, SURFACE_ASSET_NAME, toothImageUrl, conditionSymbolUrl, surfaceSymbolUrl, zonesForTooth, zoneSurface, zonePath, chartFromConditions, emptyChart, labelFor, layoutTeeth, layoutSpecials, specialsForRow, specialIconUrl, generalElement, isSpecialElement, SPECIAL_ELEMENTS, SPECIAL_BY_ID, } from './tooth-data';
3
- export type { Anatomy, Arch, Quadrant, Side, Surface, SurfaceZone, Projection, Radiograph, RadiographKind, SideSymbolSpec, SpecialElement, SpecialElementKind, PositionedSpecial, ToothMeta, PositionedTooth, } from './tooth-data';
2
+ export { FDI_TO_META, FDI_TO_UNIVERSAL, FDI_TO_PALMER, CONDITION_COLORS, CONDITION_TOKENS, CONDITION_PART, CONDITION_SIDE_SYMBOL, CONDITION_PLAN_SYMBOL, CONDITION_PLAN_FOLDER, SURFACE_ASSET_NAME, TOOTH_CONDITIONS, INTRINSIC_CONDITIONS, STATUS_TOKENS, STATUS_COLORS, STATUS_OPACITY, FALLBACK_CONDITION_TOKEN, isBuiltInCondition, statusLabelKey, conditionLabelKey, conditionDefinition, conditionLabel, conditionColor, conditionPart, conditionGlyph, conditionHasArtwork, conditionSideSymbol, conditionPlanSymbol, conditionPlanFolder, symbolColor, symbolsForTooth, rootsForTooth, rootScreenSide, rootFileStem, toothImageUrl, conditionSymbolUrl, planSymbolUrl, surfaceSymbolUrl, zonesForTooth, zoneSurface, zonePath, chartFromConditions, chartFromSymbols, emptyChart, labelFor, layoutTeeth, layoutSpecials, specialsForRow, specialIconUrl, generalElement, isSpecialElement, SPECIAL_ELEMENTS, SPECIAL_BY_ID, } from './tooth-data';
3
+ export type { Anatomy, Arch, Quadrant, Side, Surface, SurfaceZone, Projection, ViewMode, Radiograph, RadiographKind, SideSymbolSpec, SymbolTarget, SymbolRegion, SymbolLetter, SymbolPart, SymbolStatus, Root, RootFileStem, ConditionId, ConditionDefinition, ConditionRegistry, ConditionLabel, ToothSymbol, SpecialElement, SpecialElementKind, PositionedSpecial, ToothMeta, PositionedTooth, } from './tooth-data';
4
4
  export { toothSchemeAgent } from './tooth-scheme.agent';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1,35 +1,62 @@
1
- import { T as o, t as e, r as t } from "../../_chunks/tooth-scheme-s0ipC0-Z.js";
2
- import { C as r, a as S, b as T, c as I, F as _, d as l, e as O, P as N, f as n, S as c, g as h, h as m, i as A, j as i, k as C, l as D, m as F, n as L, o as R, p, s as P, q as M, r as U, t as f, z as u, u as y, v as b } from "../../_chunks/tooth-data-BwuoKFf4.js";
1
+ import { T as s, t, r as e } from "../../_chunks/tooth-scheme-BPXE1_3N.js";
2
+ import { C as i, a as T, b as S, c as l, d as r, e as I, F as O, f as N, g as _, h as c, I as E, P as C, i as A, S as m, j as L, k as d, l as h, m as D, n as F, T as y, o as P, p as b, q as R, r as U, s as p, t as M, u, v as K, w as f, x as B, y as Y, z as H, A as g, B as z, D as w, E as x, G as V, H as k, J as G, K as j, L as q, M as v, N as J, O as Q, Q as W, R as X, U as Z, V as $, W as aa, X as oa, Y as sa, Z as ta, _ as ea, $ as na } from "../../_chunks/tooth-data-DR8Kdnup.js";
3
3
  export {
4
- r as CONDITION_COLORS,
4
+ i as CONDITION_COLORS,
5
+ T as CONDITION_PART,
5
6
  S as CONDITION_PLAN_FOLDER,
6
- T as CONDITION_SIDE_SYMBOL,
7
+ l as CONDITION_PLAN_SYMBOL,
8
+ r as CONDITION_SIDE_SYMBOL,
7
9
  I as CONDITION_TOKENS,
8
- _ as FDI_TO_META,
9
- l as FDI_TO_PALMER,
10
- O as FDI_TO_UNIVERSAL,
11
- N as PERMANENT_TEETH,
12
- n as PRIMARY_TEETH,
13
- c as SPECIAL_BY_ID,
14
- h as SPECIAL_ELEMENTS,
15
- m as SURFACE_ASSET_NAME,
16
- o as ToothScheme,
17
- A as chartFromConditions,
18
- i as conditionSymbolUrl,
19
- C as emptyChart,
20
- D as generalElement,
21
- F as isSpecialElement,
22
- L as labelFor,
23
- R as layoutSpecials,
24
- p as layoutTeeth,
25
- P as specialIconUrl,
26
- M as specialsForRow,
27
- U as surfaceSymbolUrl,
28
- f as toothImageUrl,
29
- e as toothSchemeAgent,
30
- t as toothSchemeVariants,
31
- u as zonePath,
32
- y as zoneSurface,
33
- b as zonesForTooth
10
+ O as FALLBACK_CONDITION_TOKEN,
11
+ N as FDI_TO_META,
12
+ _ as FDI_TO_PALMER,
13
+ c as FDI_TO_UNIVERSAL,
14
+ E as INTRINSIC_CONDITIONS,
15
+ C as PERMANENT_TEETH,
16
+ A as PRIMARY_TEETH,
17
+ m as SPECIAL_BY_ID,
18
+ L as SPECIAL_ELEMENTS,
19
+ d as STATUS_COLORS,
20
+ h as STATUS_OPACITY,
21
+ D as STATUS_TOKENS,
22
+ F as SURFACE_ASSET_NAME,
23
+ y as TOOTH_CONDITIONS,
24
+ s as ToothScheme,
25
+ P as chartFromConditions,
26
+ b as chartFromSymbols,
27
+ R as conditionColor,
28
+ U as conditionDefinition,
29
+ p as conditionGlyph,
30
+ M as conditionHasArtwork,
31
+ u as conditionLabel,
32
+ K as conditionLabelKey,
33
+ f as conditionPart,
34
+ B as conditionPlanFolder,
35
+ Y as conditionPlanSymbol,
36
+ H as conditionSideSymbol,
37
+ g as conditionSymbolUrl,
38
+ z as emptyChart,
39
+ w as generalElement,
40
+ x as isBuiltInCondition,
41
+ V as isSpecialElement,
42
+ k as labelFor,
43
+ G as layoutSpecials,
44
+ j as layoutTeeth,
45
+ q as planSymbolUrl,
46
+ v as rootFileStem,
47
+ J as rootScreenSide,
48
+ Q as rootsForTooth,
49
+ W as specialIconUrl,
50
+ X as specialsForRow,
51
+ Z as statusLabelKey,
52
+ $ as surfaceSymbolUrl,
53
+ aa as symbolColor,
54
+ oa as symbolsForTooth,
55
+ sa as toothImageUrl,
56
+ t as toothSchemeAgent,
57
+ e as toothSchemeVariants,
58
+ ta as zonePath,
59
+ ea as zoneSurface,
60
+ na as zonesForTooth
34
61
  };
35
62
  //# sourceMappingURL=index.js.map