@alfadocs/ui-kit 0.98.0 → 0.99.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 (39) hide show
  1. package/README.md +11 -4
  2. package/dist/_chunks/{address-fields-7k59FnJ6.js → address-fields-pHsfkXGk.js} +2 -2
  3. package/dist/_chunks/{booking-BSpSMmJ2.js → booking-DSOK-bnR.js} +3 -3
  4. package/dist/_chunks/{country-select-BN9nedAp.js → country-select-UEF9BEeQ.js} +2 -2
  5. package/dist/_chunks/flag-DVBE6DnB.js +576 -0
  6. package/dist/_chunks/flag-view-udarpAot.js +131 -0
  7. package/dist/_chunks/{header-settings-CLwFqMHI.js → header-settings--pjYOe6g.js} +2 -2
  8. package/dist/_chunks/{link-cell-renderer-flfZh2qY.js → link-cell-renderer-Bt-mXeQY.js} +2 -2
  9. package/dist/_chunks/{locale-picker-EyvPrwDc.js → locale-picker-BfBUdT1m.js} +310 -239
  10. package/dist/_chunks/{marketplace-app-shell-Bv1ZO4XO.js → marketplace-app-shell-pCHBp8bo.js} +2 -2
  11. package/dist/_chunks/{multi-select-D5QLBJM1.js → multi-select-CC52Qws6.js} +275 -263
  12. package/dist/_chunks/{patient-details-DrhlTrLf.js → patient-details-UmNcxL0c.js} +3 -3
  13. package/dist/_chunks/{patient-table-CvZTIM2R.js → patient-table-QEVsFvwq.js} +2 -2
  14. package/dist/_chunks/{phone-input-D00ZBAm-.js → phone-input-BsZIoE36.js} +2 -2
  15. package/dist/_chunks/{public-header.agent-rX_VA6hd.js → public-header.agent-_8W9biCO.js} +4 -2
  16. package/dist/agent-catalog.json +291 -1
  17. package/dist/agent-i18n/en.json +23 -0
  18. package/dist/components/address-fields/index.js +1 -1
  19. package/dist/components/booking/index.js +1 -1
  20. package/dist/components/country-select/index.js +1 -1
  21. package/dist/components/data-table/index.js +1 -1
  22. package/dist/components/flag/flag-core.d.ts +12 -0
  23. package/dist/components/flag/flag-view.d.ts +38 -0
  24. package/dist/components/flag/flag.d.ts +3 -10
  25. package/dist/components/flag/index.js +1 -1
  26. package/dist/components/header-settings/index.js +1 -1
  27. package/dist/components/locale-picker/index.js +1 -1
  28. package/dist/components/multi-select/index.js +1 -1
  29. package/dist/components/patient-details/index.js +1 -1
  30. package/dist/components/patient-table/index.js +1 -1
  31. package/dist/components/phone-input/index.js +1 -1
  32. package/dist/components/public-header/index.js +1 -1
  33. package/dist/components/workflow/workflow-types.d.ts +4 -5
  34. package/dist/host-compat.css +7 -1
  35. package/dist/index.js +11 -11
  36. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  37. package/dist/tokens.css +1 -1
  38. package/package.json +1 -1
  39. package/dist/_chunks/flag-Cnmivlrl.js +0 -641
@@ -12,12 +12,12 @@ import { E as ce } from "./email-input-Dpe63k0K.js";
12
12
  import { F as pe } from "./fiscal-code-input-QP9gkyDE.js";
13
13
  import { N as ue } from "./number-input-DjWzmlEY.js";
14
14
  import { P as me } from "./panel-header-D313n_9-.js";
15
- import { P as fe } from "./phone-input-D00ZBAm-.js";
15
+ import { P as fe } from "./phone-input-BsZIoE36.js";
16
16
  import { S as ge } from "./select-BW5ecXlX.js";
17
17
  import { S as ye } from "./switch-OILsBLWo.js";
18
18
  import { T as be } from "./text-area-Bt3p7Pt0.js";
19
19
  import { T as he } from "./text-input-CUvCb6ST.js";
20
- import { C as ve } from "./country-select-BN9nedAp.js";
20
+ import { C as ve } from "./country-select-UEF9BEeQ.js";
21
21
  import { P as xe } from "./province-select-BDywtmL-.js";
22
22
  import { P as Ne } from "./postal-code-input-BznBxVxf.js";
23
23
  import { C as Ve } from "./city-input-towzBenY.js";
@@ -775,4 +775,4 @@ export {
775
775
  Ae as P,
776
776
  je as p
777
777
  };
778
- //# sourceMappingURL=patient-details-DrhlTrLf.js.map
778
+ //# sourceMappingURL=patient-details-UmNcxL0c.js.map
@@ -4,7 +4,7 @@ import { useTranslation as $ } from "react-i18next";
4
4
  import { a as p, T as b, A as be, d as ne, D as P, e as ge } from "./actions-cell-renderer-DaL80uqL.js";
5
5
  import { S as Ce } from "./select-BW5ecXlX.js";
6
6
  import { u as ve } from "./registry-DvAUVLHh.js";
7
- import { I as Ne, L as we, b as L, a as _, c as U, N as H, d as F, S as R, T as ie, D as K, C as Te, g as Fe, f as Re, U as Ie, e as ye } from "./link-cell-renderer-flfZh2qY.js";
7
+ import { I as Ne, L as we, b as L, a as _, c as U, N as H, d as F, S as R, T as ie, D as K, C as Te, g as Fe, f as Re, U as Ie, e as ye } from "./link-cell-renderer-Bt-mXeQY.js";
8
8
  import { B as ae } from "./badge-DCOqV9mI.js";
9
9
  import { c as Pe } from "./index-D2ZczOXr.js";
10
10
  import { T as We } from "./timestamp-BV2lC-wV.js";
@@ -1097,4 +1097,4 @@ export {
1097
1097
  q as g,
1098
1098
  tt as u
1099
1099
  };
1100
- //# sourceMappingURL=patient-table-CvZTIM2R.js.map
1100
+ //# sourceMappingURL=patient-table-QEVsFvwq.js.map
@@ -10,7 +10,7 @@ import { getCountries as qe, parsePhoneNumberFromString as L, AsYouType as q, ge
10
10
  import { u as He, F as _e } from "./form-field-context-B3APVHKx.js";
11
11
  import { c as Ge } from "./compose-refs-C0k0tdqF.js";
12
12
  import { n as J } from "./normalize-diacritics-BNGbFNlJ.js";
13
- import { a as Q } from "./flag-Cnmivlrl.js";
13
+ import { a as Q } from "./flag-DVBE6DnB.js";
14
14
  import { C as Oe } from "./chevron-down-DWE7GSq9.js";
15
15
  const Ue = {
16
16
  id: "phone-input",
@@ -577,4 +577,4 @@ export {
577
577
  pe as c,
578
578
  We as p
579
579
  };
580
- //# sourceMappingURL=phone-input-D00ZBAm-.js.map
580
+ //# sourceMappingURL=phone-input-BsZIoE36.js.map
@@ -168,7 +168,9 @@ const g = se("desktop"), ie = C(
168
168
  // Position the Viewport flush below the pill / nav row. Radix sets
169
169
  // `--radix-navigation-menu-viewport-width` and `…-height` so the
170
170
  // panel sizes itself to whichever Content is currently active.
171
- "ds:absolute ds:top-full ds:start-1/2 ds:-translate-x-1/2",
171
+ // Logical inset + physical translate: flip the shift in RTL, where
172
+ // `start-1/2` resolves to `right: 50%` (same idiom as CommandPalette).
173
+ "ds:absolute ds:top-full ds:start-1/2 ds:-translate-x-1/2 ds:rtl:translate-x-1/2",
172
174
  "ds:mt-[var(--spacing-sm)]",
173
175
  "ds:w-[var(--radix-navigation-menu-viewport-width)]",
174
176
  "ds:h-[var(--radix-navigation-menu-viewport-height)]",
@@ -598,4 +600,4 @@ export {
598
600
  Le as P,
599
601
  Pe as p
600
602
  };
601
- //# sourceMappingURL=public-header.agent-rX_VA6hd.js.map
603
+ //# sourceMappingURL=public-header.agent-_8W9biCO.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "packageVersion": "0.98.0",
3
+ "packageVersion": "0.99.0",
4
4
  "components": [
5
5
  {
6
6
  "kind": "component",
@@ -13299,6 +13299,193 @@
13299
13299
  }
13300
13300
  ]
13301
13301
  },
13302
+ {
13303
+ "kind": "pattern",
13304
+ "id": "anamnesis",
13305
+ "composes": [
13306
+ {
13307
+ "component": "tabs",
13308
+ "as": "recordViews"
13309
+ },
13310
+ {
13311
+ "component": "accordion",
13312
+ "as": "intakeSections"
13313
+ },
13314
+ {
13315
+ "component": "progress",
13316
+ "as": "intakeProgress"
13317
+ },
13318
+ {
13319
+ "component": "form-field",
13320
+ "as": "field",
13321
+ "entity": "answer"
13322
+ },
13323
+ {
13324
+ "component": "radio-group",
13325
+ "as": "yesNoAnswer"
13326
+ },
13327
+ {
13328
+ "component": "text-input",
13329
+ "as": "textAnswer"
13330
+ },
13331
+ {
13332
+ "component": "text-area",
13333
+ "as": "freeText"
13334
+ },
13335
+ {
13336
+ "component": "number-input",
13337
+ "as": "measurement",
13338
+ "entity": "parameter"
13339
+ },
13340
+ {
13341
+ "component": "time-picker",
13342
+ "as": "mealTime",
13343
+ "entity": "meal"
13344
+ },
13345
+ {
13346
+ "component": "select",
13347
+ "as": "picker"
13348
+ },
13349
+ {
13350
+ "component": "multi-select",
13351
+ "as": "pathologies",
13352
+ "entity": "pathology"
13353
+ },
13354
+ {
13355
+ "component": "collapsible",
13356
+ "as": "intakeReview"
13357
+ },
13358
+ {
13359
+ "component": "sparkline",
13360
+ "as": "trend",
13361
+ "entity": "parameter"
13362
+ },
13363
+ {
13364
+ "component": "description-list",
13365
+ "as": "readOnlyValues"
13366
+ },
13367
+ {
13368
+ "component": "card",
13369
+ "as": "block"
13370
+ },
13371
+ {
13372
+ "component": "badge",
13373
+ "as": "status"
13374
+ },
13375
+ {
13376
+ "component": "button",
13377
+ "as": "action"
13378
+ },
13379
+ {
13380
+ "component": "icon-button",
13381
+ "as": "removeAction"
13382
+ },
13383
+ {
13384
+ "component": "timestamp",
13385
+ "as": "visitDate"
13386
+ }
13387
+ ],
13388
+ "workflows": [
13389
+ {
13390
+ "name": "start_intake",
13391
+ "safety": "phi",
13392
+ "description": "Open a fresh pre-visit questionnaire for the patient to begin the intake interview.",
13393
+ "descriptionKey": "ui.agent.anamnesis.workflows.startIntake",
13394
+ "uiActions": [],
13395
+ "apiActions": [
13396
+ "anamnesis.create"
13397
+ ]
13398
+ },
13399
+ {
13400
+ "name": "navigate_section",
13401
+ "safety": "read",
13402
+ "description": "Move between questionnaire sections in the intake, reading the current section index.",
13403
+ "descriptionKey": "ui.agent.anamnesis.workflows.navigateSection",
13404
+ "uiActions": [
13405
+ "accordion.expand"
13406
+ ],
13407
+ "stateReads": [
13408
+ "accordion.openItems"
13409
+ ],
13410
+ "apiActions": []
13411
+ },
13412
+ {
13413
+ "name": "save_intake",
13414
+ "safety": "phi",
13415
+ "description": "Persist the patient's questionnaire answers. Writes patient-identifiable clinical history.",
13416
+ "descriptionKey": "ui.agent.anamnesis.workflows.saveIntake",
13417
+ "uiActions": [],
13418
+ "apiActions": [
13419
+ "anamnesis.updateAnswers"
13420
+ ]
13421
+ },
13422
+ {
13423
+ "name": "select_view",
13424
+ "safety": "read",
13425
+ "description": "Switch the diagnostic workspace between the current-visit compile view and the across-visits evolution view.",
13426
+ "descriptionKey": "ui.agent.anamnesis.workflows.selectView",
13427
+ "uiActions": [
13428
+ "tabs.select_tab"
13429
+ ],
13430
+ "stateReads": [
13431
+ "tabs.activeTab"
13432
+ ],
13433
+ "apiActions": []
13434
+ },
13435
+ {
13436
+ "name": "record_measurement",
13437
+ "safety": "phi",
13438
+ "description": "Record or correct an anthropometric or blood-test value for the current visit. Writes patient clinical data.",
13439
+ "descriptionKey": "ui.agent.anamnesis.workflows.recordMeasurement",
13440
+ "uiActions": [
13441
+ "number-input.set_value"
13442
+ ],
13443
+ "apiActions": [
13444
+ "anamnesis.updateVisit"
13445
+ ]
13446
+ },
13447
+ {
13448
+ "name": "assign_pathologies",
13449
+ "safety": "phi",
13450
+ "description": "Assign or remove coded pathologies for the current visit via the multi-select, reading the current assignments.",
13451
+ "descriptionKey": "ui.agent.anamnesis.workflows.assignPathologies",
13452
+ "uiActions": [
13453
+ "multi-select.set_selection"
13454
+ ],
13455
+ "stateReads": [
13456
+ "multi-select.selection"
13457
+ ],
13458
+ "apiActions": [
13459
+ "anamnesis.updatePathologies"
13460
+ ]
13461
+ },
13462
+ {
13463
+ "name": "compare_visits",
13464
+ "safety": "read",
13465
+ "description": "Pick two visits to compare, reading the selected visit ids, so the grid marks exactly what changed.",
13466
+ "descriptionKey": "ui.agent.anamnesis.workflows.compareVisits",
13467
+ "uiActions": [
13468
+ "select.set_value"
13469
+ ],
13470
+ "stateReads": [
13471
+ "select.value"
13472
+ ],
13473
+ "apiActions": []
13474
+ },
13475
+ {
13476
+ "name": "review_record",
13477
+ "safety": "read",
13478
+ "description": "Review a completed anamnesis in the care plan: expand the intake answers and read the record. No mutation.",
13479
+ "descriptionKey": "ui.agent.anamnesis.workflows.reviewRecord",
13480
+ "uiActions": [
13481
+ "collapsible.toggle"
13482
+ ],
13483
+ "apiActions": [
13484
+ "anamnesis.get"
13485
+ ]
13486
+ }
13487
+ ]
13488
+ },
13302
13489
  {
13303
13490
  "kind": "pattern",
13304
13491
  "id": "appointments",
@@ -13983,6 +14170,109 @@
13983
14170
  }
13984
14171
  ]
13985
14172
  },
14173
+ {
14174
+ "kind": "pattern",
14175
+ "id": "care-plan-editor-dietitian",
14176
+ "composes": [
14177
+ {
14178
+ "component": "care-plan-header",
14179
+ "as": "planHeader"
14180
+ },
14181
+ {
14182
+ "component": "data-table",
14183
+ "as": "servicesGrid",
14184
+ "entity": "treatment"
14185
+ },
14186
+ {
14187
+ "component": "control-room-rail",
14188
+ "as": "toolRail"
14189
+ },
14190
+ {
14191
+ "component": "entity-summary",
14192
+ "as": "planSummary"
14193
+ }
14194
+ ],
14195
+ "workflows": [
14196
+ {
14197
+ "name": "select_plan",
14198
+ "safety": "read",
14199
+ "description": "Open one of the patient's nutrition / weight-management care plans from the plan list.",
14200
+ "descriptionKey": "ui.agent.dietitianCarePlanEditor.workflows.selectPlan",
14201
+ "uiActions": [],
14202
+ "apiActions": [
14203
+ "carePlan.get"
14204
+ ]
14205
+ },
14206
+ {
14207
+ "name": "add_plan",
14208
+ "safety": "write",
14209
+ "description": "Create a new nutrition care plan for the patient.",
14210
+ "descriptionKey": "ui.agent.dietitianCarePlanEditor.workflows.addPlan",
14211
+ "uiActions": [],
14212
+ "apiActions": [
14213
+ "carePlan.create"
14214
+ ]
14215
+ },
14216
+ {
14217
+ "name": "mark_service_done",
14218
+ "safety": "write",
14219
+ "description": "Mark a planned service as delivered from its row action in the services grid.",
14220
+ "descriptionKey": "ui.agent.dietitianCarePlanEditor.workflows.markServiceDone",
14221
+ "uiActions": [],
14222
+ "stateReads": [
14223
+ "data-table.selection"
14224
+ ],
14225
+ "apiActions": [
14226
+ "carePlanTreatment.update"
14227
+ ]
14228
+ },
14229
+ {
14230
+ "name": "add_service",
14231
+ "safety": "write",
14232
+ "description": "Add a service row (consultation, meal plan, supplement, …) to the plan.",
14233
+ "descriptionKey": "ui.agent.dietitianCarePlanEditor.workflows.addService",
14234
+ "uiActions": [],
14235
+ "apiActions": [
14236
+ "carePlanTreatment.create"
14237
+ ]
14238
+ },
14239
+ {
14240
+ "name": "remove_service",
14241
+ "safety": "destructive",
14242
+ "description": "Remove the selected service(s) from the plan (read data-table.selection for the targets).",
14243
+ "descriptionKey": "ui.agent.dietitianCarePlanEditor.workflows.removeService",
14244
+ "uiActions": [],
14245
+ "stateReads": [
14246
+ "data-table.selection"
14247
+ ],
14248
+ "apiActions": [
14249
+ "carePlanTreatment.delete"
14250
+ ]
14251
+ },
14252
+ {
14253
+ "name": "save_plan",
14254
+ "safety": "write",
14255
+ "description": "Persist the current edits to the nutrition care plan.",
14256
+ "descriptionKey": "ui.agent.dietitianCarePlanEditor.workflows.savePlan",
14257
+ "uiActions": [],
14258
+ "apiActions": [
14259
+ "carePlan.update"
14260
+ ]
14261
+ },
14262
+ {
14263
+ "name": "regenerate_summary",
14264
+ "safety": "write",
14265
+ "description": "Regenerate the AI plan summary in the docked Plan summary tool.",
14266
+ "descriptionKey": "ui.agent.dietitianCarePlanEditor.workflows.regenerateSummary",
14267
+ "uiActions": [
14268
+ "entity-summary.regenerate"
14269
+ ],
14270
+ "apiActions": [
14271
+ "alia.summarise"
14272
+ ]
14273
+ }
14274
+ ]
14275
+ },
13986
14276
  {
13987
14277
  "kind": "pattern",
13988
14278
  "id": "care-plan-editor-ophthalmology",
@@ -1353,6 +1353,18 @@
1353
1353
  "reviewUsage": "Read the assistant usage meter; when the quota is full the composer locks behind an upgrade CTA."
1354
1354
  }
1355
1355
  },
1356
+ "anamnesis": {
1357
+ "workflows": {
1358
+ "startIntake": "Open a fresh pre-visit questionnaire for the patient to begin the intake interview.",
1359
+ "navigateSection": "Move between questionnaire sections in the intake, reading the current section index.",
1360
+ "saveIntake": "Persist the patient's questionnaire answers. Writes patient-identifiable clinical history.",
1361
+ "selectView": "Switch the diagnostic workspace between the current-visit compile view and the across-visits evolution view.",
1362
+ "recordMeasurement": "Record or correct an anthropometric or blood-test value for the current visit. Writes patient clinical data.",
1363
+ "assignPathologies": "Assign or remove coded pathologies for the current visit via the multi-select, reading the current assignments.",
1364
+ "compareVisits": "Pick two visits to compare, reading the selected visit ids, so the grid marks exactly what changed.",
1365
+ "reviewRecord": "Review a completed anamnesis in the care plan: expand the intake answers and read the record. No mutation."
1366
+ }
1367
+ },
1356
1368
  "appointments": {
1357
1369
  "workflows": {
1358
1370
  "filterAppointments": "Narrow the agenda by date range, patient, operator, chair, type, or status using the per-column filters.",
@@ -1396,6 +1408,17 @@
1396
1408
  "regenerateSummary": "Regenerate the AI plan summary in the docked Plan summary tool."
1397
1409
  }
1398
1410
  },
1411
+ "dietitianCarePlanEditor": {
1412
+ "workflows": {
1413
+ "selectPlan": "Open one of the patient's nutrition / weight-management care plans from the plan list.",
1414
+ "addPlan": "Create a new nutrition care plan for the patient.",
1415
+ "markServiceDone": "Mark a planned service as delivered from its row action in the services grid.",
1416
+ "addService": "Add a service row (consultation, meal plan, supplement, …) to the plan.",
1417
+ "removeService": "Remove the selected service(s) from the plan (read data-table.selection for the targets).",
1418
+ "savePlan": "Persist the current edits to the nutrition care plan.",
1419
+ "regenerateSummary": "Regenerate the AI plan summary in the docked Plan summary tool."
1420
+ }
1421
+ },
1399
1422
  "ophthalmologyCarePlanEditor": {
1400
1423
  "workflows": {
1401
1424
  "selectPlan": "Open one of the patient's optical / glasses care plans from the plan list.",
@@ -1,4 +1,4 @@
1
- import { A as e, a } from "../../_chunks/address-fields-7k59FnJ6.js";
1
+ import { A as e, a } from "../../_chunks/address-fields-pHsfkXGk.js";
2
2
  export {
3
3
  e as AddressFields,
4
4
  a as addressFieldsAgent
@@ -1,4 +1,4 @@
1
- import { B as A, C as R, O as a, b as s } from "../../_chunks/booking-BSpSMmJ2.js";
1
+ import { B as A, C as R, O as a, b as s } from "../../_chunks/booking-DSOK-bnR.js";
2
2
  export {
3
3
  A as Booking,
4
4
  R as CONFIRMATION_CHANNEL_ORDER,
@@ -1,4 +1,4 @@
1
- import { C as o, I as t, a, c as n, r as s } from "../../_chunks/country-select-BN9nedAp.js";
1
+ import { C as o, I as t, a, c as n, r as s } from "../../_chunks/country-select-UEF9BEeQ.js";
2
2
  export {
3
3
  o as CountrySelect,
4
4
  t as ISO_3166_ALPHA2,
@@ -1,6 +1,6 @@
1
1
  import { A as r, D as l, T as t, a as s, b as n, c as o, d, e as i, f as C } from "../../_chunks/actions-cell-renderer-DaL80uqL.js";
2
2
  import { B as T, C as F, E as g, a as b, R as u, T as c, b as m, r as f, u as x } from "../../_chunks/editable-currency-cell-renderer-Dus_sBvX.js";
3
- import { C as p, D as h, a as y, b as E, I as S, L as A, N as L, c as N, S as B, d as I, e as P, T as U, f as W, g as k, U as v } from "../../_chunks/link-cell-renderer-flfZh2qY.js";
3
+ import { C as p, D as h, a as y, b as E, I as S, L as A, N as L, c as N, S as B, d as I, e as P, T as U, f as W, g as k, U as v } from "../../_chunks/link-cell-renderer-Bt-mXeQY.js";
4
4
  export {
5
5
  r as ActionsCellRenderer,
6
6
  T as BalanceCellRenderer,
@@ -0,0 +1,12 @@
1
+ import type { FlagProps } from './flag';
2
+ /** Country codes bundled with `CoreFlag`. Subset of `FLAG_COUNTRIES`. */
3
+ export declare const CORE_FLAG_COUNTRIES: readonly string[];
4
+ /** Does `CoreFlag` bundle an asset for this country code? Case-insensitive. */
5
+ export declare function hasCoreFlag(country: string): boolean;
6
+ /**
7
+ * `Flag` restricted to the kit's own locale set. Internal — not exported
8
+ * from `index.ts` or the root barrel. Renders `FlagView` with no JSX so
9
+ * this file stays a `.ts` module alongside the glob it owns.
10
+ */
11
+ export declare const CoreFlag: import("react").ForwardRefExoticComponent<FlagProps & import("react").RefAttributes<HTMLElement>>;
12
+ //# sourceMappingURL=flag-core.d.ts.map
@@ -0,0 +1,38 @@
1
+ import { type ImgHTMLAttributes } from 'react';
2
+ /** `CODE → asset URL`, keyed by upper-case ISO code. */
3
+ export type FlagAssetMap = Record<string, string>;
4
+ /**
5
+ * `import.meta.glob` is a Vite build macro: Vite rewrites the *call* into a
6
+ * static asset map, so it must stay a reachable call expression (a `typeof`
7
+ * guard on the bare reference is always false at runtime and skips the flags).
8
+ * Under the esbuild sync pass the macro is absent and the untransformed call
9
+ * throws — callers wrap their glob in this helper so Flag degrades to
10
+ * placeholder boxes instead of crashing.
11
+ */
12
+ export declare function safeFlagGlob(glob: () => Record<string, string>): FlagAssetMap;
13
+ export declare const flagVariants: (props?: ({
14
+ shape?: "square" | "rectangle" | null | undefined;
15
+ size?: "sm" | "md" | "lg" | "xl" | null | undefined;
16
+ rounded?: "full" | "none" | "sm" | "md" | null | undefined;
17
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
18
+ /** Composes the variant classes with a caller-supplied `className`. */
19
+ export declare function flagClasses(variants: Parameters<typeof flagVariants>[0], className?: string): string;
20
+ export type FlagImgAttrs = Omit<ImgHTMLAttributes<HTMLImageElement>, 'src' | 'alt' | 'role' | 'width' | 'height' | 'children'>;
21
+ interface FlagViewProps extends FlagImgAttrs {
22
+ /** Upper-cased ISO code — stamped as `data-country`. */
23
+ code: string;
24
+ /** Resolved asset URL, or `undefined` when the kit ships no such flag. */
25
+ src?: string;
26
+ /** Accessible name; omit for decorative flags. */
27
+ label?: string;
28
+ /** Fully composed class string (see `flagClasses`). */
29
+ className: string;
30
+ }
31
+ /**
32
+ * The one element every Flag binding renders. Kept private to the flag
33
+ * directory — consumers import `Flag` (or the kit's LocalePicker), never
34
+ * this.
35
+ */
36
+ export declare const FlagView: import("react").ForwardRefExoticComponent<FlagViewProps & import("react").RefAttributes<HTMLElement>>;
37
+ export {};
38
+ //# sourceMappingURL=flag-view.d.ts.map
@@ -1,16 +1,10 @@
1
- import { type ImgHTMLAttributes } from 'react';
2
- import { type VariantProps } from 'class-variance-authority';
1
+ import type { VariantProps } from 'class-variance-authority';
2
+ import { flagVariants, type FlagImgAttrs } from './flag-view';
3
3
  /** Country codes for which a flag asset exists (ISO 3166-1 alpha-2 + a few subdivisions). */
4
4
  export declare const FLAG_COUNTRIES: readonly string[];
5
5
  /** Does a flag asset exist for this country code? Case-insensitive. */
6
6
  export declare function hasFlag(country: string): boolean;
7
- declare const flagVariants: (props?: ({
8
- shape?: "square" | "rectangle" | null | undefined;
9
- size?: "sm" | "md" | "lg" | "xl" | null | undefined;
10
- rounded?: "full" | "none" | "sm" | "md" | null | undefined;
11
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
- type ImgAttrs = Omit<ImgHTMLAttributes<HTMLImageElement>, 'src' | 'alt' | 'role' | 'width' | 'height' | 'children'>;
13
- export interface FlagProps extends ImgAttrs, VariantProps<typeof flagVariants> {
7
+ export interface FlagProps extends FlagImgAttrs, VariantProps<typeof flagVariants> {
14
8
  /**
15
9
  * ISO 3166-1 alpha-2 country code (e.g. `US`, `GB`, `JP`). A handful of
16
10
  * subdivision codes are also supported (`GB-ENG`, `GB-SCT`, `GB-WLS`,
@@ -25,5 +19,4 @@ export interface FlagProps extends ImgAttrs, VariantProps<typeof flagVariants> {
25
19
  label?: string;
26
20
  }
27
21
  export declare const Flag: import("react").ForwardRefExoticComponent<FlagProps & import("react").RefAttributes<HTMLElement>>;
28
- export {};
29
22
  //# sourceMappingURL=flag.d.ts.map
@@ -1,4 +1,4 @@
1
- import { F, a as g, h } from "../../_chunks/flag-Cnmivlrl.js";
1
+ import { F, a as g, h } from "../../_chunks/flag-DVBE6DnB.js";
2
2
  export {
3
3
  F as FLAG_COUNTRIES,
4
4
  g as Flag,
@@ -1,4 +1,4 @@
1
- import { H as t } from "../../_chunks/header-settings-CLwFqMHI.js";
1
+ import { H as t } from "../../_chunks/header-settings--pjYOe6g.js";
2
2
  export {
3
3
  t as HeaderSettings
4
4
  };
@@ -1,4 +1,4 @@
1
- import { L, a as c, b as r } from "../../_chunks/locale-picker-EyvPrwDc.js";
1
+ import { L, a as c, b as r } from "../../_chunks/locale-picker-BfBUdT1m.js";
2
2
  export {
3
3
  L as LOCALE_STORAGE_KEY,
4
4
  c as LocalePicker,
@@ -1,4 +1,4 @@
1
- import { M as a, m as l, a as i } from "../../_chunks/multi-select-D5QLBJM1.js";
1
+ import { M as a, m as l, a as i } from "../../_chunks/multi-select-CC52Qws6.js";
2
2
  export {
3
3
  a as MultiSelect,
4
4
  l as multiSelectAgent,
@@ -1,4 +1,4 @@
1
- import { P as e, p as i } from "../../_chunks/patient-details-DrhlTrLf.js";
1
+ import { P as e, p as i } from "../../_chunks/patient-details-UmNcxL0c.js";
2
2
  export {
3
3
  e as PatientDetails,
4
4
  i as patientDetailsAgent
@@ -1,4 +1,4 @@
1
- import { B as s, C as l, N as t, P as n, a as C, b as i, g as o, u } from "../../_chunks/patient-table-CvZTIM2R.js";
1
+ import { B as s, C as l, N as t, P as n, a as C, b as i, g as o, u } from "../../_chunks/patient-table-QEVsFvwq.js";
2
2
  export {
3
3
  s as BalanceBadgeCell,
4
4
  l as CarePlanStatusCell,
@@ -1,4 +1,4 @@
1
- import { P as n, c as p, p as t, a as e } from "../../_chunks/phone-input-D00ZBAm-.js";
1
+ import { P as n, c as p, p as t, a as e } from "../../_chunks/phone-input-BsZIoE36.js";
2
2
  export {
3
3
  n as PhoneInput,
4
4
  p as countryTriggerVariants,
@@ -1,4 +1,4 @@
1
- import { P as r, p } from "../../_chunks/public-header.agent-rX_VA6hd.js";
1
+ import { P as r, p } from "../../_chunks/public-header.agent-_8W9biCO.js";
2
2
  export {
3
3
  r as PublicHeader,
4
4
  p as publicHeaderAgent
@@ -7,8 +7,7 @@
7
7
  * degenerate DAG where every node has exactly one outgoing edge with
8
8
  * a null condition. This means v2 branching (if/else) can ship as an
9
9
  * additive change without breaking v1 consumers.
10
- *
11
- * Authoritative user story: src/user_stories/domain-specific/workflow.mdx
10
+
12
11
  */
13
12
  export type WorkflowActionType = 'add_delay' | 'send_email' | 'send_sms' | 'create_task' | 'send_whatsapp' | 'update_patient_field' | 'webhook';
14
13
  export type WorkflowStatus = 'active' | 'inactive' | 'paused';
@@ -117,9 +116,9 @@ export interface WorkflowActionMeta {
117
116
  * entries only; passing one of these ids is a misconfiguration and
118
117
  * the editor surfaces a warning strip.
119
118
  *
120
- * See `src/user_stories/domain-specific/workflow.mdx` the
121
- * maintainability group pins this down with: "a misconfigured
122
- * workflow can't overwrite a patient's legal name or contact info".
119
+ * The maintainability requirement behind this: a misconfigured
120
+ * workflow must not be able to overwrite a patient's legal name or
121
+ * contact info.
123
122
  */
124
123
  export declare const CORE_PATIENT_FIELDS: ReadonlySet<string>;
125
124
  /** True when the field id targets a core patient column (never allowed). */
@@ -196,7 +196,7 @@
196
196
 
197
197
  /* ───────────────────────────────────────────────────────────────────────
198
198
  SECTION B — non-token declarations. ORIGINAL LAYER PRESERVED.
199
- 121 declarations across 117 rules.
199
+ 123 declarations across 119 rules.
200
200
 
201
201
  Kit-authored arbitrary-value utilities (`ds:w-[20rem]`) and the
202
202
  vendored AG Grid rules. These set real properties on real elements,
@@ -397,12 +397,18 @@
397
397
  .ds\:max-w-\[42rem\] {
398
398
  max-width:672px;
399
399
  }
400
+ .ds\:max-w-\[48rem\] {
401
+ max-width:768px;
402
+ }
400
403
  .ds\:max-w-\[56rem\] {
401
404
  max-width:896px;
402
405
  }
403
406
  .ds\:max-w-\[64rem\] {
404
407
  max-width:1024px;
405
408
  }
409
+ .ds\:max-w-\[76rem\] {
410
+ max-width:1216px;
411
+ }
406
412
  .ds\:max-w-\[80rem\] {
407
413
  max-width:1280px;
408
414
  }