@alfadocs/ui-kit 1.55.0 → 1.56.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 (169) hide show
  1. package/dist/_chunks/{alia-sidebar-DS0b54Mv.js → alia-sidebar-DOei4Iyu.js} +2 -2
  2. package/dist/_chunks/{anamnesis-summary-rows-Dtw5Hpg4.js → anamnesis-summary-rows-CQ-XGr0T.js} +3 -3
  3. package/dist/_chunks/{balance-badge-cell-zP-iN-Pd.js → balance-badge-cell-DmDcXw0c.js} +3 -3
  4. package/dist/_chunks/{bmi-calculator-DTZhRhXe.js → bmi-calculator-C0UTxB7R.js} +2 -2
  5. package/dist/_chunks/{booking-uZO10TLK.js → booking-WyNGKPE2.js} +2 -2
  6. package/dist/_chunks/{breadcrumb-xgVpPH2H.js → breadcrumb-Boan-5n8.js} +39 -39
  7. package/dist/_chunks/{calculator-dialog-BRjZMWuE.js → calculator-dialog-pCPWta7h.js} +2 -2
  8. package/dist/_chunks/{calendar-workspace-DVajSkKA.js → calendar-workspace-Du2ryaI-.js} +8 -8
  9. package/dist/_chunks/{care-plan-header-BeMYMiI7.js → care-plan-header-DUX_SVvF.js} +2 -2
  10. package/dist/_chunks/chart-HsF1KHbx.js +909 -0
  11. package/dist/_chunks/{contact-profile-card-C5DbP_X3.js → contact-profile-card-Ci8lBQ6a.js} +2 -2
  12. package/dist/_chunks/dashboard-grid-DfEY2qci.js +844 -0
  13. package/dist/_chunks/{data-table-C6T31E33.js → data-table-D8fuhqO1.js} +1 -1
  14. package/dist/_chunks/{date-range-picker-BOvHwWO5.js → date-range-picker-CtUOI38x.js} +188 -182
  15. package/dist/_chunks/{dependent-selector-Bet3XAFj.js → dependent-selector-DgaAQc-c.js} +91 -86
  16. package/dist/_chunks/{dialog-D52AI4nF.js → dialog-CUzbnKLw.js} +86 -69
  17. package/dist/_chunks/{due-date-calculator-DXDJbUzo.js → due-date-calculator-CSjklbyw.js} +2 -2
  18. package/dist/_chunks/{file-manager-dIJQUZvq.js → file-manager-Cc_uO8r2.js} +4 -4
  19. package/dist/_chunks/{freemium-paywall-B6ojVXq7.js → freemium-paywall-DIKuhX8b.js} +90 -86
  20. package/dist/_chunks/{gestational-age-calculator-BfGpt3du.js → gestational-age-calculator-DqVeJke2.js} +2 -2
  21. package/dist/_chunks/{heatmap-BARGZZt2.js → heatmap-Gf9r7Tn1.js} +2 -2
  22. package/dist/_chunks/{help-me-write-templates-B7L3zGsE.js → help-me-write-templates-fV-Apf72.js} +2 -2
  23. package/dist/_chunks/{key-value-pair-Ax8IJr1M.js → key-value-pair-BNNITp6S.js} +25 -19
  24. package/dist/_chunks/{kit-extensions-C9-v8Dih.js → kit-extensions-Byfxy6sy.js} +4 -4
  25. package/dist/_chunks/{link-cell-renderer-DlBVPMTi.js → link-cell-renderer-TeJNvymP.js} +2 -2
  26. package/dist/_chunks/non-modal-tab-exit-D2Bd93Bq.js +65 -0
  27. package/dist/_chunks/{notes-panel-I8ntrrUW.js → notes-panel-DceRhthG.js} +3 -3
  28. package/dist/_chunks/{patient-summary-card-3dspc2tR.js → patient-summary-card-9nQWTQf6.js} +7 -3
  29. package/dist/_chunks/{payment-automation-upsell-DEUfM7EU.js → payment-automation-upsell-DiHovmUL.js} +2 -2
  30. package/dist/_chunks/{payment-request-card-DAGqh9Yx.js → payment-request-card-CwDpwXUC.js} +2 -2
  31. package/dist/_chunks/{periodontal-chart-BqwLxy2m.js → periodontal-chart-DD5C0M3l.js} +2 -2
  32. package/dist/_chunks/{periodontal-chart-card-CWZ1YM1h.js → periodontal-chart-card-CxdXvsPU.js} +2 -2
  33. package/dist/_chunks/{periodontal-diagnosis-C9IuvLId.js → periodontal-diagnosis-D-PJv7KS.js} +2 -2
  34. package/dist/_chunks/{position-grid-D2D5_Tze.js → position-grid-CBB88EaH.js} +38 -36
  35. package/dist/_chunks/{practice-results-DxOgbPDy.js → practice-results-Dhbo-fc_.js} +2 -2
  36. package/dist/_chunks/{pregnancy-dating-R3q5n1Wh.js → pregnancy-dating-Bfu0Cq4H.js} +2 -2
  37. package/dist/_chunks/{pregnancy-weight-gain-DwmNklDU.js → pregnancy-weight-gain-CUUrBTBo.js} +2 -2
  38. package/dist/_chunks/{public-header.agent-BWusjxY8.js → public-header.agent-pr2hyiND.js} +2 -2
  39. package/dist/_chunks/{radio-group-BT97ty7o.js → radio-group-DicxWJXP.js} +111 -106
  40. package/dist/_chunks/{radiograph-panel.agent-BA90I3Mu.js → radiograph-panel.agent-DkUokbEa.js} +3 -3
  41. package/dist/_chunks/{rich-text-editor-Blp4smUr.js → rich-text-editor-CkFfmA3v.js} +2 -2
  42. package/dist/_chunks/{sheet-CNFW8mYZ.js → sheet-C7SwIxwB.js} +95 -79
  43. package/dist/_chunks/{signature-request-rgMsgo-C.js → signature-request-DhbpB9N9.js} +2 -2
  44. package/dist/_chunks/{stat-51CDL4au.js → stat-DmjGfXND.js} +117 -108
  45. package/dist/_chunks/{stepper-accordion-D7lnBGh2.js → stepper-accordion-DDTSOUHc.js} +17 -6
  46. package/dist/_chunks/{task-editor-Ctxsa1BY.js → task-editor-ByyRu29Y.js} +3 -3
  47. package/dist/_chunks/{use-appointment-details-read-DinTrRIW.js → use-appointment-details-read-JsDM48tf.js} +2 -2
  48. package/dist/_chunks/use-select-on-arrow-Cr4iBuW5.js +26 -0
  49. package/dist/_chunks/{widget-picker-D8RiWrJd.js → widget-picker-DXYBMTfe.js} +2 -2
  50. package/dist/_chunks/{workflow-map-D3mezmGB.js → workflow-map-Demlpy39.js} +2 -2
  51. package/dist/agent-catalog.json +27 -10
  52. package/dist/agent-i18n/en.json +8 -7
  53. package/dist/components/_shared/non-modal-tab-exit.d.ts +8 -0
  54. package/dist/components/_shared/use-apex-chart-semantics.d.ts +6 -0
  55. package/dist/components/_shared/use-select-on-arrow.d.ts +20 -0
  56. package/dist/components/appointment-details-panel/index.js +1 -1
  57. package/dist/components/bmi-calculator/index.js +1 -1
  58. package/dist/components/booking/index.js +1 -1
  59. package/dist/components/breadcrumb/index.js +1 -1
  60. package/dist/components/calculator-dialog/index.js +1 -1
  61. package/dist/components/care-plan-header/index.js +1 -1
  62. package/dist/components/chart/chart.d.ts +10 -5
  63. package/dist/components/chart/index.js +1 -1
  64. package/dist/components/contact-profile-card/index.js +1 -1
  65. package/dist/components/dashboard-grid/dashboard-grid-engine.d.ts +22 -0
  66. package/dist/components/dashboard-grid/dashboard-grid.d.ts +48 -4
  67. package/dist/components/dashboard-grid/index.js +1 -1
  68. package/dist/components/data-table/index.js +2 -2
  69. package/dist/components/date-range-picker/index.js +1 -1
  70. package/dist/components/dependent-selector/index.js +1 -1
  71. package/dist/components/dialog/dialog.d.ts +2 -2
  72. package/dist/components/dialog/index.js +1 -1
  73. package/dist/components/due-date-calculator/index.js +1 -1
  74. package/dist/components/file-manager/index.js +1 -1
  75. package/dist/components/freemium-paywall/index.js +1 -1
  76. package/dist/components/gestational-age-calculator/index.js +1 -1
  77. package/dist/components/heatmap/index.js +1 -1
  78. package/dist/components/key-value-pair/index.js +1 -1
  79. package/dist/components/notes-panel/index.js +1 -1
  80. package/dist/components/patient-summary-card/index.js +1 -1
  81. package/dist/components/patient-table/index.js +1 -1
  82. package/dist/components/payment-card/index.js +1 -1
  83. package/dist/components/periodontal-chart/index.js +1 -1
  84. package/dist/components/periodontal-chart-card/index.js +1 -1
  85. package/dist/components/periodontal-diagnosis/index.js +1 -1
  86. package/dist/components/position-grid/index.js +1 -1
  87. package/dist/components/practice-results/index.js +1 -1
  88. package/dist/components/pregnancy-dating/index.js +1 -1
  89. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  90. package/dist/components/public-header/index.js +1 -1
  91. package/dist/components/radio-group/index.js +1 -1
  92. package/dist/components/radiograph-panel/index.js +1 -1
  93. package/dist/components/rich-text-editor/index.js +2 -2
  94. package/dist/components/sheet/index.js +1 -1
  95. package/dist/components/sheet/sheet.d.ts +2 -2
  96. package/dist/components/stat/index.d.ts +1 -1
  97. package/dist/components/stat/index.js +1 -1
  98. package/dist/components/stat/stat.d.ts +9 -0
  99. package/dist/components/stepper-accordion/index.js +1 -1
  100. package/dist/components/task-editor/index.js +1 -1
  101. package/dist/components/widget-picker/index.js +1 -1
  102. package/dist/components/workflow/index.js +1 -1
  103. package/dist/host-legacy.css +13 -2
  104. package/dist/i18n/locales/ar.d.ts +3 -2
  105. package/dist/i18n/locales/ar.js +5 -4
  106. package/dist/i18n/locales/de.d.ts +3 -2
  107. package/dist/i18n/locales/de.js +5 -4
  108. package/dist/i18n/locales/el.d.ts +3 -2
  109. package/dist/i18n/locales/el.js +5 -4
  110. package/dist/i18n/locales/en.d.ts +3 -2
  111. package/dist/i18n/locales/en.js +5 -4
  112. package/dist/i18n/locales/es.d.ts +3 -2
  113. package/dist/i18n/locales/es.js +5 -4
  114. package/dist/i18n/locales/fr.d.ts +3 -2
  115. package/dist/i18n/locales/fr.js +5 -4
  116. package/dist/i18n/locales/hi.d.ts +3 -2
  117. package/dist/i18n/locales/hi.js +5 -4
  118. package/dist/i18n/locales/it.d.ts +3 -2
  119. package/dist/i18n/locales/it.js +5 -4
  120. package/dist/i18n/locales/ja.d.ts +3 -2
  121. package/dist/i18n/locales/ja.js +5 -4
  122. package/dist/i18n/locales/nl.d.ts +3 -2
  123. package/dist/i18n/locales/nl.js +5 -4
  124. package/dist/i18n/locales/pl.d.ts +3 -2
  125. package/dist/i18n/locales/pl.js +5 -4
  126. package/dist/i18n/locales/pt.d.ts +3 -2
  127. package/dist/i18n/locales/pt.js +5 -4
  128. package/dist/i18n/locales/ro.d.ts +3 -2
  129. package/dist/i18n/locales/ro.js +5 -4
  130. package/dist/i18n/locales/ru.d.ts +3 -2
  131. package/dist/i18n/locales/ru.js +5 -4
  132. package/dist/i18n/locales/sq.d.ts +3 -2
  133. package/dist/i18n/locales/sq.js +5 -4
  134. package/dist/i18n/locales/sv.d.ts +3 -2
  135. package/dist/i18n/locales/sv.js +5 -4
  136. package/dist/i18n/locales/tr.d.ts +3 -2
  137. package/dist/i18n/locales/tr.js +5 -4
  138. package/dist/i18n/locales/zh.d.ts +3 -2
  139. package/dist/i18n/locales/zh.js +5 -4
  140. package/dist/index.js +48 -48
  141. package/dist/locales/ar.json +5 -4
  142. package/dist/locales/de.json +5 -4
  143. package/dist/locales/el.json +5 -4
  144. package/dist/locales/en.json +5 -4
  145. package/dist/locales/es.json +5 -4
  146. package/dist/locales/fr.json +5 -4
  147. package/dist/locales/hi.json +5 -4
  148. package/dist/locales/it.json +5 -4
  149. package/dist/locales/ja.json +5 -4
  150. package/dist/locales/nl.json +5 -4
  151. package/dist/locales/pl.json +5 -4
  152. package/dist/locales/pt.json +5 -4
  153. package/dist/locales/ro.json +5 -4
  154. package/dist/locales/ru.json +5 -4
  155. package/dist/locales/sq.json +5 -4
  156. package/dist/locales/sv.json +5 -4
  157. package/dist/locales/tr.json +5 -4
  158. package/dist/locales/zh.json +5 -4
  159. package/dist/patterns/alia-assistant/index.js +1 -1
  160. package/dist/patterns/anamnesis/index.js +1 -1
  161. package/dist/patterns/calendar/index.js +1 -1
  162. package/dist/patterns/help-me-write-templates/help-me-write-templates.d.ts +2 -2
  163. package/dist/patterns/help-me-write-templates/index.js +1 -1
  164. package/dist/patterns/payment-automation-upsell/index.js +1 -1
  165. package/dist/patterns/signature-request/index.js +1 -1
  166. package/dist/tokens.css +13 -2
  167. package/package.json +1 -1
  168. package/dist/_chunks/chart-C2RBJERE.js +0 -705
  169. package/dist/_chunks/dashboard-grid-SAGoyCtL.js +0 -691
@@ -0,0 +1,8 @@
1
+ import { type KeyboardEvent } from 'react';
2
+ /**
3
+ * Lets Tab leave non-modal Radix Dialog content instead of wrapping. Enable it
4
+ * only with `modal={false}`; modal content keeps Radix's trap and loop.
5
+ * Returns a handler for the content's `onKeyDown`, after the consumer's own.
6
+ */
7
+ export declare function useNonModalTabExit(enabled: boolean): (event: KeyboardEvent<HTMLElement>) => void;
8
+ //# sourceMappingURL=non-modal-tab-exit.d.ts.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * `legendToggles`: whether a legend press hides its series. It does on axis
3
+ * charts and radialBar; on pie and donut it selects the slice instead.
4
+ */
5
+ export declare function useApexChartSemantics(root: HTMLElement | null, legendToggles: boolean): void;
6
+ //# sourceMappingURL=use-apex-chart-semantics.d.ts.map
@@ -0,0 +1,20 @@
1
+ import { type KeyboardEvent } from 'react';
2
+ export interface SelectOnArrow {
3
+ /** Put on the Radix `RadioGroup.Root`, after any consumer `onKeyDown`. */
4
+ onKeyDown: (event: KeyboardEvent<HTMLElement>) => void;
5
+ /** Call first thing in the Root's `onValueChange`. */
6
+ noteSelection: () => void;
7
+ }
8
+ /**
9
+ * Arrow keys move focus AND selection in a Radix radio group (WAI-ARIA radio
10
+ * pattern). Radix selects only if the next radio takes focus while the arrow
11
+ * key is still down: it moves focus in a timeout and forgets the key on
12
+ * `keyup`. A quick tap, a script or an assistive technology can release the
13
+ * key before that timeout runs, and focus then moves without selecting.
14
+ *
15
+ * This finishes the move: its own timeout runs after Radix's and clicks the
16
+ * newly focused radio, as Radix would have. `noteSelection` tells it Radix
17
+ * already selected, so each move fires `onValueChange` once.
18
+ */
19
+ export declare function useSelectOnArrow(): SelectOnArrow;
20
+ //# sourceMappingURL=use-select-on-arrow.d.ts.map
@@ -1,4 +1,4 @@
1
- import { A as e, a as n, p, u as s } from "../../_chunks/use-appointment-details-read-DinTrRIW.js";
1
+ import { A as e, a as n, p, u as s } from "../../_chunks/use-appointment-details-read-JsDM48tf.js";
2
2
  export {
3
3
  e as AppointmentDetailsPanel,
4
4
  n as appointmentDetailsPanelAgent,
@@ -1,4 +1,4 @@
1
- import { B as m } from "../../_chunks/bmi-calculator-DTZhRhXe.js";
1
+ import { B as m } from "../../_chunks/bmi-calculator-C0UTxB7R.js";
2
2
  import { b as e, a as t, c as r, d as T, e as c, f as i, i as b, k as n, l as f } from "../../_chunks/bmi-BxD-tFzU.js";
3
3
  export {
4
4
  m as BmiCalculator,
@@ -1,4 +1,4 @@
1
- import { B as A, C as R, O as a, b as s } from "../../_chunks/booking-uZO10TLK.js";
1
+ import { B as A, C as R, O as a, b as s } from "../../_chunks/booking-WyNGKPE2.js";
2
2
  export {
3
3
  A as Booking,
4
4
  R as CONFIRMATION_CHANNEL_ORDER,
@@ -1,4 +1,4 @@
1
- import { B as e, a as s, b, c as m, d as c, e as d, f as u } from "../../_chunks/breadcrumb-xgVpPH2H.js";
1
+ import { B as e, a as s, b, c as m, d as c, e as d, f as u } from "../../_chunks/breadcrumb-Boan-5n8.js";
2
2
  export {
3
3
  e as Breadcrumb,
4
4
  s as BreadcrumbEllipsis,
@@ -1,4 +1,4 @@
1
- import { C as l } from "../../_chunks/calculator-dialog-BRjZMWuE.js";
1
+ import { C as l } from "../../_chunks/calculator-dialog-pCPWta7h.js";
2
2
  export {
3
3
  l as CalculatorDialog
4
4
  };
@@ -1,4 +1,4 @@
1
- import { C as r, c as n } from "../../_chunks/care-plan-header-BeMYMiI7.js";
1
+ import { C as r, c as n } from "../../_chunks/care-plan-header-DUX_SVvF.js";
2
2
  export {
3
3
  r as CarePlanHeader,
4
4
  n as carePlanHeaderAgent
@@ -1,4 +1,5 @@
1
1
  import { type VariantProps } from 'class-variance-authority';
2
+ import '../../tokens/apexcharts-theme.css';
2
3
  declare const chartVariants: (props?: ({
3
4
  density?: "none" | "comfortable" | "compact" | null | undefined;
4
5
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -96,7 +97,11 @@ export interface ChartProps extends VariantProps<typeof chartVariants> {
96
97
  * green in the healthy band, amber/red outside it.
97
98
  */
98
99
  colors?: string[];
99
- /** Show the ApexCharts toolbar. Defaults to false. */
100
+ /**
101
+ * Show the ApexCharts toolbar. Its buttons are --min-target-size boxes in a
102
+ * band reserved above the plot; zoomable types need about 300px of width.
103
+ * Defaults to false.
104
+ */
100
105
  toolbar?: boolean;
101
106
  /** Locale override — defaults to the active i18next language. */
102
107
  locale?: string;
@@ -137,16 +142,16 @@ export interface ChartProps extends VariantProps<typeof chartVariants> {
137
142
  className?: string;
138
143
  }
139
144
  export interface ChartHandle {
140
- /** Returns a PNG data URI for the chart. */
145
+ /** Returns a PNG data URI for the chart, after any pushed series is drawn. */
141
146
  dataURI: () => Promise<string>;
142
147
  /**
143
148
  * Updates series without remounting. Always pass the DECLARED `type`'s
144
149
  * shape — while the user has switched the view across the axis/slice
145
150
  * boundary the values (and, for axis→slice, the slice labels) are
146
151
  * converted to the rendered shape; for slice→axis the categories stay
147
- * the `labels` prop, so keep the value count stable. The update writes
148
- * to the live ApexCharts instance only: a later type switch remounts
149
- * from the original props and discards it.
152
+ * the `labels` prop, so keep the value count stable. The update also
153
+ * reaches the summary table, and holds until the `series` prop changes;
154
+ * `dataURI` waits for it to be drawn.
150
155
  */
151
156
  updateSeries: (next: ChartProps['series']) => void;
152
157
  /**
@@ -1,4 +1,4 @@
1
- import { C as t, c as s, a as c } from "../../_chunks/chart-C2RBJERE.js";
1
+ import { C as t, c as s, a as c } from "../../_chunks/chart-HsF1KHbx.js";
2
2
  export {
3
3
  t as Chart,
4
4
  s as chartAgent,
@@ -1,4 +1,4 @@
1
- import { C as _, a as O, b as o, c as r } from "../../_chunks/contact-profile-card-C5DbP_X3.js";
1
+ import { C as _, a as O, b as o, c as r } from "../../_chunks/contact-profile-card-Ci8lBQ6a.js";
2
2
  export {
3
3
  _ as CONTACT_PROFILE_CARD_ROW_ICONS,
4
4
  O as CONTACT_PROFILE_CARD_ROW_KEYS,
@@ -34,4 +34,26 @@ export declare function firstFit(layout: DashboardWidgetLayout[], cols: number,
34
34
  };
35
35
  /** Total rows the layout occupies (for sizing the add tile / container). */
36
36
  export declare function rowCount(layout: DashboardWidgetLayout[]): number;
37
+ /**
38
+ * Extra inline size (px) a stacked board must reach, above `stackBelow`,
39
+ * before it returns to the grid. Without the band a width hovering on the
40
+ * threshold could flip the board back and forth: sub-pixel rounding, or a
41
+ * page scrollbar (classic scrollbars are up to about 20 px) that appears
42
+ * in one mode and disappears in the other because the two modes differ
43
+ * in height.
44
+ */
45
+ export declare const STACK_HYSTERESIS_PX = 24;
46
+ /**
47
+ * Whether the board shows one stacked column for a measured inline size.
48
+ * Stacks below `stackBelow`; unstacks at `stackBelow + STACK_HYSTERESIS_PX`
49
+ * or wider. An unusable threshold never stacks. A board with no measurable
50
+ * box (`display: none`, a hidden tab) keeps its current mode.
51
+ */
52
+ export declare function shouldStack(inlineSize: number, stackBelow: number | undefined, wasStacked: boolean): boolean;
53
+ /**
54
+ * Reading order of the stacked column: row (`y`), then LOGICAL column
55
+ * (`x`, so RTL keeps the same order), then the caller's `ids` order on a
56
+ * tie. Ids without a layout entry keep their relative order at the end.
57
+ */
58
+ export declare function stackOrder(ids: string[], layout: DashboardWidgetLayout[]): string[];
37
59
  //# sourceMappingURL=dashboard-grid-engine.d.ts.map
@@ -2,8 +2,10 @@ import { type ReactNode } from 'react';
2
2
  import { type VariantProps } from 'class-variance-authority';
3
3
  import { type DashboardWidgetLayout } from './dashboard-grid-engine';
4
4
  export type { DashboardWidgetLayout } from './dashboard-grid-engine';
5
- declare const dashboardGridVariants: (props?: ({} & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
- export interface DashboardGridProps extends VariantProps<typeof dashboardGridVariants> {
5
+ declare const dashboardGridVariants: (props?: ({
6
+ stacked?: boolean | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ export interface DashboardGridProps extends Omit<VariantProps<typeof dashboardGridVariants>, 'stacked'> {
7
9
  /** Accessible name for the board region. Required. */
8
10
  'aria-label': string;
9
11
  /** Opaque instance id — emitted as `data-component-id` for the agent registry. */
@@ -36,19 +38,61 @@ export interface DashboardGridProps extends VariantProps<typeof dashboardGridVar
36
38
  * `onLayoutChange`.
37
39
  */
38
40
  onRequestAdd?: () => void;
41
+ /**
42
+ * Opt-in narrow mode. When the board's OWN inline size (px, measured with
43
+ * a ResizeObserver, not the viewport) is below this value, the widgets
44
+ * render as one full-width, read-only column in reading order (`y`, then
45
+ * logical `x`), each at least its grid height. No move/resize/remove
46
+ * chrome or add tile shows, even while `editing` is on, and
47
+ * `onLayoutChange` never fires because of stacking: the saved layout is
48
+ * untouched and the grid returns exactly once the board is at least
49
+ * `stackBelow + 24` px wide (the 24 px band stops a width hovering on the
50
+ * threshold, or a page scrollbar, from flipping the board). Unset: the
51
+ * board never stacks.
52
+ *
53
+ * Give the board a container whose width does not depend on its content
54
+ * (normal block flow, or a stretched flex/grid item). In a shrink-to-fit
55
+ * host the narrower stacked column can keep the board stacked.
56
+ * Switching between unset and set at runtime remounts the widgets.
57
+ *
58
+ * SSR: the server render and the first client render show the grid; the
59
+ * board measures itself in a layout effect, before the first client
60
+ * paint. A server-rendered page shows the grid until hydration.
61
+ */
62
+ stackBelow?: number;
63
+ /**
64
+ * Fired when the board enters (`true`) or leaves (`false`) the stacked
65
+ * column, before that mode is painted, so the host can hide its own
66
+ * customise control. Not fired for the initial unstacked state, nor on
67
+ * unmount.
68
+ */
69
+ onStackedChange?: (stacked: boolean) => void;
39
70
  /** `DashboardGrid.Widget` children. */
40
71
  children: ReactNode;
41
72
  className?: string;
42
73
  }
43
74
  export interface DashboardGridHandle {
44
- /** Move a widget to a cell. False when not editing or id unknown. */
75
+ /**
76
+ * Move a widget to a cell. False when not editing, while stacked, or
77
+ * when the id is unknown.
78
+ */
45
79
  moveWidgetTo: (id: string, x: number, y: number) => boolean;
46
- /** Resize a widget to a span. False when not editing or id unknown. */
80
+ /**
81
+ * Resize a widget to a span. False when not editing, while stacked, or
82
+ * when the id is unknown.
83
+ */
47
84
  resizeWidgetTo: (id: string, w: number, h: number) => boolean;
48
85
  /** Current geometry + mode. */
49
86
  getGridState: () => {
50
87
  cols: number;
88
+ /** The `editing` prop as the host set it. */
51
89
  editing: boolean;
90
+ /**
91
+ * True while the board is narrower than `stackBelow` and shows one
92
+ * read-only column. Editing is unavailable until it is false again.
93
+ */
94
+ stacked: boolean;
95
+ /** The saved grid layout; stacking never changes it. */
52
96
  layout: DashboardWidgetLayout[];
53
97
  };
54
98
  }
@@ -1,4 +1,4 @@
1
- import { D as r, d as o } from "../../_chunks/dashboard-grid-SAGoyCtL.js";
1
+ import { D as r, d as o } from "../../_chunks/dashboard-grid-DfEY2qci.js";
2
2
  export {
3
3
  r as DashboardGrid,
4
4
  o as dashboardGridAgent
@@ -1,6 +1,6 @@
1
- import { D as r, E as l, T as t, a as s, b as d, c as o, d as n, e as i, f as R, i as C, g as T } from "../../_chunks/data-table-C6T31E33.js";
1
+ import { D as r, E as l, T as t, a as s, b as d, c as o, d as n, e as i, f as R, i as C, g as T } from "../../_chunks/data-table-D8fuhqO1.js";
2
2
  import { B as g, C as D, a as b, E as x, b as c, R as p, T as u, c as m, r as E, u as f } from "../../_chunks/editable-currency-cell-renderer-CmYcMuwi.js";
3
- import { D as h, a as A, b as w, I as y, L as I, N as L, c as N, S as P, d as W, e as B, T as U, f as _, g as k, U as v } from "../../_chunks/link-cell-renderer-DlBVPMTi.js";
3
+ import { D as h, a as A, b as w, I as y, L as I, N as L, c as N, S as P, d as W, e as B, T as U, f as _, g as k, U as v } from "../../_chunks/link-cell-renderer-TeJNvymP.js";
4
4
  import { A as X, a as j } from "../../_chunks/actions-cell-renderer-Dj1ZkvJj.js";
5
5
  export {
6
6
  X as ActionsCellRenderer,
@@ -1,4 +1,4 @@
1
- import { D as r, d as t } from "../../_chunks/date-range-picker-BOvHwWO5.js";
1
+ import { D as r, d as t } from "../../_chunks/date-range-picker-CtUOI38x.js";
2
2
  export {
3
3
  r as DateRangePicker,
4
4
  t as dateRangePickerAgent
@@ -1,4 +1,4 @@
1
- import { D as n, d } from "../../_chunks/dependent-selector-Bet3XAFj.js";
1
+ import { D as n, d } from "../../_chunks/dependent-selector-DgaAQc-c.js";
2
2
  export {
3
3
  n as DependentSelector,
4
4
  d as dependentSelectorAgent
@@ -40,11 +40,11 @@ interface DialogFooterProps extends HTMLAttributes<HTMLDivElement> {
40
40
  divider?: boolean;
41
41
  }
42
42
  export declare const Dialog: {
43
- ({ children, id, open: openProp, defaultOpen, onOpenChange, ...props }: DialogRootProps): import("react/jsx-runtime").JSX.Element;
43
+ ({ children, id, open: openProp, defaultOpen, onOpenChange, modal, ...props }: DialogRootProps): import("react/jsx-runtime").JSX.Element;
44
44
  displayName: string;
45
45
  } & {
46
46
  Root: {
47
- ({ children, id, open: openProp, defaultOpen, onOpenChange, ...props }: DialogRootProps): import("react/jsx-runtime").JSX.Element;
47
+ ({ children, id, open: openProp, defaultOpen, onOpenChange, modal, ...props }: DialogRootProps): import("react/jsx-runtime").JSX.Element;
48
48
  displayName: string;
49
49
  };
50
50
  Trigger: import("react").ForwardRefExoticComponent<Omit<RadixDialog.DialogTriggerProps & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
@@ -1,4 +1,4 @@
1
- import { D as g, d } from "../../_chunks/dialog-D52AI4nF.js";
1
+ import { D as g, d } from "../../_chunks/dialog-CUzbnKLw.js";
2
2
  export {
3
3
  g as Dialog,
4
4
  d as dialogAgent
@@ -1,4 +1,4 @@
1
- import { D as e } from "../../_chunks/due-date-calculator-DXDJbUzo.js";
1
+ import { D as e } from "../../_chunks/due-date-calculator-CSjklbyw.js";
2
2
  import { C as r, a as o, D, G as _, M as T, T as M, c as E, b as l, g as C, p as A, r as N, d as i, t as n } from "../../_chunks/antenatal-schedule-timeline-Kf2Yg8uo.js";
3
3
  export {
4
4
  r as CRL_DATING_MAX_MM,
@@ -1,4 +1,4 @@
1
- import { F as r, f } from "../../_chunks/file-manager-dIJQUZvq.js";
1
+ import { F as r, f } from "../../_chunks/file-manager-Cc_uO8r2.js";
2
2
  export {
3
3
  r as FileManager,
4
4
  f as fileManagerAgent
@@ -1,4 +1,4 @@
1
- import { F as m, f as l } from "../../_chunks/freemium-paywall-B6ojVXq7.js";
1
+ import { F as m, f as l } from "../../_chunks/freemium-paywall-DIKuhX8b.js";
2
2
  export {
3
3
  m as FreemiumPaywall,
4
4
  l as freemiumPaywallAgent
@@ -1,4 +1,4 @@
1
- import { G as t } from "../../_chunks/gestational-age-calculator-BfGpt3du.js";
1
+ import { G as t } from "../../_chunks/gestational-age-calculator-DqVeJke2.js";
2
2
  export {
3
3
  t as GestationalAgeCalculator
4
4
  };
@@ -1,4 +1,4 @@
1
- import { H as t, a as p, b as m, h as o } from "../../_chunks/heatmap-BARGZZt2.js";
1
+ import { H as t, a as p, b as m, h as o } from "../../_chunks/heatmap-Gf9r7Tn1.js";
2
2
  export {
3
3
  t as Heatmap,
4
4
  p as HeatmapLegend,
@@ -1,4 +1,4 @@
1
- import { K as r, a as s } from "../../_chunks/key-value-pair-Ax8IJr1M.js";
1
+ import { K as r, a as s } from "../../_chunks/key-value-pair-BNNITp6S.js";
2
2
  export {
3
3
  r as KeyValueList,
4
4
  s as KeyValuePair
@@ -1,4 +1,4 @@
1
- import { N as a } from "../../_chunks/notes-panel-I8ntrrUW.js";
1
+ import { N as a } from "../../_chunks/notes-panel-DceRhthG.js";
2
2
  export {
3
3
  a as NotesPanel
4
4
  };
@@ -1,4 +1,4 @@
1
- import { P as t, p as m } from "../../_chunks/patient-summary-card-3dspc2tR.js";
1
+ import { P as t, p as m } from "../../_chunks/patient-summary-card-9nQWTQf6.js";
2
2
  export {
3
3
  t as PatientSummaryCard,
4
4
  m as patientSummaryCardAgent
@@ -1,4 +1,4 @@
1
- import { B as s, C as l, N as n, P as t, a as C, T as i, b as o, g as T, u as p } from "../../_chunks/balance-badge-cell-zP-iN-Pd.js";
1
+ import { B as s, C as l, N as n, P as t, a as C, T as i, b as o, g as T, u as p } from "../../_chunks/balance-badge-cell-DmDcXw0c.js";
2
2
  export {
3
3
  s as BalanceBadgeCell,
4
4
  l as CarePlanStatusCell,
@@ -1,4 +1,4 @@
1
- import { P as t, a as n, p as r, b as s } from "../../_chunks/payment-request-card-DAGqh9Yx.js";
1
+ import { P as t, a as n, p as r, b as s } from "../../_chunks/payment-request-card-CwDpwXUC.js";
2
2
  export {
3
3
  t as PaymentCard,
4
4
  n as PaymentRequestCard,
@@ -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-BqwLxy2m.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-DD5C0M3l.js";
2
2
  export {
3
3
  t as BLEEDING_WARN_PERCENT,
4
4
  s as MODERATE_POCKET_MM,
@@ -1,4 +1,4 @@
1
- import { P as o, a as t, p as d } from "../../_chunks/periodontal-chart-card-CWZ1YM1h.js";
1
+ import { P as o, a as t, p as d } from "../../_chunks/periodontal-chart-card-CxdXvsPU.js";
2
2
  export {
3
3
  o as PERIODONTAL_SITE_ORDER,
4
4
  t as PeriodontalChartCard,
@@ -1,4 +1,4 @@
1
- import { D as i, P as S, a as T, b as o, c as D, S as I, e as E, i as O, p as e } from "../../_chunks/periodontal-diagnosis-C9IuvLId.js";
1
+ import { D as i, P as S, a as T, b as o, c as D, S as I, e as E, i as O, p as e } from "../../_chunks/periodontal-diagnosis-D-PJv7KS.js";
2
2
  export {
3
3
  i as DEFAULT_DIAGNOSIS_FACTORS,
4
4
  S as PERIODONTITIS_EXTENTS,
@@ -1,4 +1,4 @@
1
- import { P as s, p as r, g as t } from "../../_chunks/position-grid-D2D5_Tze.js";
1
+ import { P as s, p as r, g as t } from "../../_chunks/position-grid-CBB88EaH.js";
2
2
  export {
3
3
  s as PositionGrid,
4
4
  r as positionGridAgent,
@@ -1,4 +1,4 @@
1
- import { P as t, p as a } from "../../_chunks/practice-results-DxOgbPDy.js";
1
+ import { P as t, p as a } from "../../_chunks/practice-results-Dhbo-fc_.js";
2
2
  export {
3
3
  t as PracticeResults,
4
4
  a as practiceResultsAgent
@@ -1,4 +1,4 @@
1
- import { P as r } from "../../_chunks/pregnancy-dating-R3q5n1Wh.js";
1
+ import { P as r } from "../../_chunks/pregnancy-dating-Bfu0Cq4H.js";
2
2
  export {
3
3
  r as PregnancyDating
4
4
  };
@@ -1,4 +1,4 @@
1
- import { P as n, R as s, T as i, a as g, p as r, r as t } from "../../_chunks/pregnancy-weight-gain-DwmNklDU.js";
1
+ import { P as n, R as s, T as i, a as g, p as r, r as t } from "../../_chunks/pregnancy-weight-gain-CUUrBTBo.js";
2
2
  export {
3
3
  n as PregnancyWeightGain,
4
4
  s as RATE_BANDS,
@@ -1,4 +1,4 @@
1
- import { P as r, p } from "../../_chunks/public-header.agent-BWusjxY8.js";
1
+ import { P as r, p } from "../../_chunks/public-header.agent-pr2hyiND.js";
2
2
  export {
3
3
  r as PublicHeader,
4
4
  p as publicHeaderAgent
@@ -1,5 +1,5 @@
1
1
  import { R as a } from "../../_chunks/radio-BBbMdbE_.js";
2
- import { R as p } from "../../_chunks/radio-group-BT97ty7o.js";
2
+ import { R as p } from "../../_chunks/radio-group-DicxWJXP.js";
3
3
  export {
4
4
  a as Radio,
5
5
  p as RadioGroup
@@ -1,4 +1,4 @@
1
- import { R as o, I as e, r as n } from "../../_chunks/radiograph-panel.agent-BA90I3Mu.js";
1
+ import { R as o, I as e, r as n } from "../../_chunks/radiograph-panel.agent-DkUokbEa.js";
2
2
  export {
3
3
  o as RadiographPanel,
4
4
  e as RadiographPanelIcon,
@@ -1,5 +1,5 @@
1
- import { R as i, r as o, w as a } from "../../_chunks/rich-text-editor-Blp4smUr.js";
2
- import { k as s } from "../../_chunks/kit-extensions-C9-v8Dih.js";
1
+ import { R as i, r as o, w as a } from "../../_chunks/rich-text-editor-CkFfmA3v.js";
2
+ import { k as s } from "../../_chunks/kit-extensions-Byfxy6sy.js";
3
3
  export {
4
4
  i as RichTextEditor,
5
5
  s as kitEditorExtensions,
@@ -1,4 +1,4 @@
1
- import { S as t, s as a } from "../../_chunks/sheet-CNFW8mYZ.js";
1
+ import { S as t, s as a } from "../../_chunks/sheet-C7SwIxwB.js";
2
2
  export {
3
3
  t as Sheet,
4
4
  a as sheetAgent
@@ -20,11 +20,11 @@ export interface SheetContentProps extends Omit<ComponentPropsWithoutRef<typeof
20
20
  children: ReactNode;
21
21
  }
22
22
  export declare const Sheet: {
23
- ({ children, id, open: openProp, defaultOpen, onOpenChange, ...props }: SheetRootProps): import("react/jsx-runtime").JSX.Element;
23
+ ({ children, id, open: openProp, defaultOpen, onOpenChange, modal, ...props }: SheetRootProps): import("react/jsx-runtime").JSX.Element;
24
24
  displayName: string;
25
25
  } & {
26
26
  Root: {
27
- ({ children, id, open: openProp, defaultOpen, onOpenChange, ...props }: SheetRootProps): import("react/jsx-runtime").JSX.Element;
27
+ ({ children, id, open: openProp, defaultOpen, onOpenChange, modal, ...props }: SheetRootProps): import("react/jsx-runtime").JSX.Element;
28
28
  displayName: string;
29
29
  };
30
30
  Trigger: import("react").ForwardRefExoticComponent<Omit<RadixDialog.DialogTriggerProps & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
@@ -1,3 +1,3 @@
1
1
  export { Stat } from './stat';
2
- export type { StatProps } from './stat';
2
+ export type { StatProps, StatTrendPolarity } from './stat';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,4 +1,4 @@
1
- import { S as o } from "../../_chunks/stat-51CDL4au.js";
1
+ import { S as o } from "../../_chunks/stat-DmjGfXND.js";
2
2
  export {
3
3
  o as Stat
4
4
  };
@@ -5,6 +5,8 @@ declare const statVariants: (props?: ({
5
5
  size?: "sm" | "md" | "lg" | null | undefined;
6
6
  align?: "center" | "end" | "start" | null | undefined;
7
7
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ /** Which way is good news for a metric's trend. */
9
+ export type StatTrendPolarity = 'higher-is-better' | 'lower-is-better';
8
10
  export interface StatProps extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof statVariants> {
9
11
  /** Metric label rendered above the value. */
10
12
  label: string;
@@ -20,6 +22,13 @@ export interface StatProps extends HTMLAttributes<HTMLDivElement>, VariantProps<
20
22
  trend?: 'up' | 'down' | 'flat';
21
23
  /** Trend delta magnitude, e.g. 12 for "↑ 12%". */
22
24
  delta?: number | string;
25
+ /**
26
+ * Which way is good news. `higher-is-better` (default) shows a rise in
27
+ * the success colour; `lower-is-better` (a no-show or cancellation rate,
28
+ * a waiting time) shows a fall in it instead. The arrow always points the
29
+ * way the number moved, and screen readers hear "better" or "worse".
30
+ */
31
+ trendPolarity?: StatTrendPolarity;
23
32
  /** Number formatting style for the delta. Default "decimal". */
24
33
  deltaFormat?: 'decimal' | 'percent';
25
34
  /** Optional leading icon rendered at the start of the label row. */
@@ -1,4 +1,4 @@
1
- import { S as e } from "../../_chunks/stepper-accordion-D7lnBGh2.js";
1
+ import { S as e } from "../../_chunks/stepper-accordion-DDTSOUHc.js";
2
2
  import { s as t } from "../../_chunks/stepper-accordion.agent-cmEguIdx.js";
3
3
  export {
4
4
  e as StepperAccordion,
@@ -1,4 +1,4 @@
1
- import { T as o, t as r } from "../../_chunks/task-editor-Ctxsa1BY.js";
1
+ import { T as o, t as r } from "../../_chunks/task-editor-ByyRu29Y.js";
2
2
  export {
3
3
  o as TaskEditor,
4
4
  r as taskEditorAgent
@@ -1,4 +1,4 @@
1
- import { W as r, w as t } from "../../_chunks/widget-picker-D8RiWrJd.js";
1
+ import { W as r, w as t } from "../../_chunks/widget-picker-DXYBMTfe.js";
2
2
  export {
3
3
  r as WidgetPicker,
4
4
  t as widgetPickerAgent
@@ -1,4 +1,4 @@
1
- import { C as r, W as e, a as s, b as d, c as w, i as t, l as f, m as l, r as i, w as k, d as n, e as A, f as C } from "../../_chunks/workflow-map-D3mezmGB.js";
1
+ import { C as r, W as e, a as s, b as d, c as w, i as t, l as f, m as l, r as i, w as k, d as n, e as A, f as C } from "../../_chunks/workflow-map-Demlpy39.js";
2
2
  export {
3
3
  r as CORE_PATIENT_FIELDS,
4
4
  e as WorkflowCard,
@@ -56,8 +56,8 @@
56
56
  }
57
57
 
58
58
  /* The theme bridges are unlayered themselves, so `revert-layer` cannot reach
59
- their rings: restate them with `!important`. Keep in step with
60
- ag-grid-theme.css and themes/bridges/{fullcalendar,redactor}-theme.css. */
59
+ their rings: restate them with `!important`. Keep in step with ag-grid-theme.css,
60
+ apexcharts-theme.css and themes/bridges/{fullcalendar,redactor}-theme.css. */
61
61
  .fc-theme-alfadocs .fc-button:focus-visible,
62
62
  .fc-theme-alfadocs a.fc-event:focus-visible,
63
63
  .fc-theme-alfadocs .fc-daygrid-more-link:focus-visible,
@@ -68,6 +68,17 @@
68
68
  outline-offset: var(--focus-ring-offset);
69
69
  }
70
70
 
71
+ .apex-theme-alfadocs .apexcharts-legend-series[role='button']:focus-visible,
72
+ .apex-theme-alfadocs .apexcharts-toolbar > [role='button']:focus-visible {
73
+ outline: var(--focus-ring-width) solid var(--ring) !important;
74
+ outline-offset: var(--focus-ring-offset);
75
+ }
76
+
77
+ .apex-theme-alfadocs .apexcharts-menu-item:focus-visible {
78
+ outline: var(--focus-ring-width) solid var(--ring) !important;
79
+ outline-offset: calc(var(--focus-ring-width) * -1);
80
+ }
81
+
71
82
  .ag-theme-alfadocs .ag-row.ds-data-table-expanded-row.ag-full-width-focus,
72
83
  .ag-theme-alfadocs .ds-data-table-expanded-row-surface:focus-visible {
73
84
  outline: var(--focus-ring-width) solid var(--ring) !important;
@@ -963,6 +963,8 @@ export declare const arUi: {
963
963
  readonly up: "ارتفع بمقدار";
964
964
  readonly down: "انخفض بمقدار";
965
965
  readonly flat: "لم يتغير";
966
+ readonly better: "(أفضل)";
967
+ readonly worse: "(أسوأ)";
966
968
  };
967
969
  };
968
970
  readonly timeline: {
@@ -3185,6 +3187,7 @@ export declare const arUi: {
3185
3187
  readonly droppedAt: "تم وضع العنصر في العمود {{col}}، الصف {{row}}.";
3186
3188
  readonly removed: "تمت إزالة العنصر.";
3187
3189
  readonly cancelled: "تم إلغاء التغيير.";
3190
+ readonly stackedReadOnly: "اللوحة ضيقة جدًا للتعديل. تُعرض العناصر الآن في عمود واحد.";
3188
3191
  };
3189
3192
  readonly widgetPicker: {
3190
3193
  readonly title: "إضافة عنصر";
@@ -3654,7 +3657,6 @@ export declare const arUi: {
3654
3657
  readonly templatesGroup: "قوالب العيادة";
3655
3658
  readonly createFirst: "أنشئ قالبك الأول";
3656
3659
  readonly manage: "إدارة القوالب";
3657
- readonly defaultBadge: "افتراضي";
3658
3660
  readonly prompt: "صف ما تريد كتابته، أو أضف تفاصيل قبل اختيار قالب";
3659
3661
  readonly write: "اكتب";
3660
3662
  readonly dictateStart: "أملِ التعليمات";
@@ -3712,7 +3714,6 @@ export declare const arUi: {
3712
3714
  readonly descHint: "يظهر أسفل الاسم في قائمة القوالب.";
3713
3715
  readonly prompt: "تعليمات للذكاء الاصطناعي";
3714
3716
  readonly promptDescription: "صف البنية والأقسام والأسلوب الذي تريده. يُضاف نص الملاحظة تلقائيًا.";
3715
- readonly isDefault: "استخدمه كافتراضي";
3716
3717
  readonly save: "احفظ القالب";
3717
3718
  readonly cancel: "إلغاء";
3718
3719
  readonly saveError: "تعذّر حفظ القالب. حاول مرة أخرى.";