@alfadocs/ui-kit-debug 1.43.0 → 1.45.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 (202) hide show
  1. package/dist/_chunks/ai-sparkle-DXeP_6a0.js +52 -0
  2. package/dist/_chunks/ai-sparkle-DXeP_6a0.js.map +1 -0
  3. package/dist/_chunks/{calendar-ChJQzRw-.js → calendar-U6N0F99w.js} +383 -359
  4. package/dist/_chunks/calendar-U6N0F99w.js.map +1 -0
  5. package/dist/_chunks/calendar-workspace-B7KvZ1_D.js +12161 -0
  6. package/dist/_chunks/calendar-workspace-B7KvZ1_D.js.map +1 -0
  7. package/dist/_chunks/{face-scheme-Dg6ZyLKb.js → face-scheme-Bm6pe7R8.js} +265 -275
  8. package/dist/_chunks/face-scheme-Bm6pe7R8.js.map +1 -0
  9. package/dist/_chunks/help-me-write-templates-GUeEn3Ff.js +741 -0
  10. package/dist/_chunks/help-me-write-templates-GUeEn3Ff.js.map +1 -0
  11. package/dist/_chunks/{notes-panel-CRAovkjx.js → notes-panel-Dkk9QPPX.js} +159 -152
  12. package/dist/_chunks/notes-panel-Dkk9QPPX.js.map +1 -0
  13. package/dist/_chunks/{panel-subview-PMBRPFOa.js → panel-subview-CYnuX-KR.js} +61 -40
  14. package/dist/_chunks/panel-subview-CYnuX-KR.js.map +1 -0
  15. package/dist/_chunks/rich-text-editor-BrAvNajV.js +3779 -0
  16. package/dist/_chunks/rich-text-editor-BrAvNajV.js.map +1 -0
  17. package/dist/_chunks/undo-2-CYNAzclj.js +26 -0
  18. package/dist/_chunks/undo-2-CYNAzclj.js.map +1 -0
  19. package/dist/_chunks/use-ai-sparkle-CyQSRTCe.js +103 -0
  20. package/dist/_chunks/use-ai-sparkle-CyQSRTCe.js.map +1 -0
  21. package/dist/_chunks/variables-menu-vXUaSBj4.js +401 -0
  22. package/dist/_chunks/variables-menu-vXUaSBj4.js.map +1 -0
  23. package/dist/agent-catalog.json +84 -3
  24. package/dist/agent-i18n/en.json +14 -3
  25. package/dist/components/ai-sparkle/ai-sparkle.d.ts +24 -0
  26. package/dist/components/ai-sparkle/ai-sparkle.d.ts.map +1 -0
  27. package/dist/components/ai-sparkle/index.d.ts +3 -0
  28. package/dist/components/ai-sparkle/index.d.ts.map +1 -0
  29. package/dist/components/ai-sparkle/index.js +5 -0
  30. package/dist/components/ai-sparkle/index.js.map +1 -0
  31. package/dist/components/calendar/calendar.d.ts +6 -0
  32. package/dist/components/calendar/calendar.d.ts.map +1 -1
  33. package/dist/components/calendar/index.js +1 -1
  34. package/dist/components/face-scheme/index.js +1 -1
  35. package/dist/components/index.d.ts +4 -2
  36. package/dist/components/index.d.ts.map +1 -1
  37. package/dist/components/notes-panel/index.js +1 -1
  38. package/dist/components/notes-panel/notes-panel.d.ts +4 -0
  39. package/dist/components/notes-panel/notes-panel.d.ts.map +1 -1
  40. package/dist/components/panel-subview/index.js +1 -1
  41. package/dist/components/panel-subview/panel-subview.d.ts +6 -0
  42. package/dist/components/panel-subview/panel-subview.d.ts.map +1 -1
  43. package/dist/components/rich-text-editor/editor-toolbar.d.ts +35 -3
  44. package/dist/components/rich-text-editor/editor-toolbar.d.ts.map +1 -1
  45. package/dist/components/rich-text-editor/index.d.ts +1 -1
  46. package/dist/components/rich-text-editor/index.d.ts.map +1 -1
  47. package/dist/components/rich-text-editor/index.js +1 -1
  48. package/dist/components/rich-text-editor/rich-text-editor.agent.d.ts.map +1 -1
  49. package/dist/components/rich-text-editor/rich-text-editor.d.ts +98 -15
  50. package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -1
  51. package/dist/components/variables-menu/index.d.ts +4 -0
  52. package/dist/components/variables-menu/index.d.ts.map +1 -0
  53. package/dist/components/variables-menu/index.js +6 -0
  54. package/dist/components/variables-menu/index.js.map +1 -0
  55. package/dist/components/variables-menu/variables-menu.agent.d.ts +10 -0
  56. package/dist/components/variables-menu/variables-menu.agent.d.ts.map +1 -0
  57. package/dist/components/variables-menu/variables-menu.d.ts +53 -0
  58. package/dist/components/variables-menu/variables-menu.d.ts.map +1 -0
  59. package/dist/hooks/index.d.ts +1 -0
  60. package/dist/hooks/index.d.ts.map +1 -1
  61. package/dist/hooks/index.js +64 -56
  62. package/dist/hooks/index.js.map +1 -1
  63. package/dist/hooks/use-ai-sparkle.d.ts +109 -0
  64. package/dist/hooks/use-ai-sparkle.d.ts.map +1 -0
  65. package/dist/host-compat.css +5 -5
  66. package/dist/i18n/locales/ar.d.ts +77 -6
  67. package/dist/i18n/locales/ar.d.ts.map +1 -1
  68. package/dist/i18n/locales/ar.js +78 -7
  69. package/dist/i18n/locales/ar.js.map +1 -1
  70. package/dist/i18n/locales/de.d.ts +77 -6
  71. package/dist/i18n/locales/de.d.ts.map +1 -1
  72. package/dist/i18n/locales/de.js +78 -7
  73. package/dist/i18n/locales/de.js.map +1 -1
  74. package/dist/i18n/locales/el.d.ts +77 -6
  75. package/dist/i18n/locales/el.d.ts.map +1 -1
  76. package/dist/i18n/locales/el.js +78 -7
  77. package/dist/i18n/locales/el.js.map +1 -1
  78. package/dist/i18n/locales/en.d.ts +77 -6
  79. package/dist/i18n/locales/en.d.ts.map +1 -1
  80. package/dist/i18n/locales/en.js +85 -7
  81. package/dist/i18n/locales/en.js.map +1 -1
  82. package/dist/i18n/locales/es.d.ts +77 -6
  83. package/dist/i18n/locales/es.d.ts.map +1 -1
  84. package/dist/i18n/locales/es.js +78 -7
  85. package/dist/i18n/locales/es.js.map +1 -1
  86. package/dist/i18n/locales/fr.d.ts +77 -6
  87. package/dist/i18n/locales/fr.d.ts.map +1 -1
  88. package/dist/i18n/locales/fr.js +78 -7
  89. package/dist/i18n/locales/fr.js.map +1 -1
  90. package/dist/i18n/locales/hi.d.ts +77 -6
  91. package/dist/i18n/locales/hi.d.ts.map +1 -1
  92. package/dist/i18n/locales/hi.js +78 -7
  93. package/dist/i18n/locales/hi.js.map +1 -1
  94. package/dist/i18n/locales/it.d.ts +77 -6
  95. package/dist/i18n/locales/it.d.ts.map +1 -1
  96. package/dist/i18n/locales/it.js +78 -7
  97. package/dist/i18n/locales/it.js.map +1 -1
  98. package/dist/i18n/locales/ja.d.ts +77 -6
  99. package/dist/i18n/locales/ja.d.ts.map +1 -1
  100. package/dist/i18n/locales/ja.js +78 -7
  101. package/dist/i18n/locales/ja.js.map +1 -1
  102. package/dist/i18n/locales/nl.d.ts +77 -6
  103. package/dist/i18n/locales/nl.d.ts.map +1 -1
  104. package/dist/i18n/locales/nl.js +78 -7
  105. package/dist/i18n/locales/nl.js.map +1 -1
  106. package/dist/i18n/locales/pl.d.ts +77 -6
  107. package/dist/i18n/locales/pl.d.ts.map +1 -1
  108. package/dist/i18n/locales/pl.js +78 -7
  109. package/dist/i18n/locales/pl.js.map +1 -1
  110. package/dist/i18n/locales/pt.d.ts +77 -6
  111. package/dist/i18n/locales/pt.d.ts.map +1 -1
  112. package/dist/i18n/locales/pt.js +78 -7
  113. package/dist/i18n/locales/pt.js.map +1 -1
  114. package/dist/i18n/locales/ro.d.ts +77 -6
  115. package/dist/i18n/locales/ro.d.ts.map +1 -1
  116. package/dist/i18n/locales/ro.js +78 -7
  117. package/dist/i18n/locales/ro.js.map +1 -1
  118. package/dist/i18n/locales/ru.d.ts +77 -6
  119. package/dist/i18n/locales/ru.d.ts.map +1 -1
  120. package/dist/i18n/locales/ru.js +78 -7
  121. package/dist/i18n/locales/ru.js.map +1 -1
  122. package/dist/i18n/locales/sq.d.ts +77 -6
  123. package/dist/i18n/locales/sq.d.ts.map +1 -1
  124. package/dist/i18n/locales/sq.js +78 -7
  125. package/dist/i18n/locales/sq.js.map +1 -1
  126. package/dist/i18n/locales/sv.d.ts +77 -6
  127. package/dist/i18n/locales/sv.d.ts.map +1 -1
  128. package/dist/i18n/locales/sv.js +78 -7
  129. package/dist/i18n/locales/sv.js.map +1 -1
  130. package/dist/i18n/locales/tr.d.ts +77 -6
  131. package/dist/i18n/locales/tr.d.ts.map +1 -1
  132. package/dist/i18n/locales/tr.js +78 -7
  133. package/dist/i18n/locales/tr.js.map +1 -1
  134. package/dist/i18n/locales/zh.d.ts +77 -6
  135. package/dist/i18n/locales/zh.d.ts.map +1 -1
  136. package/dist/i18n/locales/zh.js +78 -7
  137. package/dist/i18n/locales/zh.js.map +1 -1
  138. package/dist/index.js +1106 -1099
  139. package/dist/index.js.map +1 -1
  140. package/dist/locales/ar.json +78 -7
  141. package/dist/locales/de.json +78 -7
  142. package/dist/locales/el.json +78 -7
  143. package/dist/locales/en.json +78 -7
  144. package/dist/locales/es.json +78 -7
  145. package/dist/locales/fr.json +78 -7
  146. package/dist/locales/hi.json +78 -7
  147. package/dist/locales/it.json +78 -7
  148. package/dist/locales/ja.json +78 -7
  149. package/dist/locales/nl.json +78 -7
  150. package/dist/locales/pl.json +78 -7
  151. package/dist/locales/pt.json +78 -7
  152. package/dist/locales/ro.json +78 -7
  153. package/dist/locales/ru.json +78 -7
  154. package/dist/locales/sq.json +78 -7
  155. package/dist/locales/sv.json +78 -7
  156. package/dist/locales/tr.json +78 -7
  157. package/dist/locales/zh.json +78 -7
  158. package/dist/patterns/calendar/calendar-bookings-panel.d.ts +8 -3
  159. package/dist/patterns/calendar/calendar-bookings-panel.d.ts.map +1 -1
  160. package/dist/patterns/calendar/calendar-care-rules.d.ts +49 -0
  161. package/dist/patterns/calendar/calendar-care-rules.d.ts.map +1 -0
  162. package/dist/patterns/calendar/calendar-task-editor.d.ts +31 -0
  163. package/dist/patterns/calendar/calendar-task-editor.d.ts.map +1 -0
  164. package/dist/patterns/calendar/calendar-waiting-list-panel.d.ts.map +1 -1
  165. package/dist/patterns/calendar/calendar-workspace.d.ts +8 -1
  166. package/dist/patterns/calendar/calendar-workspace.d.ts.map +1 -1
  167. package/dist/patterns/calendar/calendar-workspace.model.d.ts +39 -12
  168. package/dist/patterns/calendar/calendar-workspace.model.d.ts.map +1 -1
  169. package/dist/patterns/calendar/calendar.data.d.ts +9 -0
  170. package/dist/patterns/calendar/calendar.data.d.ts.map +1 -1
  171. package/dist/patterns/calendar/calendar.journey.d.ts +35 -3
  172. package/dist/patterns/calendar/calendar.journey.d.ts.map +1 -1
  173. package/dist/patterns/calendar/calendar.model.d.ts +23 -1
  174. package/dist/patterns/calendar/calendar.model.d.ts.map +1 -1
  175. package/dist/patterns/calendar/calendar.sheets.d.ts +21 -3
  176. package/dist/patterns/calendar/calendar.sheets.d.ts.map +1 -1
  177. package/dist/patterns/calendar/calendar.surface.d.ts +6 -1
  178. package/dist/patterns/calendar/calendar.surface.d.ts.map +1 -1
  179. package/dist/patterns/calendar/calendar.types.d.ts +32 -1
  180. package/dist/patterns/calendar/calendar.types.d.ts.map +1 -1
  181. package/dist/patterns/calendar/index.js +1 -1
  182. package/dist/patterns/help-me-write-templates/help-me-write-templates.d.ts +58 -26
  183. package/dist/patterns/help-me-write-templates/help-me-write-templates.d.ts.map +1 -1
  184. package/dist/patterns/help-me-write-templates/index.d.ts +1 -1
  185. package/dist/patterns/help-me-write-templates/index.d.ts.map +1 -1
  186. package/dist/patterns/help-me-write-templates/index.js +1 -1
  187. package/dist/tokens.css +6 -6
  188. package/package.json +5 -1
  189. package/dist/_chunks/calendar-ChJQzRw-.js.map +0 -1
  190. package/dist/_chunks/calendar-workspace-DhXqqu-D.js +0 -11392
  191. package/dist/_chunks/calendar-workspace-DhXqqu-D.js.map +0 -1
  192. package/dist/_chunks/face-scheme-Dg6ZyLKb.js.map +0 -1
  193. package/dist/_chunks/help-me-write-templates-B-m7zgJa.js +0 -775
  194. package/dist/_chunks/help-me-write-templates-B-m7zgJa.js.map +0 -1
  195. package/dist/_chunks/highlighter-DSkckT2Q.js +0 -15
  196. package/dist/_chunks/highlighter-DSkckT2Q.js.map +0 -1
  197. package/dist/_chunks/notes-panel-CRAovkjx.js.map +0 -1
  198. package/dist/_chunks/panel-subview-PMBRPFOa.js.map +0 -1
  199. package/dist/_chunks/rich-text-editor-DUMeifwc.js +0 -3176
  200. package/dist/_chunks/rich-text-editor-DUMeifwc.js.map +0 -1
  201. package/dist/_chunks/wand-sparkles-DAjKyhz7.js +0 -27
  202. package/dist/_chunks/wand-sparkles-DAjKyhz7.js.map +0 -1
@@ -42,15 +42,71 @@ export interface RichTextEditorVariable {
42
42
  token: string;
43
43
  /** Human label shown in the menu (translated by the host). */
44
44
  label: string;
45
- /** Optional second line in the menu. */
45
+ /** Optional second line in the menu (reserved for a future resolved-value
46
+ * preview — not rendered yet). */
46
47
  description?: string;
48
+ /**
49
+ * One of the fixed catalogue groups the VariablesMenu renders as section
50
+ * headers: `patient`, `appointment`, `practice`, `operator`, `document`.
51
+ * Any other value (or omitting it) lands the variable in the menu's
52
+ * "Other" group at the end.
53
+ */
54
+ group?: 'patient' | 'appointment' | 'practice' | 'operator' | 'document' | string;
55
+ }
56
+ /** A practice template the AI pill's Templates menu offers. */
57
+ export interface RichTextEditorAiTemplate {
58
+ id: string;
59
+ name: string;
60
+ /** Second line in the menu. */
61
+ description?: string;
62
+ /** @deprecated The host's order is the menu order. Ignored. */
63
+ isDefault?: boolean;
64
+ }
65
+ /**
66
+ * What a one-shot AI action rewrites: the selection when there is one, else
67
+ * the whole document. Resolve with the rewritten HTML for that same scope.
68
+ */
69
+ export interface RichTextEditorAiActionRequest {
70
+ html: string;
71
+ /** `html` as plain text. */
72
+ text: string;
73
+ scope: 'selection' | 'document';
74
+ signal: AbortSignal;
75
+ }
76
+ /** Practice templates as an AI pill segment (and in the selection bubble). */
77
+ export interface RichTextEditorAiTemplates {
78
+ /** In menu order, first to last. */
79
+ templates: RichTextEditorAiTemplate[];
80
+ /** The AI call. Reject with an error named `AiCreditsExhaustedError` on 402. */
81
+ onRun: (request: RichTextEditorAiActionRequest & {
82
+ template: RichTextEditorAiTemplate;
83
+ }) => Promise<string>;
84
+ /** Shows "Manage templates" / "Create your first template". */
85
+ onManage?: (mode: 'list' | 'create') => void;
86
+ }
87
+ /** Fired after a one-shot AI action rewrote the note. */
88
+ export interface RichTextEditorAiApplied {
89
+ action: 'proofread' | 'format' | 'template';
90
+ template?: RichTextEditorAiTemplate;
91
+ scope: 'selection' | 'document';
92
+ /** The document before the change. */
93
+ previousHtml: string;
94
+ /** Puts `previousHtml` back. */
95
+ undo: () => void;
47
96
  }
48
97
  /** What a host's own Help-me-write surface gets from `renderHelpMeWrite`. */
49
98
  export interface HelpMeWriteRenderContext {
50
99
  /** Whether the surface should show (consent is already granted). */
51
100
  open: boolean;
52
101
  onClose: () => void;
53
- /** Text of the selection when the reader opened it; '' for a caret. */
102
+ /**
103
+ * What the reader asked about: `'document'` from the AI pill (use the
104
+ * whole note as context; `insertAtSelection` inserts at the caret) or
105
+ * `'selection'` from the selection bubble (`selectionText` is the context,
106
+ * and `insertAtSelection` replaces it).
107
+ */
108
+ scope: 'document' | 'selection';
109
+ /** Text of the selection when opened from the bubble; '' otherwise. */
54
110
  selectionText: string;
55
111
  getHTML: () => string;
56
112
  getText: () => string;
@@ -157,20 +213,31 @@ export interface RichTextEditorProps {
157
213
  onFinalTranscript: (text: string) => void;
158
214
  }) => Promise<void>;
159
215
  /**
160
- * One-shot AI document actions (CONSUMER-PROVIDED backend). Each gets the
161
- * current HTML + an AbortSignal and resolves with rewritten HTML; while one
162
- * runs the editor is disabled with a spinner and the result replaces the whole
163
- * document. `onProofread` corrects spelling/grammar; `onAutoFormat` tidies the
164
- * document's structure/formatting. Each adds a FAB segment when provided.
216
+ * One-shot AI actions (CONSUMER-PROVIDED backend). Each gets the HTML to
217
+ * rewrite (the selection if there is one, else the whole document) and
218
+ * resolves with the rewritten HTML, which replaces that same scope. While
219
+ * one runs the editor is disabled with a spinner. `onProofread` corrects
220
+ * spelling/grammar; `onAutoFormat` tidies structure/formatting. Each adds a
221
+ * pill segment and a selection-bubble button. Gated by `aiConsent`.
165
222
  */
166
- onProofread?: (ctx: {
167
- html: string;
168
- signal: AbortSignal;
169
- }) => Promise<string>;
170
- onAutoFormat?: (ctx: {
171
- html: string;
172
- signal: AbortSignal;
173
- }) => Promise<string>;
223
+ onProofread?: (ctx: RichTextEditorAiActionRequest) => Promise<string>;
224
+ onAutoFormat?: (ctx: RichTextEditorAiActionRequest) => Promise<string>;
225
+ /** Practice templates: a Templates pill segment that runs one in one click. */
226
+ aiTemplates?: RichTextEditorAiTemplates;
227
+ /** After a one-shot action rewrote the note; use it to offer Undo. */
228
+ onAiApplied?: (applied: RichTextEditorAiApplied) => void;
229
+ /**
230
+ * Sparkle the AI pill when it appears, while an action runs and when the
231
+ * result lands. Default `true`; motion is off under reduced motion and in
232
+ * the accessible themes. The pill carries `data-ai-sparkle` for styling.
233
+ */
234
+ aiSparkle?: boolean;
235
+ /**
236
+ * A bubble over a text selection with quick formats and the AI actions.
237
+ * Default: on when the editor has any AI action (templates, proofread,
238
+ * auto-format or Help me write).
239
+ */
240
+ selectionToolbar?: boolean;
174
241
  /**
175
242
  * Template variables. When provided, the toolbar gains an "Insert variable"
176
243
  * menu that inserts `[[TOKEN]]` as a chip (Redactor's native `variable`
@@ -178,6 +245,20 @@ export interface RichTextEditorProps {
178
245
  * for these tokens in inbound content renders as a chip too.
179
246
  */
180
247
  variables?: RichTextEditorVariable[];
248
+ /**
249
+ * Most-recently-used variable tokens, most recent first. Rendered as a
250
+ * "Recent" group pinned above the catalogue (max 3 shown). The kit never
251
+ * persists this itself — the host owns storage (see `onVariableInserted`
252
+ * and the `usePersistentState` example in this component's `.mdx`).
253
+ */
254
+ recentVariableTokens?: string[];
255
+ /**
256
+ * Fires with the token whenever a variable is inserted from either the
257
+ * toolbar button or the `[[` caret menu — the seam a host uses to build
258
+ * `recentVariableTokens`. Does not fire for typed `[[TOKEN]]` text that
259
+ * becomes a chip on its own (only for a menu pick).
260
+ */
261
+ onVariableInserted?: (token: string) => void;
181
262
  /**
182
263
  * Decide whether a `[[TOKEN]]` is valid. Default: it is one of `variables`
183
264
  * (any letter case). Invalid tokens render as error chips with a message
@@ -213,6 +294,8 @@ export interface RichTextEditorHandle {
213
294
  getText: () => string;
214
295
  /** Always '' — Redactor has no native Markdown serializer (see MDX). */
215
296
  getMarkdown: () => string;
297
+ /** A one-shot AI action (template, spelling, auto-format) is running. */
298
+ isAiBusy: () => boolean;
216
299
  /** HTML goes through DOMPurify before reaching Redactor. */
217
300
  setContent: (html: string) => void;
218
301
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"rich-text-editor.d.ts","sourceRoot":"","sources":["../../../src/components/rich-text-editor/rich-text-editor.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rich-text-editor.d.ts","sourceRoot":"","sources":["../../../src/components/rich-text-editor/rich-text-editor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { VariablesMenu } from './variables-menu';
2
+ export type { VariablesMenuProps, VariablesMenuVariable, VariablesMenuGroup, VariablesMenuHandle, VariablesMenuCloseReason, } from './variables-menu';
3
+ export { variablesMenuAgent } from './variables-menu.agent';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/variables-menu/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EACV,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { V as r, v as s } from "../../_chunks/variables-menu-vXUaSBj4.js";
2
+ export {
3
+ r as VariablesMenu,
4
+ s as variablesMenuAgent
5
+ };
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,10 @@
1
+ import type { AgentAdapter } from '../../agent/types';
2
+ interface VariablesMenuAgentHandle {
3
+ getQuery: () => string;
4
+ getVisibleTokens: () => string[];
5
+ selectToken: (token: string) => void;
6
+ close: () => void;
7
+ }
8
+ export declare const variablesMenuAgent: AgentAdapter<VariablesMenuAgentHandle>;
9
+ export {};
10
+ //# sourceMappingURL=variables-menu.agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variables-menu.agent.d.ts","sourceRoot":"","sources":["../../../src/components/variables-menu/variables-menu.agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,UAAU,wBAAwB;IAChC,QAAQ,EAAE,MAAM,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,MAAM,EAAE,CAAC;IACjC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,eAAO,MAAM,kBAAkB,EAAE,YAAY,CAAC,wBAAwB,CAqErE,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { type KeyboardEvent as ReactKeyboardEvent } from 'react';
2
+ export type VariablesMenuGroup = 'patient' | 'appointment' | 'practice' | 'operator' | 'document';
3
+ /** A single merge variable the menu can insert. */
4
+ export interface VariablesMenuVariable {
5
+ /** Inserted as `[[token]]`. Letters, digits and underscores only. */
6
+ token: string;
7
+ /** Localised label shown at the start of the row. */
8
+ label: string;
9
+ /** Optional second line (reserved for a future resolved-value preview). */
10
+ description?: string;
11
+ /** One of the fixed catalogue groups. Ungrouped variables land in "Other". */
12
+ group?: VariablesMenuGroup | string;
13
+ }
14
+ export type VariablesMenuCloseReason = 'escape' | 'select' | 'outside' | 'backspace';
15
+ /** Imperative surface for a host that owns its own keydown handling (the
16
+ * caret anchor forwards key events from the editor's contenteditable region,
17
+ * which sits outside this component's own DOM subtree). */
18
+ export interface VariablesMenuHandle {
19
+ /** Forward a keydown from the host. Returns true when the menu consumed
20
+ * it — the host should then call `preventDefault`/`stopPropagation`. */
21
+ handleKeyDown: (event: ReactKeyboardEvent | KeyboardEvent) => boolean;
22
+ /** Focus the search field (button anchor only — the caret anchor keeps
23
+ * focus in the editor and never calls this). */
24
+ focusSearch: () => void;
25
+ }
26
+ export interface VariablesMenuProps {
27
+ /** Stable id for agent registration / DOM addressing. */
28
+ id?: string;
29
+ className?: string;
30
+ /** The full catalogue on offer. */
31
+ variables: VariablesMenuVariable[];
32
+ /** Most-recently-used tokens, most recent first. Only the first 3 render. */
33
+ recentTokens?: string[];
34
+ /** Current filter text. Always controlled — the caret anchor mirrors the
35
+ * text the reader is typing into the document; the button anchor mirrors
36
+ * its own search field. */
37
+ query: string;
38
+ onQueryChange: (query: string) => void;
39
+ onSelect: (variable: VariablesMenuVariable) => void;
40
+ onClose: (reason: VariablesMenuCloseReason) => void;
41
+ /** False for the caret anchor: no search field at all — the text typed
42
+ * after `[[` in the document is the filter, the host's contenteditable
43
+ * keeps focus and forwards keys via the imperative handle. Default true. */
44
+ searchFocusable?: boolean;
45
+ 'aria-label'?: string;
46
+ /** Fires whenever the active row's DOM id changes (including to
47
+ * `undefined` when the list is empty). The caret anchor mirrors this onto
48
+ * the editor's own `aria-activedescendant`, since focus — and so the
49
+ * combobox role — lives on the contenteditable, not in this component. */
50
+ onActiveDescendantChange?: (id: string | undefined) => void;
51
+ }
52
+ export declare const VariablesMenu: import("react").ForwardRefExoticComponent<VariablesMenuProps & import("react").RefAttributes<VariablesMenuHandle>>;
53
+ //# sourceMappingURL=variables-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variables-menu.d.ts","sourceRoot":"","sources":["../../../src/components/variables-menu/variables-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,aAAa,IAAI,kBAAkB,EAEzC,MAAM,OAAO,CAAC;AAmBf,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,aAAa,GACb,UAAU,GACV,UAAU,GACV,UAAU,CAAC;AAEf,mDAAmD;AACnD,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC;CACrC;AAED,MAAM,MAAM,wBAAwB,GAChC,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,WAAW,CAAC;AAEhB;;2DAE2D;AAC3D,MAAM,WAAW,mBAAmB;IAClC;4EACwE;IACxE,aAAa,EAAE,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,KAAK,OAAO,CAAC;IACtE;oDACgD;IAChD,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,SAAS,EAAE,qBAAqB,EAAE,CAAC;IACnC,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;+BAE2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACpD,OAAO,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACpD;;gFAE4E;IAC5E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;8EAG0E;IAC1E,wBAAwB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CAC7D;AA+JD,eAAO,MAAM,aAAa,oHAqTxB,CAAC"}
@@ -30,4 +30,5 @@ export { usePresenceTransition, type PresencePhase, type UsePresenceTransitionOp
30
30
  export { useListReflow, REFLOW_ROW_CLASS, type UseListReflowOptions, type UseListReflowReturn, } from './use-list-reflow';
31
31
  export { useClampOverflow } from './use-clamp-overflow';
32
32
  export { useScrollOverflow, type UseScrollOverflowReturn, } from './use-scroll-overflow';
33
+ export { useAiSparkle, SHIMMER_CLASS as AI_SPARKLE_SHIMMER_CLASS, COMET_CLASS as AI_SPARKLE_COMET_CLASS, BURST_CLASS as AI_SPARKLE_BURST_CLASS, SPARKLE_GLYPHS as AI_SPARKLE_GLYPHS, COMET_TAIL as AI_SPARKLE_COMET_TAIL, COMET_WRAPPER_CLASS as AI_SPARKLE_COMET_WRAPPER_CLASS, type AiSparkleState, type UseAiSparkleOptions, type UseAiSparkleProps, type UseAiSparkleReturn, } from './use-ai-sparkle';
33
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"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"}
@@ -1,40 +1,41 @@
1
- import { u as h } from "../_chunks/use-prefers-reduced-motion-BMwIQRjB.js";
2
- import { u as y } from "../_chunks/use-media-query-CcAx5SMM.js";
3
- import { Z as D, u as R, a as _, b as F } from "../_chunks/use-zoom-drilldown-qCX34w9I.js";
4
- import { u as g } from "../_chunks/use-count-up-BLLetaZ8.js";
5
- import { u as k } from "../_chunks/use-locale-BkCIHujH.js";
6
- import { A as M, T as V, a as W, r as H, t as N, u as Y } from "../_chunks/use-theme-CAuo6EYT.js";
7
- import { u as q } from "../_chunks/use-controllable-state-BiY4xTzM.js";
8
- import { u as G } from "../_chunks/use-copy-to-clipboard-Cyfc_dlv.js";
1
+ import { u as R } from "../_chunks/use-prefers-reduced-motion-BMwIQRjB.js";
2
+ import { u as I } from "../_chunks/use-media-query-CcAx5SMM.js";
3
+ import { Z as h, u as v, a as y, b as w } from "../_chunks/use-zoom-drilldown-qCX34w9I.js";
4
+ import { u as K } from "../_chunks/use-count-up-BLLetaZ8.js";
5
+ import { u as M } from "../_chunks/use-locale-BkCIHujH.js";
6
+ import { A as k, T as H, a as W, r as B, t as V, u as Y } from "../_chunks/use-theme-CAuo6EYT.js";
7
+ import { u as N } from "../_chunks/use-controllable-state-BiY4xTzM.js";
8
+ import { u as Z } from "../_chunks/use-copy-to-clipboard-Cyfc_dlv.js";
9
9
  import { u as j } from "../_chunks/use-debounced-callback-BisrB-Fq.js";
10
- import { useState as b, useRef as x, useEffect as E } from "react";
10
+ import { useState as A, useRef as S, useEffect as E } from "react";
11
11
  import { u as Q, a as J } from "../_chunks/use-direction-Dp8h70PP.js";
12
12
  import { u as $ } from "../_chunks/use-persistent-state-nZwZAnE9.js";
13
13
  import { u as te } from "../_chunks/use-isomorphic-layout-effect-BGfaCOP1.js";
14
- import { u as oe, a as ue } from "../_chunks/use-scroll-overflow-UbLrUfBo.js";
14
+ import { u as oe, a as se } from "../_chunks/use-scroll-overflow-UbLrUfBo.js";
15
15
  import { c as ne, u as ae } from "../_chunks/use-priority-overflow-c9SjxZkZ.js";
16
16
  import { u as ce } from "../_chunks/use-web-otp-D_utzp6S.js";
17
17
  import { u as fe } from "../_chunks/use-visual-viewport-pin-ChurOsHM.js";
18
18
  import { u as de } from "../_chunks/use-edge-resize-BHesP0kg.js";
19
- import { u as xe } from "../_chunks/use-countdown-Yd6ts0_a.js";
20
- import { u as be } from "../_chunks/use-check-animation--I3cS00X.js";
21
- import { R as Te, u as Ce, a as Le } from "../_chunks/use-list-reflow-Cw43nxw5.js";
22
- import { u as Oe } from "../_chunks/use-presence-transition-cDwWUXV-.js";
23
- import { u as ve } from "../_chunks/use-clamp-overflow-DQE2kwZ9.js";
24
- function C(e, o) {
25
- const [t, i] = b(e), u = x(null);
19
+ import { u as Se } from "../_chunks/use-countdown-Yd6ts0_a.js";
20
+ import { u as Ae } from "../_chunks/use-check-animation--I3cS00X.js";
21
+ import { R as Le, u as _e, a as Ce } from "../_chunks/use-list-reflow-Cw43nxw5.js";
22
+ import { u as be } from "../_chunks/use-presence-transition-cDwWUXV-.js";
23
+ import { u as Oe } from "../_chunks/use-clamp-overflow-DQE2kwZ9.js";
24
+ import { B as Pe, b as he, C as ve, a as ye, S as we, c as De, u as Ke } from "../_chunks/use-ai-sparkle-CyQSRTCe.js";
25
+ function _(e, o) {
26
+ const [t, i] = A(e), s = S(null);
26
27
  return E(() => {
27
28
  if (o <= 0) {
28
- u.current !== null && (clearTimeout(u.current), u.current = null), i(e);
29
+ s.current !== null && (clearTimeout(s.current), s.current = null), i(e);
29
30
  return;
30
31
  }
31
32
  const n = setTimeout(() => {
32
- i(e), u.current = null;
33
+ i(e), s.current = null;
33
34
  }, o);
34
- return u.current = n, () => clearTimeout(n);
35
+ return s.current = n, () => clearTimeout(n);
35
36
  }, [e, o]), t;
36
37
  }
37
- const S = [
38
+ const x = [
38
39
  "a[href]",
39
40
  "button:not([disabled])",
40
41
  'input:not([disabled]):not([type="hidden"])',
@@ -47,7 +48,7 @@ const S = [
47
48
  ].join(",");
48
49
  function p(e) {
49
50
  return Array.from(
50
- e.querySelectorAll(S)
51
+ e.querySelectorAll(x)
51
52
  ).filter((o) => {
52
53
  if (o.hidden) return !1;
53
54
  let t = o;
@@ -58,75 +59,82 @@ function p(e) {
58
59
  return !0;
59
60
  });
60
61
  }
61
- function L(e, o = {}) {
62
- const { enabled: t = !0, autoFocus: i = !0, restoreFocus: u = !0 } = o, n = x(null);
62
+ function C(e, o = {}) {
63
+ const { enabled: t = !0, autoFocus: i = !0, restoreFocus: s = !0 } = o, n = S(null);
63
64
  E(() => {
64
65
  if (!t) return;
65
66
  const a = e.current;
66
67
  if (!a) return;
67
68
  if (n.current = typeof document < "u" && document.activeElement instanceof HTMLElement ? document.activeElement : null, i) {
68
- const s = p(a)[0] ?? (a.tabIndex >= -1 ? a : null);
69
- s == null || s.focus();
69
+ const u = p(a)[0] ?? (a.tabIndex >= -1 ? a : null);
70
+ u == null || u.focus();
70
71
  }
71
72
  function f(r) {
72
73
  if (r.key !== "Tab") return;
73
- const s = e.current;
74
- if (!s) return;
75
- const c = p(s);
74
+ const u = e.current;
75
+ if (!u) return;
76
+ const c = p(u);
76
77
  if (c.length === 0) {
77
78
  r.preventDefault();
78
79
  return;
79
80
  }
80
81
  const m = c[0], d = c[c.length - 1], l = document.activeElement;
81
- r.shiftKey ? (l === m || !s.contains(l)) && (r.preventDefault(), d.focus()) : (l === d || !s.contains(l)) && (r.preventDefault(), m.focus());
82
+ r.shiftKey ? (l === m || !u.contains(l)) && (r.preventDefault(), d.focus()) : (l === d || !u.contains(l)) && (r.preventDefault(), m.focus());
82
83
  }
83
84
  return a.addEventListener("keydown", f), () => {
84
- if (a.removeEventListener("keydown", f), u && n.current) {
85
+ if (a.removeEventListener("keydown", f), s && n.current) {
85
86
  const r = n.current;
86
87
  requestAnimationFrame(() => {
87
88
  r.isConnected && r.focus();
88
89
  });
89
90
  }
90
91
  };
91
- }, [t, i, u, e]);
92
+ }, [t, i, s, e]);
92
93
  }
93
94
  export {
94
- M as ACCESSIBILITY_STORAGE_KEY,
95
- Te as REFLOW_ROW_CLASS,
96
- V as THEME_CLASS,
95
+ k as ACCESSIBILITY_STORAGE_KEY,
96
+ Pe as AI_SPARKLE_BURST_CLASS,
97
+ he as AI_SPARKLE_COMET_CLASS,
98
+ ve as AI_SPARKLE_COMET_TAIL,
99
+ ye as AI_SPARKLE_COMET_WRAPPER_CLASS,
100
+ we as AI_SPARKLE_GLYPHS,
101
+ De as AI_SPARKLE_SHIMMER_CLASS,
102
+ Le as REFLOW_ROW_CLASS,
103
+ H as THEME_CLASS,
97
104
  W as THEME_STORAGE_KEY,
98
- D as ZOOM_DRILLDOWN_TRANSITION_CLASS,
105
+ h as ZOOM_DRILLDOWN_TRANSITION_CLASS,
99
106
  ne as computePriorityLayout,
100
- H as resolveTheme,
101
- N as themeClassList,
102
- be as useCheckAnimation,
103
- ve as useClampOverflow,
104
- q as useControllableState,
105
- G as useCopyToClipboard,
106
- g as useCountUp,
107
- xe as useCountdown,
107
+ B as resolveTheme,
108
+ V as themeClassList,
109
+ Ke as useAiSparkle,
110
+ Ae as useCheckAnimation,
111
+ Oe as useClampOverflow,
112
+ N as useControllableState,
113
+ Z as useCopyToClipboard,
114
+ K as useCountUp,
115
+ Se as useCountdown,
108
116
  j as useDebouncedCallback,
109
- C as useDebouncedValue,
117
+ _ as useDebouncedValue,
110
118
  Q as useDirection,
111
119
  J as useDocumentDirection,
112
120
  de as useEdgeResize,
113
- Ce as useExitTransition,
114
- L as useFocusTrap,
121
+ _e as useExitTransition,
122
+ C as useFocusTrap,
115
123
  te as useIsomorphicLayoutEffect,
116
- Le as useListReflow,
117
- k as useLocale,
118
- y as useMediaQuery,
124
+ Ce as useListReflow,
125
+ M as useLocale,
126
+ I as useMediaQuery,
119
127
  oe as useOverflowCollapse,
120
128
  $ as usePersistentState,
121
- h as usePrefersReducedMotion,
122
- Oe as usePresenceTransition,
129
+ R as usePrefersReducedMotion,
130
+ be as usePresenceTransition,
123
131
  ae as usePriorityOverflow,
124
- ue as useScrollOverflow,
125
- R as useScrollToFirstError,
126
- _ as useSigningSession,
132
+ se as useScrollOverflow,
133
+ v as useScrollToFirstError,
134
+ y as useSigningSession,
127
135
  Y as useTheme,
128
136
  fe as useVisualViewportPin,
129
137
  ce as useWebOtp,
130
- F as useZoomDrilldown
138
+ w as useZoomDrilldown
131
139
  };
132
140
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/hooks/use-debounced-value.ts","../../src/hooks/use-focus-trap.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * Returns a value that lags `input` by `delayMs`. Each new `input`\n * resets the timer; the returned value updates once `input` has been\n * stable for `delayMs` ms.\n *\n * Companion to `useDebouncedCallback` — use this when you want the\n * debounced *value* (to drive a derived effect, query, or render),\n * and use the callback hook when you want the debounced *action*.\n *\n * @example\n * const [query, setQuery] = useState('');\n * const debouncedQuery = useDebouncedValue(query, 250);\n * useEffect(() => { void search(debouncedQuery); }, [debouncedQuery]);\n */\nexport function useDebouncedValue<T>(input: T, delayMs: number): T {\n const [value, setValue] = useState<T>(input);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (delayMs <= 0) {\n // Flush any pending timer so a stale queued value can't land\n // after the synchronous update below.\n if (timerRef.current !== null) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n setValue(input);\n return;\n }\n const timer = setTimeout(() => {\n setValue(input);\n timerRef.current = null;\n }, delayMs);\n timerRef.current = timer;\n return () => clearTimeout(timer);\n }, [input, delayMs]);\n\n return value;\n}\n","import { useEffect, useRef, type RefObject } from 'react';\n\n/* -------------------------------------------------------------------- */\n/* Focus trap */\n/* */\n/* Lightweight focus-trap hook for components that compose a Radix */\n/* primitive without the overlay primitive (Dialog, AlertDialog, Sheet) */\n/* — those handle focus trapping for free via `@radix-ui/react-dialog`. */\n/* */\n/* This hook is intentionally NOT a Radix `<FocusScope>` re-export — it */\n/* is a hook so it composes inside `forwardRef` components without */\n/* nesting another wrapper element. If you need the full Radix */\n/* contract (return-focus management, loop, asChild), use */\n/* `@radix-ui/react-focus-scope` directly. */\n/* -------------------------------------------------------------------- */\n\nexport interface UseFocusTrapOptions {\n /** When `false` the trap is inert. Defaults to `true`. */\n enabled?: boolean;\n /**\n * When `true`, focus initial autofocus into the first focusable\n * descendant on mount / enable. @default true\n */\n autoFocus?: boolean;\n /**\n * When `true`, restores focus to the previously-focused element on\n * unmount / disable. @default true\n */\n restoreFocus?: boolean;\n}\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n 'audio[controls]',\n 'video[controls]',\n].join(',');\n\nfunction getFocusable(container: HTMLElement): HTMLElement[] {\n return Array.from(\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((el) => {\n if (el.hidden) return false;\n // `inert` and `aria-hidden=\"true\"` block focus on the element AND\n // all its descendants — walk the chain to catch either ancestor.\n let node: HTMLElement | null = el;\n while (node) {\n if (node.hasAttribute('inert')) return false;\n if (node.getAttribute('aria-hidden') === 'true') return false;\n node = node.parentElement;\n }\n return true;\n });\n}\n\n/**\n * Constrain Tab navigation to descendants of `containerRef`. Wraps Tab\n * forward from the last focusable to the first, and Shift+Tab back from\n * the first to the last. Optionally autofocuses on enable and restores\n * focus on disable.\n *\n * Use this for inline modal patterns or focus zones that don't ship\n * with their own Radix overlay. Don't stack it inside Dialog / Sheet —\n * Radix already traps focus in those.\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * useFocusTrap(ref, { enabled: open });\n * return <div ref={ref}>…</div>;\n */\nexport function useFocusTrap<T extends HTMLElement>(\n containerRef: RefObject<T | null>,\n options: UseFocusTrapOptions = {},\n): void {\n const { enabled = true, autoFocus = true, restoreFocus = true } = options;\n const previouslyFocused = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (!enabled) return;\n const container = containerRef.current;\n if (!container) return;\n\n previouslyFocused.current =\n typeof document !== 'undefined' &&\n document.activeElement instanceof HTMLElement\n ? document.activeElement\n : null;\n\n if (autoFocus) {\n const focusable = getFocusable(container);\n // Container itself is the fallback focus target — needs `tabIndex`\n // to receive focus, but `-1` is fine.\n const target =\n focusable[0] ?? (container.tabIndex >= -1 ? container : null);\n target?.focus();\n }\n\n function onKeyDown(event: KeyboardEvent) {\n if (event.key !== 'Tab') return;\n const root = containerRef.current;\n if (!root) return;\n const focusable = getFocusable(root);\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = document.activeElement;\n\n if (event.shiftKey) {\n if (active === first || !root.contains(active)) {\n event.preventDefault();\n last.focus();\n }\n } else {\n if (active === last || !root.contains(active)) {\n event.preventDefault();\n first.focus();\n }\n }\n }\n\n container.addEventListener('keydown', onKeyDown);\n\n return () => {\n container.removeEventListener('keydown', onKeyDown);\n if (restoreFocus && previouslyFocused.current) {\n // rAF lets parent unmounts settle before refocus — a microtask\n // fires too early and can throw on a detached node.\n const target = previouslyFocused.current;\n requestAnimationFrame(() => {\n if (target.isConnected) target.focus();\n });\n }\n };\n }, [enabled, autoFocus, restoreFocus, containerRef]);\n}\n"],"names":["useDebouncedValue","input","delayMs","value","setValue","useState","timerRef","useRef","useEffect","timer","FOCUSABLE_SELECTOR","getFocusable","container","el","node","useFocusTrap","containerRef","options","enabled","autoFocus","restoreFocus","previouslyFocused","target","onKeyDown","event","root","focusable","first","last","active"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAgBO,SAASA,EAAqBC,GAAUC,GAAoB;AACjE,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAYJ,CAAK,GACrCK,IAAWC,EAA6C,IAAI;AAElE,SAAAC,EAAU,MAAM;AACd,QAAIN,KAAW,GAAG;AAGhB,MAAII,EAAS,YAAY,SACvB,aAAaA,EAAS,OAAO,GAC7BA,EAAS,UAAU,OAErBF,EAASH,CAAK;AACd;AAAA,IACF;AACA,UAAMQ,IAAQ,WAAW,MAAM;AAC7B,MAAAL,EAASH,CAAK,GACdK,EAAS,UAAU;AAAA,IACrB,GAAGJ,CAAO;AACV,WAAAI,EAAS,UAAUG,GACZ,MAAM,aAAaA,CAAK;AAAA,EACjC,GAAG,CAACR,GAAOC,CAAO,CAAC,GAEZC;AACT;ACTA,MAAMO,IAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AAEV,SAASC,EAAaC,GAAuC;AAC3D,SAAO,MAAM;AAAA,IACXA,EAAU,iBAA8BF,CAAkB;AAAA,EAAA,EAC1D,OAAO,CAACG,MAAO;AACf,QAAIA,EAAG,OAAQ,QAAO;AAGtB,QAAIC,IAA2BD;AAC/B,WAAOC,KAAM;AAEX,UADIA,EAAK,aAAa,OAAO,KACzBA,EAAK,aAAa,aAAa,MAAM,OAAQ,QAAO;AACxD,MAAAA,IAAOA,EAAK;AAAA,IACd;AACA,WAAO;AAAA,EACT,CAAC;AACH;AAiBO,SAASC,EACdC,GACAC,IAA+B,IACzB;AACN,QAAM,EAAE,SAAAC,IAAU,IAAM,WAAAC,IAAY,IAAM,cAAAC,IAAe,OAASH,GAC5DI,IAAoBd,EAA2B,IAAI;AAEzD,EAAAC,EAAU,MAAM;AACd,QAAI,CAACU,EAAS;AACd,UAAMN,IAAYI,EAAa;AAC/B,QAAI,CAACJ,EAAW;AAQhB,QANAS,EAAkB,UAChB,OAAO,WAAa,OACpB,SAAS,yBAAyB,cAC9B,SAAS,gBACT,MAEFF,GAAW;AAIb,YAAMG,IAHYX,EAAaC,CAAS,EAI5B,CAAC,MAAMA,EAAU,YAAY,KAAKA,IAAY;AAC1D,MAAAU,KAAA,QAAAA,EAAQ;AAAA,IACV;AAEA,aAASC,EAAUC,GAAsB;AACvC,UAAIA,EAAM,QAAQ,MAAO;AACzB,YAAMC,IAAOT,EAAa;AAC1B,UAAI,CAACS,EAAM;AACX,YAAMC,IAAYf,EAAac,CAAI;AACnC,UAAIC,EAAU,WAAW,GAAG;AAC1B,QAAAF,EAAM,eAAA;AACN;AAAA,MACF;AACA,YAAMG,IAAQD,EAAU,CAAC,GACnBE,IAAOF,EAAUA,EAAU,SAAS,CAAC,GACrCG,IAAS,SAAS;AAExB,MAAIL,EAAM,YACJK,MAAWF,KAAS,CAACF,EAAK,SAASI,CAAM,OAC3CL,EAAM,eAAA,GACNI,EAAK,MAAA,MAGHC,MAAWD,KAAQ,CAACH,EAAK,SAASI,CAAM,OAC1CL,EAAM,eAAA,GACNG,EAAM,MAAA;AAAA,IAGZ;AAEA,WAAAf,EAAU,iBAAiB,WAAWW,CAAS,GAExC,MAAM;AAEX,UADAX,EAAU,oBAAoB,WAAWW,CAAS,GAC9CH,KAAgBC,EAAkB,SAAS;AAG7C,cAAMC,IAASD,EAAkB;AACjC,8BAAsB,MAAM;AAC1B,UAAIC,EAAO,eAAaA,EAAO,MAAA;AAAA,QACjC,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,GAAG,CAACJ,GAASC,GAAWC,GAAcJ,CAAY,CAAC;AACrD;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/hooks/use-debounced-value.ts","../../src/hooks/use-focus-trap.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * Returns a value that lags `input` by `delayMs`. Each new `input`\n * resets the timer; the returned value updates once `input` has been\n * stable for `delayMs` ms.\n *\n * Companion to `useDebouncedCallback` — use this when you want the\n * debounced *value* (to drive a derived effect, query, or render),\n * and use the callback hook when you want the debounced *action*.\n *\n * @example\n * const [query, setQuery] = useState('');\n * const debouncedQuery = useDebouncedValue(query, 250);\n * useEffect(() => { void search(debouncedQuery); }, [debouncedQuery]);\n */\nexport function useDebouncedValue<T>(input: T, delayMs: number): T {\n const [value, setValue] = useState<T>(input);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (delayMs <= 0) {\n // Flush any pending timer so a stale queued value can't land\n // after the synchronous update below.\n if (timerRef.current !== null) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n setValue(input);\n return;\n }\n const timer = setTimeout(() => {\n setValue(input);\n timerRef.current = null;\n }, delayMs);\n timerRef.current = timer;\n return () => clearTimeout(timer);\n }, [input, delayMs]);\n\n return value;\n}\n","import { useEffect, useRef, type RefObject } from 'react';\n\n/* -------------------------------------------------------------------- */\n/* Focus trap */\n/* */\n/* Lightweight focus-trap hook for components that compose a Radix */\n/* primitive without the overlay primitive (Dialog, AlertDialog, Sheet) */\n/* — those handle focus trapping for free via `@radix-ui/react-dialog`. */\n/* */\n/* This hook is intentionally NOT a Radix `<FocusScope>` re-export — it */\n/* is a hook so it composes inside `forwardRef` components without */\n/* nesting another wrapper element. If you need the full Radix */\n/* contract (return-focus management, loop, asChild), use */\n/* `@radix-ui/react-focus-scope` directly. */\n/* -------------------------------------------------------------------- */\n\nexport interface UseFocusTrapOptions {\n /** When `false` the trap is inert. Defaults to `true`. */\n enabled?: boolean;\n /**\n * When `true`, focus initial autofocus into the first focusable\n * descendant on mount / enable. @default true\n */\n autoFocus?: boolean;\n /**\n * When `true`, restores focus to the previously-focused element on\n * unmount / disable. @default true\n */\n restoreFocus?: boolean;\n}\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled]):not([type=\"hidden\"])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable=\"true\"]',\n 'audio[controls]',\n 'video[controls]',\n].join(',');\n\nfunction getFocusable(container: HTMLElement): HTMLElement[] {\n return Array.from(\n container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((el) => {\n if (el.hidden) return false;\n // `inert` and `aria-hidden=\"true\"` block focus on the element AND\n // all its descendants — walk the chain to catch either ancestor.\n let node: HTMLElement | null = el;\n while (node) {\n if (node.hasAttribute('inert')) return false;\n if (node.getAttribute('aria-hidden') === 'true') return false;\n node = node.parentElement;\n }\n return true;\n });\n}\n\n/**\n * Constrain Tab navigation to descendants of `containerRef`. Wraps Tab\n * forward from the last focusable to the first, and Shift+Tab back from\n * the first to the last. Optionally autofocuses on enable and restores\n * focus on disable.\n *\n * Use this for inline modal patterns or focus zones that don't ship\n * with their own Radix overlay. Don't stack it inside Dialog / Sheet —\n * Radix already traps focus in those.\n *\n * @example\n * const ref = useRef<HTMLDivElement>(null);\n * useFocusTrap(ref, { enabled: open });\n * return <div ref={ref}>…</div>;\n */\nexport function useFocusTrap<T extends HTMLElement>(\n containerRef: RefObject<T | null>,\n options: UseFocusTrapOptions = {},\n): void {\n const { enabled = true, autoFocus = true, restoreFocus = true } = options;\n const previouslyFocused = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (!enabled) return;\n const container = containerRef.current;\n if (!container) return;\n\n previouslyFocused.current =\n typeof document !== 'undefined' &&\n document.activeElement instanceof HTMLElement\n ? document.activeElement\n : null;\n\n if (autoFocus) {\n const focusable = getFocusable(container);\n // Container itself is the fallback focus target — needs `tabIndex`\n // to receive focus, but `-1` is fine.\n const target =\n focusable[0] ?? (container.tabIndex >= -1 ? container : null);\n target?.focus();\n }\n\n function onKeyDown(event: KeyboardEvent) {\n if (event.key !== 'Tab') return;\n const root = containerRef.current;\n if (!root) return;\n const focusable = getFocusable(root);\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = document.activeElement;\n\n if (event.shiftKey) {\n if (active === first || !root.contains(active)) {\n event.preventDefault();\n last.focus();\n }\n } else {\n if (active === last || !root.contains(active)) {\n event.preventDefault();\n first.focus();\n }\n }\n }\n\n container.addEventListener('keydown', onKeyDown);\n\n return () => {\n container.removeEventListener('keydown', onKeyDown);\n if (restoreFocus && previouslyFocused.current) {\n // rAF lets parent unmounts settle before refocus — a microtask\n // fires too early and can throw on a detached node.\n const target = previouslyFocused.current;\n requestAnimationFrame(() => {\n if (target.isConnected) target.focus();\n });\n }\n };\n }, [enabled, autoFocus, restoreFocus, containerRef]);\n}\n"],"names":["useDebouncedValue","input","delayMs","value","setValue","useState","timerRef","useRef","useEffect","timer","FOCUSABLE_SELECTOR","getFocusable","container","el","node","useFocusTrap","containerRef","options","enabled","autoFocus","restoreFocus","previouslyFocused","target","onKeyDown","event","root","focusable","first","last","active"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAgBO,SAASA,EAAqBC,GAAUC,GAAoB;AACjE,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAYJ,CAAK,GACrCK,IAAWC,EAA6C,IAAI;AAElE,SAAAC,EAAU,MAAM;AACd,QAAIN,KAAW,GAAG;AAGhB,MAAII,EAAS,YAAY,SACvB,aAAaA,EAAS,OAAO,GAC7BA,EAAS,UAAU,OAErBF,EAASH,CAAK;AACd;AAAA,IACF;AACA,UAAMQ,IAAQ,WAAW,MAAM;AAC7B,MAAAL,EAASH,CAAK,GACdK,EAAS,UAAU;AAAA,IACrB,GAAGJ,CAAO;AACV,WAAAI,EAAS,UAAUG,GACZ,MAAM,aAAaA,CAAK;AAAA,EACjC,GAAG,CAACR,GAAOC,CAAO,CAAC,GAEZC;AACT;ACTA,MAAMO,IAAqB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AAEV,SAASC,EAAaC,GAAuC;AAC3D,SAAO,MAAM;AAAA,IACXA,EAAU,iBAA8BF,CAAkB;AAAA,EAAA,EAC1D,OAAO,CAACG,MAAO;AACf,QAAIA,EAAG,OAAQ,QAAO;AAGtB,QAAIC,IAA2BD;AAC/B,WAAOC,KAAM;AAEX,UADIA,EAAK,aAAa,OAAO,KACzBA,EAAK,aAAa,aAAa,MAAM,OAAQ,QAAO;AACxD,MAAAA,IAAOA,EAAK;AAAA,IACd;AACA,WAAO;AAAA,EACT,CAAC;AACH;AAiBO,SAASC,EACdC,GACAC,IAA+B,IACzB;AACN,QAAM,EAAE,SAAAC,IAAU,IAAM,WAAAC,IAAY,IAAM,cAAAC,IAAe,OAASH,GAC5DI,IAAoBd,EAA2B,IAAI;AAEzD,EAAAC,EAAU,MAAM;AACd,QAAI,CAACU,EAAS;AACd,UAAMN,IAAYI,EAAa;AAC/B,QAAI,CAACJ,EAAW;AAQhB,QANAS,EAAkB,UAChB,OAAO,WAAa,OACpB,SAAS,yBAAyB,cAC9B,SAAS,gBACT,MAEFF,GAAW;AAIb,YAAMG,IAHYX,EAAaC,CAAS,EAI5B,CAAC,MAAMA,EAAU,YAAY,KAAKA,IAAY;AAC1D,MAAAU,KAAA,QAAAA,EAAQ;AAAA,IACV;AAEA,aAASC,EAAUC,GAAsB;AACvC,UAAIA,EAAM,QAAQ,MAAO;AACzB,YAAMC,IAAOT,EAAa;AAC1B,UAAI,CAACS,EAAM;AACX,YAAMC,IAAYf,EAAac,CAAI;AACnC,UAAIC,EAAU,WAAW,GAAG;AAC1B,QAAAF,EAAM,eAAA;AACN;AAAA,MACF;AACA,YAAMG,IAAQD,EAAU,CAAC,GACnBE,IAAOF,EAAUA,EAAU,SAAS,CAAC,GACrCG,IAAS,SAAS;AAExB,MAAIL,EAAM,YACJK,MAAWF,KAAS,CAACF,EAAK,SAASI,CAAM,OAC3CL,EAAM,eAAA,GACNI,EAAK,MAAA,MAGHC,MAAWD,KAAQ,CAACH,EAAK,SAASI,CAAM,OAC1CL,EAAM,eAAA,GACNG,EAAM,MAAA;AAAA,IAGZ;AAEA,WAAAf,EAAU,iBAAiB,WAAWW,CAAS,GAExC,MAAM;AAEX,UADAX,EAAU,oBAAoB,WAAWW,CAAS,GAC9CH,KAAgBC,EAAkB,SAAS;AAG7C,cAAMC,IAASD,EAAkB;AACjC,8BAAsB,MAAM;AAC1B,UAAIC,EAAO,eAAaA,EAAO,MAAA;AAAA,QACjC,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,GAAG,CAACJ,GAASC,GAAWC,GAAcJ,CAAY,CAAC;AACrD;"}