@mieweb/ui 0.7.1-dev.9 → 0.7.2-dev.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 (188) hide show
  1. package/dist/ag-grid.cjs +5 -5
  2. package/dist/ag-grid.js +1 -1
  3. package/dist/{chunk-XCVBCY7L.cjs → chunk-26DPQUSB.cjs} +4 -4
  4. package/dist/{chunk-XCVBCY7L.cjs.map → chunk-26DPQUSB.cjs.map} +1 -1
  5. package/dist/{chunk-YTLTI5Q2.js → chunk-3D4ITDLO.js} +3 -3
  6. package/dist/{chunk-YTLTI5Q2.js.map → chunk-3D4ITDLO.js.map} +1 -1
  7. package/dist/{chunk-KZ7QKUJS.cjs → chunk-3IAA3KCE.cjs} +13 -4
  8. package/dist/chunk-3IAA3KCE.cjs.map +1 -0
  9. package/dist/chunk-3PXOIAF6.js +3 -0
  10. package/dist/{chunk-DHKYGVP7.js.map → chunk-3PXOIAF6.js.map} +1 -1
  11. package/dist/{chunk-7OIUA7PW.js → chunk-3SRBIXQX.js} +9 -9
  12. package/dist/{chunk-7OIUA7PW.js.map → chunk-3SRBIXQX.js.map} +1 -1
  13. package/dist/{chunk-7V6SUOBV.js → chunk-3YSIZ2CK.js} +13 -4
  14. package/dist/chunk-3YSIZ2CK.js.map +1 -0
  15. package/dist/{chunk-3OME4UHL.cjs → chunk-54OW6ZPL.cjs} +99 -3
  16. package/dist/chunk-54OW6ZPL.cjs.map +1 -0
  17. package/dist/{chunk-IVDIT3TJ.js → chunk-5BDCQBYW.js} +3 -3
  18. package/dist/{chunk-IVDIT3TJ.js.map → chunk-5BDCQBYW.js.map} +1 -1
  19. package/dist/{chunk-5PHGIWDN.cjs → chunk-6ECKH4DJ.cjs} +3 -3
  20. package/dist/{chunk-5PHGIWDN.cjs.map → chunk-6ECKH4DJ.cjs.map} +1 -1
  21. package/dist/{chunk-2GQ7VPCS.cjs → chunk-6J7UGYT5.cjs} +6 -6
  22. package/dist/{chunk-2GQ7VPCS.cjs.map → chunk-6J7UGYT5.cjs.map} +1 -1
  23. package/dist/{chunk-HIAUNNOW.cjs → chunk-AIJAFPGJ.cjs} +3 -3
  24. package/dist/{chunk-HIAUNNOW.cjs.map → chunk-AIJAFPGJ.cjs.map} +1 -1
  25. package/dist/{chunk-BS5NOKZD.js → chunk-AQ564XO7.js} +5 -5
  26. package/dist/chunk-AQ564XO7.js.map +1 -0
  27. package/dist/{chunk-JJNCQMR5.js → chunk-BMRQ4VME.js} +3 -3
  28. package/dist/{chunk-JJNCQMR5.js.map → chunk-BMRQ4VME.js.map} +1 -1
  29. package/dist/{chunk-REPZI2YO.js → chunk-BMSG4NBH.js} +3 -3
  30. package/dist/{chunk-REPZI2YO.js.map → chunk-BMSG4NBH.js.map} +1 -1
  31. package/dist/{chunk-QA6ZDHFP.js → chunk-BOOJDRJO.js} +35 -11
  32. package/dist/chunk-BOOJDRJO.js.map +1 -0
  33. package/dist/{chunk-34LGPMO4.js → chunk-DLBV42JD.js} +3 -3
  34. package/dist/{chunk-34LGPMO4.js.map → chunk-DLBV42JD.js.map} +1 -1
  35. package/dist/{chunk-2YDKLURF.js → chunk-DWIF6VXZ.js} +99 -3
  36. package/dist/chunk-DWIF6VXZ.js.map +1 -0
  37. package/dist/{chunk-KQGGKE36.js → chunk-EGWWTIWS.js} +118 -74
  38. package/dist/chunk-EGWWTIWS.js.map +1 -0
  39. package/dist/{chunk-IXWRD4AP.js → chunk-EKRT7K2K.js} +3 -3
  40. package/dist/{chunk-IXWRD4AP.js.map → chunk-EKRT7K2K.js.map} +1 -1
  41. package/dist/{chunk-MHD5HZ4X.js → chunk-FDV7EQWH.js} +3 -3
  42. package/dist/{chunk-MHD5HZ4X.js.map → chunk-FDV7EQWH.js.map} +1 -1
  43. package/dist/{chunk-STCRP652.cjs → chunk-FKLUSYFP.cjs} +4 -4
  44. package/dist/{chunk-STCRP652.cjs.map → chunk-FKLUSYFP.cjs.map} +1 -1
  45. package/dist/{chunk-DKICBJTM.js → chunk-HIDV32ZX.js} +4 -4
  46. package/dist/{chunk-DKICBJTM.js.map → chunk-HIDV32ZX.js.map} +1 -1
  47. package/dist/{chunk-XPNKDFRL.js → chunk-I3WGZPI6.js} +3 -3
  48. package/dist/{chunk-XPNKDFRL.js.map → chunk-I3WGZPI6.js.map} +1 -1
  49. package/dist/{chunk-62TFTZWT.cjs → chunk-IJYTASQQ.cjs} +5 -5
  50. package/dist/{chunk-62TFTZWT.cjs.map → chunk-IJYTASQQ.cjs.map} +1 -1
  51. package/dist/{chunk-SAJSA4TS.js → chunk-LMBXJZLG.js} +8 -4
  52. package/dist/chunk-LMBXJZLG.js.map +1 -0
  53. package/dist/{chunk-CPUDOVWH.cjs → chunk-MJWFNV3L.cjs} +12 -8
  54. package/dist/chunk-MJWFNV3L.cjs.map +1 -0
  55. package/dist/{chunk-ZDEYV373.cjs → chunk-MYFZYUPR.cjs} +35 -11
  56. package/dist/chunk-MYFZYUPR.cjs.map +1 -0
  57. package/dist/{chunk-QNUPTRW7.js → chunk-NGLI2MSM.js} +24 -14
  58. package/dist/chunk-NGLI2MSM.js.map +1 -0
  59. package/dist/{chunk-PGETZ2FP.cjs → chunk-OAHORW4N.cjs} +120 -76
  60. package/dist/chunk-OAHORW4N.cjs.map +1 -0
  61. package/dist/{chunk-G45PAVQI.js → chunk-P6L74SKG.js} +4 -4
  62. package/dist/{chunk-G45PAVQI.js.map → chunk-P6L74SKG.js.map} +1 -1
  63. package/dist/chunk-PAM5UUBL.cjs +740 -0
  64. package/dist/{chunk-UTYUT5YY.cjs.map → chunk-PAM5UUBL.cjs.map} +1 -1
  65. package/dist/{chunk-JY4U2QWO.cjs → chunk-PLMXN23Q.cjs} +5 -5
  66. package/dist/chunk-PLMXN23Q.cjs.map +1 -0
  67. package/dist/{chunk-PNJAFZDC.cjs → chunk-Q5VBO3I5.cjs} +30 -20
  68. package/dist/chunk-Q5VBO3I5.cjs.map +1 -0
  69. package/dist/{chunk-XD6GRTH2.cjs → chunk-QI2SB6U3.cjs} +7 -7
  70. package/dist/{chunk-XD6GRTH2.cjs.map → chunk-QI2SB6U3.cjs.map} +1 -1
  71. package/dist/{chunk-6XGESZ4S.js → chunk-QYSUYB3S.js} +12 -8
  72. package/dist/chunk-QYSUYB3S.js.map +1 -0
  73. package/dist/{chunk-Y5F2OASC.cjs → chunk-RBS3GHDZ.cjs} +6 -6
  74. package/dist/{chunk-Y5F2OASC.cjs.map → chunk-RBS3GHDZ.cjs.map} +1 -1
  75. package/dist/{chunk-NGPEXCC7.cjs → chunk-RS5VA6QU.cjs} +8 -4
  76. package/dist/chunk-RS5VA6QU.cjs.map +1 -0
  77. package/dist/{chunk-YXHX2DAK.cjs → chunk-RYQ3S3KO.cjs} +5 -5
  78. package/dist/{chunk-YXHX2DAK.cjs.map → chunk-RYQ3S3KO.cjs.map} +1 -1
  79. package/dist/{chunk-QKKYMNR2.js → chunk-RZJXCI53.js} +189 -202
  80. package/dist/chunk-RZJXCI53.js.map +1 -0
  81. package/dist/{chunk-ET5JGGVL.js → chunk-TNUL4LGG.js} +5 -5
  82. package/dist/{chunk-ET5JGGVL.js.map → chunk-TNUL4LGG.js.map} +1 -1
  83. package/dist/{chunk-C2NNNOSU.cjs → chunk-VVI32P7L.cjs} +4 -4
  84. package/dist/{chunk-C2NNNOSU.cjs.map → chunk-VVI32P7L.cjs.map} +1 -1
  85. package/dist/{chunk-X732DPW4.cjs → chunk-VWCMOWGH.cjs} +77 -77
  86. package/dist/{chunk-X732DPW4.cjs.map → chunk-VWCMOWGH.cjs.map} +1 -1
  87. package/dist/{chunk-HEV52I7A.cjs → chunk-XS35KPBZ.cjs} +190 -202
  88. package/dist/chunk-XS35KPBZ.cjs.map +1 -0
  89. package/dist/{chunk-EFEKAPS2.cjs → chunk-YVL3XATO.cjs} +3 -3
  90. package/dist/{chunk-EFEKAPS2.cjs.map → chunk-YVL3XATO.cjs.map} +1 -1
  91. package/dist/{chunk-EJPV3QY3.js → chunk-YXCE2HSK.js} +3 -3
  92. package/dist/{chunk-EJPV3QY3.js.map → chunk-YXCE2HSK.js.map} +1 -1
  93. package/dist/{chunk-OJEXXH5D.cjs → chunk-ZBI52NP2.cjs} +4 -4
  94. package/dist/{chunk-OJEXXH5D.cjs.map → chunk-ZBI52NP2.cjs.map} +1 -1
  95. package/dist/components/Autocomplete/index.cjs +4 -4
  96. package/dist/components/Autocomplete/index.js +3 -3
  97. package/dist/components/Badge/index.cjs +3 -3
  98. package/dist/components/Badge/index.js +1 -1
  99. package/dist/components/Card/index.cjs +15 -15
  100. package/dist/components/Card/index.d.cts +8 -3
  101. package/dist/components/Card/index.d.ts +8 -3
  102. package/dist/components/Card/index.js +1 -1
  103. package/dist/components/CountryCodeDropdown/index.cjs +5 -5
  104. package/dist/components/CountryCodeDropdown/index.js +2 -2
  105. package/dist/components/DateInput/index.cjs +4 -4
  106. package/dist/components/DateInput/index.d.cts +3 -1
  107. package/dist/components/DateInput/index.d.ts +3 -1
  108. package/dist/components/DateInput/index.js +3 -3
  109. package/dist/components/Dropdown/index.cjs +9 -9
  110. package/dist/components/Dropdown/index.d.cts +1 -1
  111. package/dist/components/Dropdown/index.d.ts +1 -1
  112. package/dist/components/Dropdown/index.js +3 -3
  113. package/dist/components/Input/index.cjs +3 -3
  114. package/dist/components/Input/index.js +1 -1
  115. package/dist/components/Label/index.cjs +3 -3
  116. package/dist/components/Label/index.js +1 -1
  117. package/dist/components/MediaEditor/index.cjs +9 -9
  118. package/dist/components/MediaEditor/index.js +4 -4
  119. package/dist/components/PhoneInput/index.cjs +4 -4
  120. package/dist/components/PhoneInput/index.js +2 -2
  121. package/dist/components/RichTextEditor/index.cjs +7 -7
  122. package/dist/components/RichTextEditor/index.js +4 -4
  123. package/dist/components/Select/index.cjs +4 -4
  124. package/dist/components/Select/index.js +2 -2
  125. package/dist/components/Sheet/index.cjs +10 -10
  126. package/dist/components/Sheet/index.d.cts +1 -1
  127. package/dist/components/Sheet/index.d.ts +1 -1
  128. package/dist/components/Sheet/index.js +1 -1
  129. package/dist/components/SuperChat/index.cjs +17 -17
  130. package/dist/components/SuperChat/index.d.cts +4 -4
  131. package/dist/components/SuperChat/index.d.ts +4 -4
  132. package/dist/components/SuperChat/index.js +6 -6
  133. package/dist/components/SuperChat/plugins/index.cjs +4 -4
  134. package/dist/components/SuperChat/plugins/index.d.cts +3 -3
  135. package/dist/components/SuperChat/plugins/index.d.ts +3 -3
  136. package/dist/components/SuperChat/plugins/index.js +3 -3
  137. package/dist/components/Switch/index.cjs +4 -4
  138. package/dist/components/Switch/index.js +1 -1
  139. package/dist/components/Table/index.cjs +9 -9
  140. package/dist/components/Table/index.js +1 -1
  141. package/dist/components/Text/index.cjs +4 -4
  142. package/dist/components/Text/index.d.cts +1 -1
  143. package/dist/components/Text/index.d.ts +1 -1
  144. package/dist/components/Text/index.js +1 -1
  145. package/dist/datavis.cjs +2 -2
  146. package/dist/datavis.js +1 -1
  147. package/dist/esheet.cjs +12 -12
  148. package/dist/esheet.js +9 -9
  149. package/dist/hooks/index.cjs +2 -2
  150. package/dist/hooks/index.d.cts +1 -1
  151. package/dist/hooks/index.d.ts +1 -1
  152. package/dist/hooks/index.js +1 -1
  153. package/dist/index.cjs +2294 -776
  154. package/dist/index.cjs.map +1 -1
  155. package/dist/index.d.cts +104 -17
  156. package/dist/index.d.ts +104 -17
  157. package/dist/index.js +860 -67
  158. package/dist/index.js.map +1 -1
  159. package/dist/styles.css +1 -1
  160. package/dist/tailwind-preset.cjs +4 -4
  161. package/dist/tailwind-preset.js +1 -1
  162. package/dist/{types-BYnLjEFg.d.cts → types-B2RLmdVd.d.cts} +3 -1
  163. package/dist/{types-BYnLjEFg.d.ts → types-B2RLmdVd.d.ts} +3 -1
  164. package/dist/{types-CyCwYBlr.d.ts → types-BoTeTPdH.d.ts} +1 -1
  165. package/dist/{types-CBh8Zlje.d.cts → types-DyIB9HYT.d.cts} +1 -1
  166. package/dist/{useAnchoredPosition-nXdSFKHf.d.ts → useAnchoredPosition-C7PNglzD.d.cts} +6 -2
  167. package/dist/{useAnchoredPosition-nXdSFKHf.d.cts → useAnchoredPosition-C7PNglzD.d.ts} +6 -2
  168. package/package.json +6 -6
  169. package/dist/chunk-2YDKLURF.js.map +0 -1
  170. package/dist/chunk-3OME4UHL.cjs.map +0 -1
  171. package/dist/chunk-6XGESZ4S.js.map +0 -1
  172. package/dist/chunk-7V6SUOBV.js.map +0 -1
  173. package/dist/chunk-BS5NOKZD.js.map +0 -1
  174. package/dist/chunk-CPUDOVWH.cjs.map +0 -1
  175. package/dist/chunk-DHKYGVP7.js +0 -3
  176. package/dist/chunk-HEV52I7A.cjs.map +0 -1
  177. package/dist/chunk-JY4U2QWO.cjs.map +0 -1
  178. package/dist/chunk-KQGGKE36.js.map +0 -1
  179. package/dist/chunk-KZ7QKUJS.cjs.map +0 -1
  180. package/dist/chunk-NGPEXCC7.cjs.map +0 -1
  181. package/dist/chunk-PGETZ2FP.cjs.map +0 -1
  182. package/dist/chunk-PNJAFZDC.cjs.map +0 -1
  183. package/dist/chunk-QA6ZDHFP.js.map +0 -1
  184. package/dist/chunk-QKKYMNR2.js.map +0 -1
  185. package/dist/chunk-QNUPTRW7.js.map +0 -1
  186. package/dist/chunk-SAJSA4TS.js.map +0 -1
  187. package/dist/chunk-UTYUT5YY.cjs +0 -240
  188. package/dist/chunk-ZDEYV373.cjs.map +0 -1
package/dist/index.js CHANGED
@@ -11,34 +11,34 @@ export { bluehiveBrand } from './chunk-3T7QGLNB.js';
11
11
  export { ccmeBrand } from './chunk-SCQRJPSV.js';
12
12
  export { ozwellBrand } from './chunk-5YUBQIC7.js';
13
13
  import { getModelBytes } from './chunk-6I7IDZ4A.js';
14
- import { Switch, switchThumbVariants, switchTrackVariants } from './chunk-BS5NOKZD.js';
15
- export { Switch, switchThumbVariants, switchTrackVariants } from './chunk-BS5NOKZD.js';
16
- import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell } from './chunk-ET5JGGVL.js';
17
- export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from './chunk-ET5JGGVL.js';
14
+ import { Switch, switchThumbVariants, switchTrackVariants } from './chunk-AQ564XO7.js';
15
+ export { Switch, switchThumbVariants, switchTrackVariants } from './chunk-AQ564XO7.js';
16
+ import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell } from './chunk-TNUL4LGG.js';
17
+ export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from './chunk-TNUL4LGG.js';
18
18
  import { Tabs, TabsList, TabsTrigger, TabsContent } from './chunk-DVOQ3JNO.js';
19
19
  export { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants, tabsTriggerVariants } from './chunk-DVOQ3JNO.js';
20
- import { Text } from './chunk-7V6SUOBV.js';
21
- export { SmallMuted, Text, textVariants } from './chunk-7V6SUOBV.js';
20
+ import { Text } from './chunk-3YSIZ2CK.js';
21
+ export { SmallMuted, Text, textVariants } from './chunk-3YSIZ2CK.js';
22
22
  export { ThemeProvider, ThemeProviderContext, ThemeToggle, themeToggleIconVariants, themeToggleVariants, useThemeContext } from './chunk-SH6B4MG5.js';
23
23
  export { Toggle, toggleVariants } from './chunk-PTZB2GKL.js';
24
- export { Sheet, SheetBody, SheetClose, SheetDescription, SheetFooter, SheetHeader, SheetTitle, sheetContentVariants, sheetOverlayVariants } from './chunk-SAJSA4TS.js';
24
+ export { Sheet, SheetBody, SheetClose, SheetDescription, SheetFooter, SheetHeader, SheetTitle, sheetContentVariants, sheetOverlayVariants } from './chunk-LMBXJZLG.js';
25
25
  import { Skeleton } from './chunk-ZIUADGAR.js';
26
26
  export { Skeleton, SkeletonCard, SkeletonTable, SkeletonText, skeletonVariants } from './chunk-ZIUADGAR.js';
27
27
  import { Spinner, SpinnerWithLabel } from './chunk-UA7E7PDS.js';
28
28
  export { FullPageSpinner, Spinner, SpinnerWithLabel, spinnerVariants } from './chunk-UA7E7PDS.js';
29
- import { SparklesIcon, RefreshIcon, CloseIcon, AIMessageDisplay } from './chunk-QKKYMNR2.js';
30
- export { AILogoIcon, AIMessageDisplay, AITypingIndicator, ChatBubble, ChevronIcon, CloseIcon, MCPToolCallDisplay, MessageAvatar, RefreshIcon, ResourceLink, SendIcon, SparklesIcon, SpinnerIcon, ToolStatusIcon, getToolIcon } from './chunk-QKKYMNR2.js';
31
- import { EmptyState } from './chunk-MHD5HZ4X.js';
32
- export { AttachmentPreview, ConversationHeader, ConversationListItem, ConversationListSkeleton, DateSeparator, EmptyState, LightboxModal, LoadMoreButton, MessageBubble, MessageList, MessageStatusIcon, MessageThread, MessagingSplitView, ReadReceiptIndicator, SkeletonMessage, TypingIndicator, bubbleVariants, formatDateLabel, formatFileSize, formatLastSeen, getConversationSubtitle, getConversationTitle, groupMessagesByDate, headerVariants, isSameSenderGroup, useMessageScroll, useMessages, useReadReceipts, useTypingIndicator } from './chunk-MHD5HZ4X.js';
33
- import { MessageComposer } from './chunk-IXWRD4AP.js';
34
- export { AttachmentPicker, AttachmentPreviewItem, CameraButton, CharacterCounter, DragDropZone, MessageComposer, SendButton, generateAttachmentId, getFileType, sendButtonVariants, validateFile } from './chunk-IXWRD4AP.js';
35
- export { PhoneInput, PhoneInputGroup } from './chunk-YTLTI5Q2.js';
29
+ import { SparklesIcon, RefreshIcon, CloseIcon, AIMessageDisplay } from './chunk-RZJXCI53.js';
30
+ export { AILogoIcon, AIMessageDisplay, AITypingIndicator, ChatBubble, ChevronIcon, CloseIcon, CollapsiblePill, MCPToolCallDisplay, MessageAvatar, RefreshIcon, ResourceLink, SendIcon, SparklesIcon, SpinnerIcon, ToolStatusIcon, getToolIcon } from './chunk-RZJXCI53.js';
31
+ import { EmptyState } from './chunk-FDV7EQWH.js';
32
+ export { AttachmentPreview, ConversationHeader, ConversationListItem, ConversationListSkeleton, DateSeparator, EmptyState, LightboxModal, LoadMoreButton, MessageBubble, MessageList, MessageStatusIcon, MessageThread, MessagingSplitView, ReadReceiptIndicator, SkeletonMessage, TypingIndicator, bubbleVariants, formatDateLabel, formatFileSize, formatLastSeen, getConversationSubtitle, getConversationTitle, groupMessagesByDate, headerVariants, isSameSenderGroup, useMessageScroll, useMessages, useReadReceipts, useTypingIndicator } from './chunk-FDV7EQWH.js';
33
+ import { MessageComposer } from './chunk-EKRT7K2K.js';
34
+ export { AttachmentPicker, AttachmentPreviewItem, CameraButton, CharacterCounter, DragDropZone, MessageComposer, SendButton, generateAttachmentId, getFileType, sendButtonVariants, validateFile } from './chunk-EKRT7K2K.js';
35
+ export { PhoneInput, PhoneInputGroup } from './chunk-3D4ITDLO.js';
36
36
  import { Progress } from './chunk-CEQJGUAS.js';
37
37
  export { CircularProgress, Progress, circularProgressVariants, progressBarFillVariants, progressBarTrackVariants } from './chunk-CEQJGUAS.js';
38
38
  export { QuickAction, QuickActionGroup, QuickActionIcons, quickActionIconVariants, quickActionVariants } from './chunk-5U6GETAW.js';
39
39
  import { RecordButton } from './chunk-VNWJTCBQ.js';
40
40
  export { RecordButton, formatDuration, recordButtonVariants } from './chunk-VNWJTCBQ.js';
41
- export { RichTextEditor, convertAngleBracketsToMustache, processDictation } from './chunk-IVDIT3TJ.js';
41
+ export { RichTextEditor, convertAngleBracketsToMustache, processDictation } from './chunk-5BDCQBYW.js';
42
42
  export { Separator, separatorVariants } from './chunk-OQWZYKJM.js';
43
43
  export { DateButton, DatePicker, RadioOption, SchedulePicker, TimeButton, TimePicker, dateButtonVariants, radioOptionVariants, timeButtonVariants } from './chunk-23AYDOCH.js';
44
44
  export { ScrollArea, scrollAreaVariants } from './chunk-HS25RPDW.js';
@@ -49,7 +49,7 @@ export { HtmlPreviewBlock } from './chunk-MWPPOX6F.js';
49
49
  export { MermaidBlock } from './chunk-NU6QKULE.js';
50
50
  export { SurveyBlock } from './chunk-VE6OUO7X.js';
51
51
  export { FenceBlock } from './chunk-RZFSJD67.js';
52
- export { FillerWordsModal, MediaEditor, SilenceSettingsModal, SpeedMarkerMenu, WordEditorModal } from './chunk-QNUPTRW7.js';
52
+ export { FillerWordsModal, MediaEditor, SilenceSettingsModal, SpeedMarkerMenu, WordEditorModal } from './chunk-NGLI2MSM.js';
53
53
  export { Slider, sliderRangeVariants, sliderThumbVariants, sliderTrackVariants } from './chunk-OTQ72WX3.js';
54
54
  import './chunk-RISZWWEQ.js';
55
55
  export { MediaPlayer, inferMediaKind, mediaPlayerVariants } from './chunk-PS5INHGC.js';
@@ -59,47 +59,48 @@ import { Checkbox } from './chunk-KFLDXJEE.js';
59
59
  export { Checkbox, CheckboxGroup, checkboxVariants } from './chunk-KFLDXJEE.js';
60
60
  export { CollabStatus, defaultCollabStatusLabels, useYjsCollabStatus } from './chunk-SVSHA7XV.js';
61
61
  export { Collapsible, CollapsibleContent, CollapsibleTrigger } from './chunk-BJKAVWED.js';
62
- export { CountryCodeDropdown, formatE164, validatePhoneNumber } from './chunk-JJNCQMR5.js';
63
- import { Dropdown, DropdownItem, DropdownSeparator, DropdownHeader } from './chunk-DKICBJTM.js';
64
- export { Dropdown, DropdownContent, DropdownHeader, DropdownItem, DropdownLabel, DropdownSeparator } from './chunk-DKICBJTM.js';
62
+ export { CountryCodeDropdown, formatE164, validatePhoneNumber } from './chunk-BMRQ4VME.js';
63
+ import { Dropdown, DropdownItem, DropdownSeparator, DropdownHeader } from './chunk-HIDV32ZX.js';
64
+ export { Dropdown, DropdownContent, DropdownHeader, DropdownItem, DropdownLabel, DropdownSeparator } from './chunk-HIDV32ZX.js';
65
65
  import { Alert, AlertTitle, AlertDescription } from './chunk-6EWJGRC3.js';
66
66
  export { Alert, AlertDescription, AlertTitle, alertVariants } from './chunk-6EWJGRC3.js';
67
67
  import { AlertDialog } from './chunk-H3HF36ZL.js';
68
68
  export { AlertDialog } from './chunk-H3HF36ZL.js';
69
69
  export { AudioPlayer, ProgressBar, audioPlayerVariants, formatTime as formatAudioTime, playButtonVariants } from './chunk-XO3WLK65.js';
70
70
  export { AudioRecorder, audioRecorderVariants, controlButtonVariants, formatTime, waveformContainerVariants } from './chunk-2DW4PUJD.js';
71
- export { Autocomplete } from './chunk-G45PAVQI.js';
71
+ export { Autocomplete } from './chunk-P6L74SKG.js';
72
72
  import { Avatar } from './chunk-DCBMTFLE.js';
73
73
  export { Avatar, AvatarGroup, avatarVariants, getInitials } from './chunk-DCBMTFLE.js';
74
74
  import './chunk-IQ4KQJAO.js';
75
75
  export { Breadcrumb, BreadcrumbSlash } from './chunk-5Y5FSR4N.js';
76
76
  import { evaluateDue, completedKeys, normalizeOrders } from './chunk-Y5KEFV5O.js';
77
77
  export { buildChartOrderRows, buildEncounterOrderRows, dueForOrder, evaluateDue, evaluateProgram, isApplicable } from './chunk-Y5KEFV5O.js';
78
- import { useCodeLookupConfig, RowActionToolbar, RowIconButton, toolbarKeyNav, parseSig, labelToMedicationFields, MedicationEditor } from './chunk-7OIUA7PW.js';
79
- export { ALLERGY_TYPE_LABELS, AllergyList, AllergyManager, CodeLookupProvider, MEDICATION_STATUS_LABELS, MedicationEditor, MedicationList, MedicationReconciliation, RowActionToolbar, RowIconButton, labelToMedicationFields, lookupToMedicationFields, parseMedicationLabel, parseSig, toolbarKeyNav, useCodeLookupConfig } from './chunk-7OIUA7PW.js';
78
+ import { useCodeLookupConfig, RowActionToolbar, RowIconButton, toolbarKeyNav, parseSig, labelToMedicationFields, MedicationEditor } from './chunk-3SRBIXQX.js';
79
+ export { ALLERGY_TYPE_LABELS, AllergyList, AllergyManager, CodeLookupProvider, MEDICATION_STATUS_LABELS, MedicationEditor, MedicationList, MedicationReconciliation, RowActionToolbar, RowIconButton, labelToMedicationFields, lookupToMedicationFields, parseMedicationLabel, parseSig, toolbarKeyNav, useCodeLookupConfig } from './chunk-3SRBIXQX.js';
80
80
  import { Textarea } from './chunk-AFGADE3B.js';
81
81
  export { Textarea, textareaVariants } from './chunk-AFGADE3B.js';
82
82
  import { Tooltip } from './chunk-FJ7YPVKV.js';
83
83
  export { Tooltip } from './chunk-FJ7YPVKV.js';
84
84
  import { RadioGroup, Radio } from './chunk-QUUBTNMH.js';
85
85
  export { Radio, RadioGroup, radioVariants } from './chunk-QUUBTNMH.js';
86
- import { Label } from './chunk-XPNKDFRL.js';
87
- export { Label, labelVariants } from './chunk-XPNKDFRL.js';
88
- import { Select } from './chunk-34LGPMO4.js';
89
- export { Select, selectTriggerVariants } from './chunk-34LGPMO4.js';
90
- import { Card, CardHeader, CardContent, CardTitle } from './chunk-6XGESZ4S.js';
91
- export { Card, CardActions, CardBadge, CardCollapsible, CardContent, CardDescription, CardDivider, CardFooter, CardHeader, CardMedia, CardStat, CardTitle, cardAccentVariants, cardVariants } from './chunk-6XGESZ4S.js';
92
- import { DateInput } from './chunk-KQGGKE36.js';
93
- export { DateInput } from './chunk-KQGGKE36.js';
86
+ import { Label } from './chunk-I3WGZPI6.js';
87
+ export { Label, labelVariants } from './chunk-I3WGZPI6.js';
88
+ import { Select } from './chunk-DLBV42JD.js';
89
+ export { Select, selectTriggerVariants } from './chunk-DLBV42JD.js';
90
+ import { Card, CardHeader, CardContent, CardTitle } from './chunk-QYSUYB3S.js';
91
+ export { Card, CardActions, CardBadge, CardCollapsible, CardContent, CardDescription, CardDivider, CardFooter, CardHeader, CardMedia, CardStat, CardTitle, cardAccentVariants, cardVariants } from './chunk-QYSUYB3S.js';
92
+ import { DateInput } from './chunk-EGWWTIWS.js';
93
+ export { DateInput } from './chunk-EGWWTIWS.js';
94
94
  import { Modal, ModalHeader, ModalTitle, ModalClose, ModalBody, ModalFooter } from './chunk-XMCIXHGH.js';
95
95
  export { Modal, ModalBody, ModalClose, ModalFooter, ModalHeader, ModalTitle, modalContentVariants, modalOverlayVariants } from './chunk-XMCIXHGH.js';
96
- import { Input, inputVariants } from './chunk-EJPV3QY3.js';
97
- export { Input, inputVariants } from './chunk-EJPV3QY3.js';
98
- import { Plus, GripVertical, RefreshCw, Pencil, AlertCircle, Clock, FileText, ClipboardList, ArrowLeft, Stethoscope, Users, Mail, Phone, ClipboardCheck, Eye, Info, Link, ChevronUp, ChevronDown, History, CheckCircle, StickyNote, ExternalLink, MoreVertical, Trash2, Send, Scan, TestTube2, Pill, Share, User, Download, ChevronRight, Calendar, Printer, ClipboardPlus, FilePlus, FileCheck, Wheat, Bell, FileHeart, HeartPulse, Paperclip, HelpCircle, MoreHorizontal, AlertTriangle, Upload as Upload$1, Camera, ScanLine, Image, X as X$1, Check as Check$1 } from './chunk-DHKYGVP7.js';
96
+ import { Input, inputVariants } from './chunk-YXCE2HSK.js';
97
+ export { Input, inputVariants } from './chunk-YXCE2HSK.js';
98
+ import { Plus, GripVertical, RefreshCw, Pencil, AlertCircle, Clock, FileText, ClipboardList, ArrowLeft, Stethoscope, Users, Mail, Phone, ClipboardCheck, Eye, Info, Link, ChevronUp, ChevronDown, History, CheckCircle, StickyNote, ExternalLink, MoreVertical, Trash2, Send, Scan, TestTube2, Pill, Share, User, Download, ChevronRight, Calendar, Printer, ClipboardPlus, FilePlus, FileCheck, Wheat, Bell, FileHeart, HeartPulse, Paperclip, HelpCircle, MoreHorizontal, AlertTriangle, Upload as Upload$1, Camera, ScanLine, Image, X as X$1, Check as Check$1 } from './chunk-3PXOIAF6.js';
99
+ export { Accessibility as AccessibilityIcon, Activity as ActivityIcon, AlertCircle as AlertCircleIcon, AlertTriangle as AlertTriangleIcon, Wheat as AllergyIcon, WheatOff as AllergyOffIcon, Ambulance as AmbulanceIcon, ArrowLeft as ArrowLeftIcon, ArrowRight as ArrowRightIcon, ArrowUpDown as ArrowUpDownIcon, AtSign as AtSignIcon, Baby as BabyIcon, BadgeAlert as BadgeAlertIcon, BadgeCheck as BadgeCheckIcon, BadgeMinus as BadgeMinusIcon, BadgePlus as BadgePlusIcon, BadgeX as BadgeXIcon, Ban as BanIcon, Bandage as BandageIcon, BedDouble as BedDoubleIcon, Bed as BedIcon, BedSingle as BedSingleIcon, Bell as BellIcon, BellOff as BellOffIcon, Biohazard as BiohazardIcon, Bone as BoneIcon, BookOpenCheck as BookOpenCheckIcon, BookOpen as BookOpenIcon, Bookmark as BookmarkIcon, Brain as BrainIcon, Briefcase as BriefcaseIcon, BriefcaseMedical as BriefcaseMedicalIcon, Building as BuildingIcon, CalendarCheck as CalendarCheckIcon, Calendar as CalendarIcon, Camera as CameraIcon, Cannabis as CannabisIcon, BarChart3 as ChartIcon, CheckCircle as CheckCircleIcon, Check as CheckIcon, ChevronDown as ChevronDownIcon, ChevronLeft as ChevronLeftIcon, ChevronRight as ChevronRightIcon, ChevronUp as ChevronUpIcon, Cigarette as CigaretteIcon, CigaretteOff as CigaretteOffIcon, CircleDotDashed as CircleDotDashedIcon, CircleDot as CircleDotIcon, CircleUser as CircleUserIcon, ClipboardCheck as ClipboardCheckIcon, Clipboard as ClipboardIcon, ClipboardList as ClipboardListIcon, ClipboardPlus as ClipboardPlusIcon, Clock as ClockIcon, Cog as CogIcon, Columns as ColumnsIcon, Copy as CopyIcon, CreditCard as CreditCardIcon, Cross as CrossIcon, Dna as DnaIcon, DollarSign as DollarSignIcon, Download as DownloadIcon, Droplet as DropletIcon, Droplets as DropletsIcon, Ear as EarIcon, ExternalLink as ExternalLinkIcon, Eye as EyeIcon, EyeOff as EyeOffIcon, FileCheck2 as FileCheck2Icon, FileCheck as FileCheckIcon, FileHeart as FileHeartIcon, File as FileIcon, FilePlus2 as FilePlus2Icon, FilePlus as FilePlusIcon, FileText as FileTextIcon, Filter as FilterIcon, Fingerprint as FingerprintIcon, Flag as FlagIcon, FlaskConical as FlaskIcon, FlaskRound as FlaskRoundIcon, Folder as FolderIcon, FolderOpen as FolderOpenIcon, Footprints as FootprintsIcon, Glasses as GlassesIcon, Globe as GlobeIcon, LayoutGrid as GridIcon, GripVertical as GripVerticalIcon, Hand as HandIcon, HandMetal as HandMetalIcon, Hash as HashIcon, Heart as HeartIcon, HeartOff as HeartOffIcon, HeartPulse as HeartPulseIcon, HelpCircle as HelpCircleIcon, History as HistoryIcon, Home as HomeIcon, Hospital as HospitalIcon, Image as ImageIcon, Info as InfoIcon, Key as KeyIcon, Link as LinkIcon, List as ListIcon, Loader2 as LoaderIcon, Lock as LockIcon, LogIn as LogInIcon, LogOut as LogOutIcon, Mail as MailIcon, MapPin as MapPinIcon, Maximize as MaximizeIcon, Menu as MenuIcon, MessageSquare as MessageIcon, Microscope as MicroscopeIcon, Minimize as MinimizeIcon, Minus as MinusIcon, Monitor as MonitorIcon, Moon as MoonIcon, MoreHorizontal as MoreHorizontalIcon, MoreVertical as MoreVerticalIcon, NotebookPen as NotebookPenIcon, Palette as PaletteIcon, Paperclip as PaperclipIcon, CircleUserRound as PatientIcon, Pencil as PencilIcon, UserRound as PersonIcon, Phone as PhoneIcon, PieChart as PieChartIcon, Pill as PillIcon, Plus as PlusIcon, Printer as PrinterIcon, Radiation as RadiationIcon, Ruler as RulerIcon, Save as SaveIcon, Scale as ScaleIcon, Scaling as ScalingIcon, ScanEye as ScanEyeIcon, Scan as ScanIcon, ScanLine as ScanLineIcon, Search as SearchIcon, Settings as SettingsIcon, Share as ShareIcon, ShieldCheck as ShieldCheckIcon, Shield as ShieldIcon, ShieldPlus as ShieldPlusIcon, Sliders as SlidersIcon, Sparkle as SparkleIcon, Star as StarIcon, Stethoscope as StethoscopeIcon, StickyNote as StickyNoteIcon, Sun as SunIcon, Syringe as SyringeIcon, Table as TableIcon, Tablets as TabletsIcon, Tag as TagIcon, TestTube2 as TestTubeIcon, TestTubes as TestTubesIcon, Thermometer as ThermometerIcon, ThermometerSun as ThermometerSunIcon, ThumbsDown as ThumbsDownIcon, ThumbsUp as ThumbsUpIcon, Timer as TimerIcon, Trash2 as TrashIcon, TrendingDown as TrendingDownIcon, TrendingUp as TrendingUpIcon, Truck as TruckIcon, Unlock as UnlockIcon, Upload as UploadIcon, UserCheck as UserCheckIcon, User as UserIcon, UserMinus as UserMinusIcon, UserPlus as UserPlusIcon, UserRoundCheck as UserRoundCheckIcon, UserRoundMinus as UserRoundMinusIcon, UserRoundPlus as UserRoundPlusIcon, UserRoundX as UserRoundXIcon, Users as UsersIcon, Weight as WeightIcon, Wrench as WrenchIcon, XCircle as XCircleIcon, X2 as XIcon, Zap as ZapIcon } from './chunk-3PXOIAF6.js';
99
100
  import { Button, buttonVariants } from './chunk-WRYZ2752.js';
100
101
  export { Button, buttonVariants } from './chunk-WRYZ2752.js';
101
- import { Badge } from './chunk-REPZI2YO.js';
102
- export { Badge, badgeVariants } from './chunk-REPZI2YO.js';
102
+ import { Badge } from './chunk-BMSG4NBH.js';
103
+ export { Badge, badgeVariants } from './chunk-BMSG4NBH.js';
103
104
  import { useCommandK, useIsMobile, useMediaQuery, useScrollSpy } from './chunk-GTHNWP4P.js';
104
105
  export { RTL_LOCALES, isRtlLocale, useCommandK, useDirection, useIsDesktop, useIsLargeDesktop, useIsMobile, useIsMobileOrTablet, useIsSmallTablet, useIsTablet, useKeyboardShortcut, useMediaQuery, useScrollSpy } from './chunk-GTHNWP4P.js';
105
106
  export { useTheme } from './chunk-KJZNEVYM.js';
@@ -115,8 +116,8 @@ import { useEscapeKey } from './chunk-T4ME7QCT.js';
115
116
  export { useEscapeKey } from './chunk-T4ME7QCT.js';
116
117
  import { useClickOutside } from './chunk-62ZOA6PX.js';
117
118
  export { useClickOutside } from './chunk-62ZOA6PX.js';
118
- import { useAnchoredPosition } from './chunk-QA6ZDHFP.js';
119
- export { useAnchoredPosition } from './chunk-QA6ZDHFP.js';
119
+ import { useAnchoredPosition } from './chunk-BOOJDRJO.js';
120
+ export { useAnchoredPosition } from './chunk-BOOJDRJO.js';
120
121
  import './chunk-7XUN3OQT.js';
121
122
  export { formatPhoneNumber, isPhoneNumberEmpty, isValidPhoneNumber, unformatPhoneNumber } from './chunk-ZVPJ2MH6.js';
122
123
  export { isHtmlEmpty, stripHtmlTags } from './chunk-ERLPVXOV.js';
@@ -126,14 +127,14 @@ import { cn } from './chunk-TQONQSJO.js';
126
127
  export { cn, miewebUITwMergeConflicts } from './chunk-TQONQSJO.js';
127
128
  import { isStorybookDocsMode } from './chunk-VSQF22GL.js';
128
129
  export { isStorybookDocsMode } from './chunk-VSQF22GL.js';
129
- export { miewebUIPreset, miewebUISafelist } from './chunk-2YDKLURF.js';
130
+ export { miewebUIPreset, miewebUISafelist } from './chunk-DWIF6VXZ.js';
130
131
  import * as React10 from 'react';
131
132
  import React10__default, { createContext, useState, useEffect, useCallback, useMemo, useContext, useRef } from 'react';
132
133
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
133
134
  import { cva } from 'class-variance-authority';
134
135
  import * as ReactDOM from 'react-dom';
135
136
  import { createPortal } from 'react-dom';
136
- import { FileUp, X, AlertCircle as AlertCircle$1, Calendar as Calendar$1, ChevronLeft, ChevronRight as ChevronRight$1, ChevronDown as ChevronDown$1, FolderUp, Upload, Edit2, Check, ChevronUp as ChevronUp$1, Phone as Phone$1, Mail as Mail$1, Clock as Clock$1, MapPin, Shield, Building2, SlidersHorizontal, Trash2 as Trash2$1, Pencil as Pencil$1, Plus as Plus$1, Link as Link$1, AlertTriangle as AlertTriangle$1, RefreshCw as RefreshCw$1 } from 'lucide-react';
137
+ import { FileUp, X, AlertCircle as AlertCircle$1, ChevronUp as ChevronUp$1, Check, Calendar as Calendar$1, ChevronLeft, ChevronRight as ChevronRight$1, ChevronDown as ChevronDown$1, FolderUp, Upload, Edit2, Phone as Phone$1, Mail as Mail$1, Clock as Clock$1, MapPin, Shield, Building2, SlidersHorizontal, Trash2 as Trash2$1, Pencil as Pencil$1, Plus as Plus$1, Link as Link$1, AlertTriangle as AlertTriangle$1, RefreshCw as RefreshCw$1 } from 'lucide-react';
137
138
 
138
139
  var SEX_OPTIONS = [
139
140
  { value: "F", label: "Female" },
@@ -1469,7 +1470,8 @@ function AIChat({
1469
1470
  onCancel,
1470
1471
  onClear,
1471
1472
  onClose,
1472
- renderTextContent
1473
+ renderTextContent,
1474
+ renderMessageFooter
1473
1475
  }) {
1474
1476
  const messagesEndRef = React10.useRef(null);
1475
1477
  const messages = React10.useMemo(
@@ -1583,7 +1585,8 @@ function AIChat({
1583
1585
  userName,
1584
1586
  showTimestamp: showTimestamps,
1585
1587
  onLinkClick: handleLinkClick,
1586
- renderTextContent
1588
+ renderTextContent,
1589
+ renderMessageFooter
1587
1590
  },
1588
1591
  message.id
1589
1592
  )),
@@ -5577,6 +5580,329 @@ function VisitScribe({
5577
5580
  }
5578
5581
  );
5579
5582
  }
5583
+ var MENU_OFFSET_PX = 6;
5584
+ var MENU_MAX_HEIGHT_PX = 320;
5585
+ function optionKey(option) {
5586
+ return `${option.provider}\0${option.model}`;
5587
+ }
5588
+ function renderedOptionKey(option, index) {
5589
+ return `${option.id ?? optionKey(option)}\0${index}`;
5590
+ }
5591
+ function groupByProvider(models) {
5592
+ const groups = /* @__PURE__ */ new Map();
5593
+ for (const model of models) {
5594
+ const group = groups.get(model.provider);
5595
+ if (group) {
5596
+ group.push(model);
5597
+ } else {
5598
+ groups.set(model.provider, [model]);
5599
+ }
5600
+ }
5601
+ return Array.from(groups, ([provider, options]) => ({ provider, options }));
5602
+ }
5603
+ function getProviderLabel(models, provider) {
5604
+ return models.find((model) => model.provider === provider && model.providerLabel)?.providerLabel ?? provider;
5605
+ }
5606
+ function ComposerModelSelector({
5607
+ models,
5608
+ value,
5609
+ providerFilter,
5610
+ onProviderFilterChange,
5611
+ onChange,
5612
+ disabled = false,
5613
+ className,
5614
+ boundaryRef,
5615
+ placeholder = "Model",
5616
+ anyLabel = "Any",
5617
+ emptyLabel = "No models",
5618
+ ariaLabel = "Model"
5619
+ }) {
5620
+ const [open, setOpen] = React10.useState(false);
5621
+ const [internalProviderFilter, setInternalProviderFilter] = React10.useState(null);
5622
+ const [highlightedIndex, setHighlightedIndex] = React10.useState(0);
5623
+ const listRef = React10.useRef(null);
5624
+ const menuId = React10.useId();
5625
+ const {
5626
+ anchorRef: triggerRef,
5627
+ floatingRef: menuRef,
5628
+ style: menuStyle
5629
+ } = useAnchoredPosition({
5630
+ open,
5631
+ placement: "top-start",
5632
+ offset: MENU_OFFSET_PX,
5633
+ matchMinWidth: true,
5634
+ maxHeight: MENU_MAX_HEIGHT_PX,
5635
+ allowFlip: false,
5636
+ boundaryRef
5637
+ });
5638
+ const activeProviderFilter = providerFilter === void 0 ? internalProviderFilter : providerFilter;
5639
+ const selectedKey = value ? optionKey(value) : null;
5640
+ const selectedOption = models.find(
5641
+ (model) => optionKey(model) === selectedKey
5642
+ );
5643
+ const providers = React10.useMemo(
5644
+ () => Array.from(new Set(models.map((model) => model.provider))),
5645
+ [models]
5646
+ );
5647
+ const providerLabels = React10.useMemo(
5648
+ () => new Map(
5649
+ providers.map((provider) => [
5650
+ provider,
5651
+ getProviderLabel(models, provider)
5652
+ ])
5653
+ ),
5654
+ [models, providers]
5655
+ );
5656
+ const filteredModels = React10.useMemo(
5657
+ () => activeProviderFilter === null ? models : models.filter((model) => model.provider === activeProviderFilter),
5658
+ [activeProviderFilter, models]
5659
+ );
5660
+ const groupedModels = React10.useMemo(
5661
+ () => groupByProvider(filteredModels),
5662
+ [filteredModels]
5663
+ );
5664
+ const groupedRenderedModels = React10.useMemo(() => {
5665
+ let index = 0;
5666
+ return groupedModels.map((group) => ({
5667
+ provider: group.provider,
5668
+ options: group.options.map((option) => {
5669
+ const rendered = {
5670
+ option,
5671
+ index,
5672
+ key: renderedOptionKey(option, index)
5673
+ };
5674
+ index += 1;
5675
+ return rendered;
5676
+ })
5677
+ }));
5678
+ }, [groupedModels]);
5679
+ const renderedModels = React10.useMemo(
5680
+ () => groupedRenderedModels.flatMap((group) => group.options),
5681
+ [groupedRenderedModels]
5682
+ );
5683
+ const getOptionId = React10.useCallback(
5684
+ (index) => `${menuId}-option-${index}`,
5685
+ [menuId]
5686
+ );
5687
+ const activeOptionId = open && renderedModels[highlightedIndex] ? getOptionId(highlightedIndex) : void 0;
5688
+ const selectedRenderedIndex = React10.useMemo(
5689
+ () => selectedKey ? renderedModels.findIndex(
5690
+ (renderedModel) => optionKey(renderedModel.option) === selectedKey
5691
+ ) : -1,
5692
+ [renderedModels, selectedKey]
5693
+ );
5694
+ const setProvider = React10.useCallback(
5695
+ (provider) => {
5696
+ if (providerFilter === void 0) {
5697
+ setInternalProviderFilter(provider);
5698
+ }
5699
+ onProviderFilterChange?.(provider);
5700
+ },
5701
+ [onProviderFilterChange, providerFilter]
5702
+ );
5703
+ const close = React10.useCallback(
5704
+ (restoreFocus = true) => {
5705
+ setOpen(false);
5706
+ if (restoreFocus) {
5707
+ triggerRef.current?.focus({ preventScroll: true });
5708
+ }
5709
+ },
5710
+ [triggerRef]
5711
+ );
5712
+ const selectModel = React10.useCallback(
5713
+ (model) => {
5714
+ onChange({ provider: model.provider, model: model.model });
5715
+ close();
5716
+ },
5717
+ [close, onChange]
5718
+ );
5719
+ const outsideRefs = React10.useMemo(
5720
+ () => [triggerRef, menuRef],
5721
+ [triggerRef, menuRef]
5722
+ );
5723
+ useClickOutside(outsideRefs, () => close(false), open);
5724
+ useEscapeKey(close, open);
5725
+ React10.useEffect(() => {
5726
+ if (!open) return;
5727
+ setHighlightedIndex(selectedRenderedIndex >= 0 ? selectedRenderedIndex : 0);
5728
+ }, [activeProviderFilter, open, selectedRenderedIndex]);
5729
+ React10.useEffect(() => {
5730
+ if (!open) return;
5731
+ setHighlightedIndex(
5732
+ (current) => Math.min(current, Math.max(renderedModels.length - 1, 0))
5733
+ );
5734
+ }, [open, renderedModels.length]);
5735
+ React10.useEffect(() => {
5736
+ if (!open) return;
5737
+ requestAnimationFrame(
5738
+ () => listRef.current?.focus({ preventScroll: true })
5739
+ );
5740
+ }, [open]);
5741
+ const handleTriggerKeyDown = (event) => {
5742
+ if (event.key === "ArrowDown" || event.key === "ArrowUp") {
5743
+ event.preventDefault();
5744
+ setOpen(true);
5745
+ }
5746
+ };
5747
+ const handleMenuKeyDown = (event) => {
5748
+ if (renderedModels.length === 0) return;
5749
+ if (event.key === "ArrowDown") {
5750
+ event.preventDefault();
5751
+ setHighlightedIndex((current) => (current + 1) % renderedModels.length);
5752
+ }
5753
+ if (event.key === "ArrowUp") {
5754
+ event.preventDefault();
5755
+ setHighlightedIndex(
5756
+ (current) => (current - 1 + renderedModels.length) % renderedModels.length
5757
+ );
5758
+ }
5759
+ if (event.key === "Home") {
5760
+ event.preventDefault();
5761
+ setHighlightedIndex(0);
5762
+ }
5763
+ if (event.key === "End") {
5764
+ event.preventDefault();
5765
+ setHighlightedIndex(renderedModels.length - 1);
5766
+ }
5767
+ if (event.key === "Enter" || event.key === " ") {
5768
+ event.preventDefault();
5769
+ const highlightedModel = renderedModels[highlightedIndex]?.option;
5770
+ if (highlightedModel) {
5771
+ selectModel(highlightedModel);
5772
+ }
5773
+ }
5774
+ };
5775
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
5776
+ /* @__PURE__ */ jsxs(
5777
+ "button",
5778
+ {
5779
+ ref: triggerRef,
5780
+ type: "button",
5781
+ disabled,
5782
+ "aria-haspopup": "listbox",
5783
+ "aria-expanded": open,
5784
+ "aria-controls": open ? menuId : void 0,
5785
+ onClick: () => setOpen((current) => !current),
5786
+ onKeyDown: handleTriggerKeyDown,
5787
+ "data-slot": "composer-model-selector-trigger",
5788
+ className: cn(
5789
+ "inline-flex h-8 max-w-full items-center gap-1.5 rounded-full border px-2.5 text-sm font-medium",
5790
+ "border-border bg-background text-foreground shadow-sm",
5791
+ "hover:bg-muted/50",
5792
+ "focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none",
5793
+ "disabled:cursor-not-allowed disabled:opacity-50",
5794
+ className
5795
+ ),
5796
+ children: [
5797
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children: selectedOption?.label ?? selectedOption?.model ?? placeholder }),
5798
+ /* @__PURE__ */ jsx(ChevronUp$1, { "aria-hidden": "true", className: "h-3.5 w-3.5 shrink-0" })
5799
+ ]
5800
+ }
5801
+ ),
5802
+ open && createPortal(
5803
+ /* @__PURE__ */ jsxs(
5804
+ "div",
5805
+ {
5806
+ ref: menuRef,
5807
+ style: menuStyle,
5808
+ "data-slot": "composer-model-selector-menu",
5809
+ className: cn(
5810
+ "border-border bg-card text-card-foreground flex w-80 max-w-full flex-col rounded-lg border shadow-lg",
5811
+ "animate-in fade-in overflow-hidden duration-100"
5812
+ ),
5813
+ children: [
5814
+ /* @__PURE__ */ jsx(
5815
+ "div",
5816
+ {
5817
+ "data-slot": "composer-model-selector-provider-filter",
5818
+ className: "border-border flex min-h-9 items-center gap-1 overflow-x-auto overflow-y-hidden border-b p-2",
5819
+ children: [null, ...providers].map((provider) => {
5820
+ const selected = activeProviderFilter === provider;
5821
+ return /* @__PURE__ */ jsx(
5822
+ "button",
5823
+ {
5824
+ type: "button",
5825
+ "aria-pressed": selected,
5826
+ onMouseDown: (event) => event.preventDefault(),
5827
+ onClick: () => setProvider(provider),
5828
+ className: cn(
5829
+ "inline-flex h-6 shrink-0 items-center justify-center rounded-full px-2.5 text-xs font-medium whitespace-nowrap transition-colors",
5830
+ "focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none",
5831
+ selected ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-muted hover:text-foreground"
5832
+ ),
5833
+ children: provider === null ? anyLabel : providerLabels.get(provider) ?? provider
5834
+ },
5835
+ provider ?? "all-providers"
5836
+ );
5837
+ })
5838
+ }
5839
+ ),
5840
+ /* @__PURE__ */ jsx(
5841
+ "div",
5842
+ {
5843
+ ref: listRef,
5844
+ id: menuId,
5845
+ role: "listbox",
5846
+ "aria-label": ariaLabel,
5847
+ "aria-activedescendant": activeOptionId,
5848
+ tabIndex: -1,
5849
+ onKeyDown: handleMenuKeyDown,
5850
+ className: "min-h-0 flex-1 overflow-y-auto p-1",
5851
+ children: groupedModels.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-muted-foreground px-3 py-4 text-center text-sm", children: emptyLabel }) : groupedRenderedModels.map((group) => /* @__PURE__ */ jsxs(
5852
+ "div",
5853
+ {
5854
+ role: "group",
5855
+ "aria-label": providerLabels.get(group.provider) ?? group.provider,
5856
+ children: [
5857
+ /* @__PURE__ */ jsx("div", { className: "text-muted-foreground px-3 py-1.5 text-xs font-semibold uppercase", children: providerLabels.get(group.provider) ?? group.provider }),
5858
+ group.options.map((renderedModel) => {
5859
+ const { index, key, option: model } = renderedModel;
5860
+ const selected = optionKey(model) === selectedKey;
5861
+ const highlighted = index === highlightedIndex;
5862
+ return /* @__PURE__ */ jsxs(
5863
+ "button",
5864
+ {
5865
+ id: getOptionId(index),
5866
+ type: "button",
5867
+ role: "option",
5868
+ "aria-selected": selected,
5869
+ onMouseDown: (event) => event.preventDefault(),
5870
+ onClick: () => selectModel(model),
5871
+ onMouseEnter: () => setHighlightedIndex(index),
5872
+ className: cn(
5873
+ "flex w-full items-center gap-2 rounded-md px-3 py-2 text-start text-sm",
5874
+ "focus-visible:ring-ring transition-colors focus-visible:ring-2 focus-visible:outline-none",
5875
+ highlighted && "bg-muted",
5876
+ selected && "bg-primary/10 text-primary"
5877
+ ),
5878
+ children: [
5879
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children: model.label ?? model.model }),
5880
+ selected && /* @__PURE__ */ jsx(
5881
+ Check,
5882
+ {
5883
+ "aria-hidden": "true",
5884
+ className: "text-primary h-4 w-4 shrink-0"
5885
+ }
5886
+ )
5887
+ ]
5888
+ },
5889
+ key
5890
+ );
5891
+ })
5892
+ ]
5893
+ },
5894
+ group.provider
5895
+ ))
5896
+ }
5897
+ )
5898
+ ]
5899
+ }
5900
+ ),
5901
+ document.body
5902
+ )
5903
+ ] });
5904
+ }
5905
+ ComposerModelSelector.displayName = "ComposerModelSelector";
5580
5906
  function normalizeString(value) {
5581
5907
  return value.trim().replace(/\s+/g, " ").toLowerCase();
5582
5908
  }
@@ -6242,9 +6568,9 @@ function AppHeaderSection({
6242
6568
  "data-slot": "app-header-section",
6243
6569
  className: cn(
6244
6570
  "flex items-center gap-3",
6245
- align === "left" && "mr-auto",
6571
+ align === "left" && "me-auto",
6246
6572
  align === "center" && "mx-auto",
6247
- align === "right" && "ml-auto",
6573
+ align === "right" && "ms-auto",
6248
6574
  className
6249
6575
  ),
6250
6576
  children
@@ -6342,7 +6668,7 @@ function AppHeaderIconButton({
6342
6668
  "span",
6343
6669
  {
6344
6670
  className: cn(
6345
- "absolute -top-1 -right-1 flex items-center justify-center",
6671
+ "absolute -end-1 -top-1 flex items-center justify-center",
6346
6672
  "h-[18px] min-w-[18px] px-1 text-[10px] font-bold",
6347
6673
  "rounded-full bg-red-700 text-white"
6348
6674
  ),
@@ -6398,7 +6724,7 @@ function AppHeaderSearch({
6398
6724
  ),
6399
6725
  children: [
6400
6726
  /* @__PURE__ */ jsx(SearchIcon, {}),
6401
- /* @__PURE__ */ jsx("span", { className: "flex-1 text-left whitespace-nowrap", children: placeholder }),
6727
+ /* @__PURE__ */ jsx("span", { className: "flex-1 text-start whitespace-nowrap", children: placeholder }),
6402
6728
  /* @__PURE__ */ jsxs(
6403
6729
  "kbd",
6404
6730
  {
@@ -6461,7 +6787,7 @@ function AppHeaderUserMenu({
6461
6787
  ) : displayInitials
6462
6788
  }
6463
6789
  ),
6464
- /* @__PURE__ */ jsxs("div", { className: "hidden min-w-0 text-left lg:block", children: [
6790
+ /* @__PURE__ */ jsxs("div", { className: "hidden min-w-0 text-start lg:block", children: [
6465
6791
  /* @__PURE__ */ jsx(
6466
6792
  "div",
6467
6793
  {
@@ -9687,6 +10013,50 @@ function LoadingSpinner({ className }) {
9687
10013
  }
9688
10014
  );
9689
10015
  }
10016
+
10017
+ // src/components/BusinessHoursEditor/scheduleRules.ts
10018
+ function generateId2() {
10019
+ return Math.random().toString(36).substring(2, 9);
10020
+ }
10021
+ function ruleSignature(slot) {
10022
+ return `${slot.start}\0${slot.end}\0${slot.description ?? ""}`;
10023
+ }
10024
+ function scheduleToRules(schedule) {
10025
+ const rulesBySignature = /* @__PURE__ */ new Map();
10026
+ const orderedRules = [];
10027
+ for (const day of schedule) {
10028
+ for (const slot of day.hours) {
10029
+ const signature = ruleSignature(slot);
10030
+ const candidates = rulesBySignature.get(signature) ?? [];
10031
+ let rule = candidates.find((r) => !r.days.includes(day.day));
10032
+ if (!rule) {
10033
+ rule = {
10034
+ id: `rule-${orderedRules.length}`,
10035
+ days: [],
10036
+ start: slot.start,
10037
+ end: slot.end,
10038
+ description: slot.description
10039
+ };
10040
+ candidates.push(rule);
10041
+ rulesBySignature.set(signature, candidates);
10042
+ orderedRules.push(rule);
10043
+ }
10044
+ rule.days.push(day.day);
10045
+ }
10046
+ }
10047
+ return orderedRules;
10048
+ }
10049
+ function rulesToSchedule(rules) {
10050
+ return Array.from({ length: 7 }, (_, day) => ({
10051
+ day,
10052
+ hours: rules.filter((rule) => rule.days.includes(day)).map((rule, index) => ({
10053
+ id: `slot-${day}-${index}`,
10054
+ start: rule.start,
10055
+ end: rule.end,
10056
+ ...rule.description ? { description: rule.description } : {}
10057
+ }))
10058
+ }));
10059
+ }
9690
10060
  var DAY_NAMES = {
9691
10061
  0: "Sunday",
9692
10062
  1: "Monday",
@@ -9954,6 +10324,63 @@ function DayScheduleRow({
9954
10324
  }
9955
10325
  );
9956
10326
  }
10327
+ function GroupedScheduleRows({
10328
+ officeHours,
10329
+ useShortDayNames = false,
10330
+ use24Hour = false
10331
+ }) {
10332
+ const normalized = officeHours.map((dayHours) => ({
10333
+ day: parseDayToNumber(dayHours.day),
10334
+ hours: (dayHours.hours ?? []).map((range) => ({
10335
+ start: range.start ?? "",
10336
+ end: range.end ?? "",
10337
+ ...range.description ? { description: range.description } : {}
10338
+ }))
10339
+ }));
10340
+ const rules = scheduleToRules(normalized);
10341
+ const closedDays = normalized.filter((dayHours) => dayHours.hours.length === 0).map((dayHours) => dayHours.day);
10342
+ const dayNames = useShortDayNames ? DAY_NAMES_SHORT : DAY_NAMES;
10343
+ const formatDays = (days) => days.map((day) => dayNames[day]).join(", ");
10344
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
10345
+ rules.map((rule) => /* @__PURE__ */ jsxs(
10346
+ "div",
10347
+ {
10348
+ "data-slot": "business-hours-grouped-row",
10349
+ className: cn(dayRowVariants({ isToday: false })),
10350
+ children: [
10351
+ /* @__PURE__ */ jsx(
10352
+ "span",
10353
+ {
10354
+ "data-slot": "business-hours-day-name",
10355
+ className: "min-w-[80px] font-medium",
10356
+ children: formatDays(rule.days)
10357
+ }
10358
+ ),
10359
+ /* @__PURE__ */ jsx("div", { "data-slot": "business-hours-day-hours", className: "text-end", children: /* @__PURE__ */ jsx(TimeRangeDisplay, { range: rule, use24Hour }) })
10360
+ ]
10361
+ },
10362
+ rule.id
10363
+ )),
10364
+ closedDays.length > 0 && /* @__PURE__ */ jsxs(
10365
+ "div",
10366
+ {
10367
+ "data-slot": "business-hours-grouped-row",
10368
+ className: cn(dayRowVariants({ isToday: false })),
10369
+ children: [
10370
+ /* @__PURE__ */ jsx(
10371
+ "span",
10372
+ {
10373
+ "data-slot": "business-hours-day-name",
10374
+ className: "min-w-[80px] font-medium",
10375
+ children: formatDays(closedDays)
10376
+ }
10377
+ ),
10378
+ /* @__PURE__ */ jsx("div", { "data-slot": "business-hours-day-hours", className: "text-end", children: /* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: "Closed" }) })
10379
+ ]
10380
+ }
10381
+ )
10382
+ ] });
10383
+ }
9957
10384
  function BusinessHours({
9958
10385
  schedule,
9959
10386
  variant = "default",
@@ -9962,6 +10389,7 @@ function BusinessHours({
9962
10389
  highlightToday = true,
9963
10390
  useShortDayNames = false,
9964
10391
  use24Hour = false,
10392
+ groupDays = false,
9965
10393
  showHeader = true,
9966
10394
  headerText = "Hours",
9967
10395
  className
@@ -10097,7 +10525,14 @@ function BusinessHours({
10097
10525
  {
10098
10526
  "data-slot": "business-hours-schedule",
10099
10527
  className: "space-y-1 divide-y divide-neutral-100 dark:divide-neutral-800",
10100
- children: schedule.officeHours.map((dayHours, idx) => /* @__PURE__ */ jsx(
10528
+ children: groupDays ? /* @__PURE__ */ jsx(
10529
+ GroupedScheduleRows,
10530
+ {
10531
+ officeHours: schedule.officeHours,
10532
+ useShortDayNames,
10533
+ use24Hour
10534
+ }
10535
+ ) : schedule.officeHours.map((dayHours, idx) => /* @__PURE__ */ jsx(
10101
10536
  DayScheduleRow,
10102
10537
  {
10103
10538
  dayHours,
@@ -10234,9 +10669,6 @@ var DAY_NAMES2 = [
10234
10669
  "Saturday"
10235
10670
  ];
10236
10671
  var DAY_NAMES_SHORT2 = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
10237
- function generateId2() {
10238
- return Math.random().toString(36).substring(2, 9);
10239
- }
10240
10672
  function getOrderedDays(weekStartsOn) {
10241
10673
  if (weekStartsOn === 1) {
10242
10674
  return [1, 2, 3, 4, 5, 6, 0];
@@ -10252,6 +10684,15 @@ function ensureAllDays(schedule) {
10252
10684
  return result;
10253
10685
  }
10254
10686
  function BusinessHoursEditor({
10687
+ variant = "days",
10688
+ ...props
10689
+ }) {
10690
+ if (variant === "rules") {
10691
+ return /* @__PURE__ */ jsx(BusinessHoursRulesEditor, { ...props });
10692
+ }
10693
+ return /* @__PURE__ */ jsx(BusinessHoursDaysEditor, { ...props });
10694
+ }
10695
+ function BusinessHoursDaysEditor({
10255
10696
  value,
10256
10697
  onChange,
10257
10698
  disabled = false,
@@ -10521,6 +10962,208 @@ function BusinessHoursEditor({
10521
10962
  }
10522
10963
  );
10523
10964
  }
10965
+ function normalizeSchedule(schedule) {
10966
+ return JSON.stringify(
10967
+ ensureAllDays(schedule).map((day) => ({
10968
+ day: day.day,
10969
+ hours: day.hours.map((slot) => ({
10970
+ start: slot.start,
10971
+ end: slot.end,
10972
+ description: slot.description ?? ""
10973
+ }))
10974
+ }))
10975
+ );
10976
+ }
10977
+ function BusinessHoursRulesEditor({
10978
+ value,
10979
+ onChange,
10980
+ disabled = false,
10981
+ showDescription = true,
10982
+ use24Hour = false,
10983
+ weekStartsOn = 0,
10984
+ className,
10985
+ addHoursLabel = "Add Hours"
10986
+ }) {
10987
+ const [rules, setRules] = React10.useState(
10988
+ () => scheduleToRules(value)
10989
+ );
10990
+ const timeFormat = use24Hour ? "24-hour" : "12-hour";
10991
+ const lastScheduleRef = React10.useRef(normalizeSchedule(value));
10992
+ React10.useEffect(() => {
10993
+ const incoming = normalizeSchedule(value);
10994
+ if (incoming !== lastScheduleRef.current) {
10995
+ lastScheduleRef.current = incoming;
10996
+ setRules(scheduleToRules(value));
10997
+ }
10998
+ }, [value]);
10999
+ const emit = useCallback(
11000
+ (nextRules) => {
11001
+ setRules(nextRules);
11002
+ const schedule = rulesToSchedule(nextRules);
11003
+ const normalized = normalizeSchedule(schedule);
11004
+ if (normalized !== lastScheduleRef.current) {
11005
+ lastScheduleRef.current = normalized;
11006
+ onChange(schedule);
11007
+ }
11008
+ },
11009
+ [onChange]
11010
+ );
11011
+ const handleAddRule = useCallback(() => {
11012
+ emit([
11013
+ ...rules,
11014
+ { id: generateId2(), days: [], start: "09:00", end: "17:00" }
11015
+ ]);
11016
+ }, [emit, rules]);
11017
+ const handleRemoveRule = useCallback(
11018
+ (ruleId) => {
11019
+ emit(rules.filter((rule) => rule.id !== ruleId));
11020
+ },
11021
+ [emit, rules]
11022
+ );
11023
+ const handleToggleDay = useCallback(
11024
+ (ruleId, day) => {
11025
+ emit(
11026
+ rules.map(
11027
+ (rule) => rule.id === ruleId ? {
11028
+ ...rule,
11029
+ days: rule.days.includes(day) ? rule.days.filter((d) => d !== day) : [...rule.days, day]
11030
+ } : rule
11031
+ )
11032
+ );
11033
+ },
11034
+ [emit, rules]
11035
+ );
11036
+ const handleRuleChange = useCallback(
11037
+ (ruleId, field, value2) => {
11038
+ emit(
11039
+ rules.map(
11040
+ (rule) => rule.id === ruleId ? { ...rule, [field]: value2 } : rule
11041
+ )
11042
+ );
11043
+ },
11044
+ [emit, rules]
11045
+ );
11046
+ const orderedDays = getOrderedDays(weekStartsOn);
11047
+ return /* @__PURE__ */ jsxs(
11048
+ "div",
11049
+ {
11050
+ "data-slot": "business-hours-editor",
11051
+ className: cn("business-hours-editor space-y-3", className),
11052
+ children: [
11053
+ rules.map((rule) => /* @__PURE__ */ jsxs(
11054
+ "fieldset",
11055
+ {
11056
+ "data-slot": "business-hours-rule",
11057
+ className: "flex flex-wrap items-center gap-2 border-b border-gray-200 pb-3 last:border-0 dark:border-gray-700",
11058
+ children: [
11059
+ /* @__PURE__ */ jsx("legend", { className: "sr-only", children: "Availability rule" }),
11060
+ /* @__PURE__ */ jsx(
11061
+ "div",
11062
+ {
11063
+ "data-slot": "business-hours-rule-days",
11064
+ className: "flex shrink-0 gap-1",
11065
+ children: orderedDays.map((day) => {
11066
+ const selected = rule.days.includes(day);
11067
+ return /* @__PURE__ */ jsx(
11068
+ "button",
11069
+ {
11070
+ type: "button",
11071
+ "aria-pressed": selected,
11072
+ "aria-label": DAY_NAMES2[day],
11073
+ disabled,
11074
+ onClick: () => handleToggleDay(rule.id, day),
11075
+ className: cn(
11076
+ "inline-flex h-7 w-9 items-center justify-center rounded-full border text-xs font-medium transition-colors",
11077
+ "focus-visible:ring-ring focus-visible:ring-2 focus-visible:outline-none",
11078
+ "disabled:cursor-not-allowed disabled:opacity-50",
11079
+ selected ? "border-primary-800 bg-primary-800 text-white" : "border-border text-muted-foreground hover:bg-muted hover:text-foreground"
11080
+ ),
11081
+ children: DAY_NAMES_SHORT2[day]
11082
+ },
11083
+ day
11084
+ );
11085
+ })
11086
+ }
11087
+ ),
11088
+ /* @__PURE__ */ jsx("div", { className: "w-32 sm:w-36", children: /* @__PURE__ */ jsx(
11089
+ DateInput,
11090
+ {
11091
+ inputType: "time",
11092
+ timeFormat,
11093
+ minuteStep: 15,
11094
+ value: rule.start,
11095
+ onChange: (time) => handleRuleChange(rule.id, "start", time),
11096
+ disabled,
11097
+ size: "sm",
11098
+ className: "text-sm",
11099
+ label: "Start time",
11100
+ hideLabel: true
11101
+ }
11102
+ ) }),
11103
+ /* @__PURE__ */ jsx("span", { "data-slot": "business-hours-separator", className: "text-gray-400", children: "\u2013" }),
11104
+ /* @__PURE__ */ jsx("div", { className: "w-32 sm:w-36", children: /* @__PURE__ */ jsx(
11105
+ DateInput,
11106
+ {
11107
+ inputType: "time",
11108
+ timeFormat,
11109
+ minuteStep: 15,
11110
+ value: rule.end,
11111
+ onChange: (time) => handleRuleChange(rule.id, "end", time),
11112
+ disabled,
11113
+ size: "sm",
11114
+ className: "text-sm",
11115
+ label: "End time",
11116
+ hideLabel: true
11117
+ }
11118
+ ) }),
11119
+ showDescription && /* @__PURE__ */ jsx("div", { className: "min-w-[120px] flex-1", children: /* @__PURE__ */ jsx(
11120
+ Input,
11121
+ {
11122
+ type: "text",
11123
+ value: rule.description || "",
11124
+ onChange: (e) => handleRuleChange(rule.id, "description", e.target.value),
11125
+ placeholder: "Description (optional)",
11126
+ disabled,
11127
+ className: "text-sm",
11128
+ "aria-label": "Description"
11129
+ }
11130
+ ) }),
11131
+ /* @__PURE__ */ jsx(
11132
+ Button,
11133
+ {
11134
+ type: "button",
11135
+ variant: "ghost",
11136
+ size: "sm",
11137
+ onClick: () => handleRemoveRule(rule.id),
11138
+ disabled,
11139
+ className: "text-red-500 hover:bg-red-50 hover:text-red-600 dark:hover:bg-red-900/20",
11140
+ "aria-label": "Remove availability rule",
11141
+ children: /* @__PURE__ */ jsx(XIcon, { className: "h-4 w-4" })
11142
+ }
11143
+ )
11144
+ ]
11145
+ },
11146
+ rule.id
11147
+ )),
11148
+ /* @__PURE__ */ jsxs(
11149
+ Button,
11150
+ {
11151
+ type: "button",
11152
+ variant: "ghost",
11153
+ size: "sm",
11154
+ onClick: handleAddRule,
11155
+ disabled,
11156
+ className: "text-xs",
11157
+ children: [
11158
+ /* @__PURE__ */ jsx(PlusIcon2, { className: "me-1 h-3 w-3" }),
11159
+ addHoursLabel
11160
+ ]
11161
+ }
11162
+ )
11163
+ ]
11164
+ }
11165
+ );
11166
+ }
10524
11167
  function createDefaultSchedule() {
10525
11168
  return [
10526
11169
  { day: 0, hours: [] },
@@ -35675,6 +36318,156 @@ function ScheduleCalendar({
35675
36318
  }
35676
36319
  );
35677
36320
  }
36321
+ function PillSelect({
36322
+ options,
36323
+ value: controlledValue,
36324
+ defaultValue,
36325
+ onValueChange,
36326
+ label,
36327
+ disabled = false,
36328
+ className
36329
+ }) {
36330
+ const [internalValue, setInternalValue] = React10.useState(
36331
+ defaultValue ?? options[0]?.value ?? ""
36332
+ );
36333
+ const [expanded, setExpanded] = React10.useState(false);
36334
+ const triggerRef = React10.useRef(null);
36335
+ const menuRef = React10.useRef(null);
36336
+ const selectedOptionRef = React10.useRef(null);
36337
+ const firstEnabledOptionRef = React10.useRef(null);
36338
+ const listboxId = React10.useId();
36339
+ const [menuStyle, setMenuStyle] = React10.useState({});
36340
+ const value = controlledValue !== void 0 ? controlledValue : internalValue;
36341
+ const selectedOption = options.find((o) => o.value === value);
36342
+ const close = React10.useCallback((restoreFocus = false) => {
36343
+ setExpanded(false);
36344
+ if (restoreFocus) {
36345
+ requestAnimationFrame(
36346
+ () => triggerRef.current?.focus({ preventScroll: true })
36347
+ );
36348
+ }
36349
+ }, []);
36350
+ const updateMenuPosition = React10.useCallback(() => {
36351
+ const trigger = triggerRef.current;
36352
+ if (!trigger) return;
36353
+ const rect = trigger.getBoundingClientRect();
36354
+ const viewportPadding = 8;
36355
+ const menuWidth = Math.max(rect.width, 160);
36356
+ const maxWidth = Math.max(window.innerWidth - viewportPadding * 2, 0);
36357
+ const left = Math.min(
36358
+ Math.max(rect.left, viewportPadding),
36359
+ window.innerWidth - menuWidth - viewportPadding
36360
+ );
36361
+ setMenuStyle({
36362
+ position: "fixed",
36363
+ top: rect.bottom + 4,
36364
+ left,
36365
+ minWidth: rect.width,
36366
+ width: menuWidth,
36367
+ maxWidth,
36368
+ zIndex: 9999
36369
+ });
36370
+ }, []);
36371
+ React10.useEffect(() => {
36372
+ if (!expanded) return;
36373
+ updateMenuPosition();
36374
+ window.addEventListener("scroll", updateMenuPosition, true);
36375
+ window.addEventListener("resize", updateMenuPosition);
36376
+ return () => {
36377
+ window.removeEventListener("scroll", updateMenuPosition, true);
36378
+ window.removeEventListener("resize", updateMenuPosition);
36379
+ };
36380
+ }, [expanded, updateMenuPosition]);
36381
+ React10.useEffect(() => {
36382
+ if (!expanded) return;
36383
+ const handleClickOutside = (event) => {
36384
+ const target = event.target;
36385
+ if (triggerRef.current?.contains(target) || menuRef.current?.contains(target)) {
36386
+ return;
36387
+ }
36388
+ close();
36389
+ };
36390
+ document.addEventListener("mousedown", handleClickOutside);
36391
+ return () => document.removeEventListener("mousedown", handleClickOutside);
36392
+ }, [close, expanded]);
36393
+ React10.useEffect(() => {
36394
+ if (!expanded) return;
36395
+ requestAnimationFrame(() => {
36396
+ (selectedOptionRef.current ?? firstEnabledOptionRef.current)?.focus({
36397
+ preventScroll: true
36398
+ });
36399
+ });
36400
+ }, [expanded, value]);
36401
+ useEscapeKey(() => close(true), expanded);
36402
+ function handleSelect(option) {
36403
+ if (disabled || option.disabled) return;
36404
+ if (controlledValue === void 0) setInternalValue(option.value);
36405
+ onValueChange?.(option.value);
36406
+ close(true);
36407
+ }
36408
+ const hasOptions = options.length > 0;
36409
+ const valuePart = selectedOption?.label ?? value;
36410
+ const collapsedLabel = label && valuePart ? `${label}: ${valuePart}` : label || valuePart || "No options";
36411
+ let firstEnabledOptionRefAssigned = false;
36412
+ return /* @__PURE__ */ jsxs("div", { className: cn("inline-flex", className), children: [
36413
+ /* @__PURE__ */ jsx(
36414
+ "button",
36415
+ {
36416
+ ref: triggerRef,
36417
+ type: "button",
36418
+ disabled: disabled || !hasOptions,
36419
+ onClick: () => setExpanded((open) => !open),
36420
+ "aria-haspopup": "listbox",
36421
+ "aria-expanded": expanded,
36422
+ "aria-controls": expanded ? listboxId : void 0,
36423
+ className: cn(
36424
+ "border-border bg-muted text-foreground inline-flex items-center rounded-full border px-3 py-0.5 text-sm transition-colors",
36425
+ "hover:bg-muted/80 focus-visible:ring-ring focus:outline-none focus-visible:ring-2",
36426
+ (disabled || !hasOptions) && "cursor-not-allowed opacity-50"
36427
+ ),
36428
+ children: collapsedLabel
36429
+ }
36430
+ ),
36431
+ expanded && createPortal(
36432
+ /* @__PURE__ */ jsx(
36433
+ "div",
36434
+ {
36435
+ ref: menuRef,
36436
+ id: listboxId,
36437
+ role: "listbox",
36438
+ "aria-label": label ? `${label} options` : "Options",
36439
+ style: menuStyle,
36440
+ className: "border-border bg-card animate-in fade-in zoom-in-95 flex flex-col rounded-lg border p-1 shadow-lg duration-100",
36441
+ children: options.map((option) => {
36442
+ const selected = option.value === value;
36443
+ const optionDisabled = disabled || option.disabled;
36444
+ const isFirstEnabled = !optionDisabled && !firstEnabledOptionRefAssigned;
36445
+ if (isFirstEnabled) firstEnabledOptionRefAssigned = true;
36446
+ return /* @__PURE__ */ jsx(
36447
+ "button",
36448
+ {
36449
+ ref: selected && !optionDisabled ? selectedOptionRef : isFirstEnabled ? firstEnabledOptionRef : void 0,
36450
+ type: "button",
36451
+ role: "option",
36452
+ disabled: optionDisabled,
36453
+ onClick: () => handleSelect(option),
36454
+ "aria-selected": selected,
36455
+ className: cn(
36456
+ "focus-visible:ring-ring flex w-full items-center rounded-md px-3 py-1.5 text-start text-sm transition-colors focus:outline-none focus-visible:ring-2",
36457
+ selected ? "bg-muted text-foreground font-semibold" : "text-muted-foreground hover:bg-muted hover:text-foreground font-normal",
36458
+ optionDisabled && "cursor-not-allowed opacity-40"
36459
+ ),
36460
+ children: option.label
36461
+ },
36462
+ option.value
36463
+ );
36464
+ })
36465
+ }
36466
+ ),
36467
+ document.body
36468
+ )
36469
+ ] });
36470
+ }
35678
36471
  var accordionVariants = cva(
35679
36472
  "service-accordion divide-y divide-neutral-200 dark:divide-neutral-700",
35680
36473
  {
@@ -38681,11 +39474,11 @@ function Sidebar({
38681
39474
  "data-testid": testId,
38682
39475
  className: cn(
38683
39476
  "flex h-screen flex-col",
38684
- "border-r border-neutral-200 bg-white dark:border-neutral-700 dark:bg-neutral-900",
39477
+ "border-e border-neutral-200 bg-white dark:border-neutral-700 dark:bg-neutral-900",
38685
39478
  "transition-all duration-300 ease-in-out",
38686
- // Mobile positioning
38687
- isMobileViewport && "fixed top-0 left-0 z-50",
38688
- isMobileViewport && (isMobileOpen ? "translate-x-0" : "-translate-x-full"),
39479
+ // Mobile positioning (start-pinned; off-canvas direction flips in RTL)
39480
+ isMobileViewport && "fixed start-0 top-0 z-50",
39481
+ isMobileViewport && (isMobileOpen ? "translate-x-0" : "-translate-x-full rtl:translate-x-full"),
38689
39482
  // Desktop positioning
38690
39483
  !isMobileViewport && "relative",
38691
39484
  className
@@ -38732,7 +39525,7 @@ function SidebarHeader({
38732
39525
  "button",
38733
39526
  {
38734
39527
  onClick: closeMobile,
38735
- className: "-mr-2 rounded-lg p-2 text-neutral-500 transition-colors hover:bg-neutral-100 lg:hidden dark:hover:bg-neutral-800",
39528
+ className: "-me-2 rounded-lg p-2 text-neutral-500 transition-colors hover:bg-neutral-100 lg:hidden dark:hover:bg-neutral-800",
38736
39529
  "aria-label": "Close navigation",
38737
39530
  children: /* @__PURE__ */ jsx(XIcon3, {})
38738
39531
  }
@@ -38819,18 +39612,18 @@ function SidebarNavGroup({
38819
39612
  {
38820
39613
  className: cn(
38821
39614
  "text-muted-foreground h-5 w-5 flex-shrink-0",
38822
- !showCollapsed && "mr-3"
39615
+ !showCollapsed && "me-3"
38823
39616
  ),
38824
39617
  children: icon
38825
39618
  }
38826
39619
  ),
38827
39620
  !showCollapsed && /* @__PURE__ */ jsxs(Fragment, { children: [
38828
- /* @__PURE__ */ jsx("span", { className: "flex-1 truncate text-left", children: label }),
39621
+ /* @__PURE__ */ jsx("span", { className: "flex-1 truncate text-start", children: label }),
38829
39622
  /* @__PURE__ */ jsx(
38830
39623
  "span",
38831
39624
  {
38832
39625
  className: cn(
38833
- "ml-2 flex-shrink-0 transition-transform duration-200",
39626
+ "ms-2 flex-shrink-0 transition-transform duration-200",
38834
39627
  effectiveExpanded && "rotate-180"
38835
39628
  ),
38836
39629
  children: /* @__PURE__ */ jsx(ChevronDownIcon4, {})
@@ -38847,7 +39640,7 @@ function SidebarNavGroup({
38847
39640
  "overflow-hidden transition-all duration-300",
38848
39641
  effectiveExpanded ? "mt-1 max-h-[1000px] opacity-100" : "max-h-0 opacity-0"
38849
39642
  ),
38850
- children: /* @__PURE__ */ jsx("div", { className: "pl-2", children })
39643
+ children: /* @__PURE__ */ jsx("div", { className: "ps-2", children })
38851
39644
  }
38852
39645
  )
38853
39646
  ] });
@@ -38879,18 +39672,18 @@ function SidebarNavItem({
38879
39672
  className: cn(
38880
39673
  "h-5 w-5 flex-shrink-0",
38881
39674
  isActive ? "text-primary-800 dark:text-primary-400" : "text-muted-foreground",
38882
- !showCollapsed && "mr-3"
39675
+ !showCollapsed && "me-3"
38883
39676
  ),
38884
39677
  children: icon
38885
39678
  }
38886
39679
  ),
38887
39680
  !showCollapsed && /* @__PURE__ */ jsxs(Fragment, { children: [
38888
- /* @__PURE__ */ jsx("span", { className: "flex-1 truncate text-left", children: label }),
39681
+ /* @__PURE__ */ jsx("span", { className: "flex-1 truncate text-start", children: label }),
38889
39682
  badge && /* @__PURE__ */ jsx(
38890
39683
  "span",
38891
39684
  {
38892
39685
  className: cn(
38893
- "ml-2 rounded-full px-2 py-0.5 text-xs font-medium",
39686
+ "ms-2 rounded-full px-2 py-0.5 text-xs font-medium",
38894
39687
  isActive ? "bg-primary-100 dark:bg-primary-900/30 text-primary-700 dark:text-primary-300" : "bg-neutral-100 text-neutral-600 dark:bg-neutral-700 dark:text-neutral-400"
38895
39688
  ),
38896
39689
  children: badge
@@ -38955,7 +39748,7 @@ function SidebarToggle({
38955
39748
  }
38956
39749
  );
38957
39750
  if (position === "floating") {
38958
- return /* @__PURE__ */ jsx("div", { className: "absolute top-6 -right-3 z-10 rounded-full border border-neutral-200 bg-white shadow-md dark:border-neutral-700 dark:bg-neutral-900", children: button });
39751
+ return /* @__PURE__ */ jsx("div", { className: "absolute -end-3 top-6 z-10 rounded-full border border-neutral-200 bg-white shadow-md dark:border-neutral-700 dark:bg-neutral-900", children: button });
38959
39752
  }
38960
39753
  return button;
38961
39754
  }
@@ -39012,7 +39805,7 @@ function SidebarSearch({
39012
39805
  }, [showCollapsed, setCollapsed]);
39013
39806
  if (showCollapsed) return /* @__PURE__ */ jsx(Fragment, {});
39014
39807
  return /* @__PURE__ */ jsx("div", { "data-slot": "sidebar-search", className: cn("px-3 py-2", className), children: /* @__PURE__ */ jsxs("div", { className: "relative", children: [
39015
- /* @__PURE__ */ jsx("div", { className: "absolute top-1/2 left-3 -translate-y-1/2 text-neutral-400", children: /* @__PURE__ */ jsx(SearchIcon6, {}) }),
39808
+ /* @__PURE__ */ jsx("div", { className: "absolute start-3 top-1/2 -translate-y-1/2 text-neutral-400", children: /* @__PURE__ */ jsx(SearchIcon6, {}) }),
39016
39809
  /* @__PURE__ */ jsx(
39017
39810
  "input",
39018
39811
  {
@@ -39023,7 +39816,7 @@ function SidebarSearch({
39023
39816
  placeholder: `${placeholder} (${shortcutHint})`,
39024
39817
  "data-testid": testId,
39025
39818
  className: cn(
39026
- "w-full rounded-lg py-2 pr-4 pl-10 text-sm",
39819
+ "w-full rounded-lg py-2 ps-10 pe-4 text-sm",
39027
39820
  "border-transparent bg-neutral-100 dark:bg-neutral-800",
39028
39821
  "text-neutral-900 placeholder-neutral-400 dark:text-white dark:placeholder-neutral-500",
39029
39822
  "focus:ring-primary-500 focus:bg-white focus:ring-2 focus:outline-none dark:focus:bg-neutral-700",
@@ -40768,7 +41561,7 @@ function StepIndicator({
40768
41561
  onClick: () => handleStepClick(index),
40769
41562
  disabled: !clickable,
40770
41563
  "aria-label": `Step ${index + 1}: ${step.label}`,
40771
- className: `${sizes.circle} flex shrink-0 items-center justify-center rounded-full font-medium transition-all duration-200 focus:ring-2 focus:ring-offset-2 focus:outline-none dark:focus:ring-offset-neutral-900 ${clickable ? "cursor-pointer" : "cursor-default"} ${step.hasError ? "bg-red-100 text-red-600 focus:ring-red-500 dark:bg-red-900/30 dark:text-red-400" : status === "completed" ? "bg-primary-800 focus:ring-primary-500 dark:bg-primary-800 text-white" : status === "current" ? "bg-primary-800 ring-primary-600 focus:ring-primary-500 dark:bg-primary-800 dark:ring-primary-500 text-white ring-2 ring-offset-2 dark:ring-offset-neutral-900" : "bg-neutral-200 text-neutral-500 focus:ring-neutral-400 dark:bg-neutral-700 dark:text-neutral-300"}`.trim(),
41564
+ className: `${sizes.circle} relative z-10 flex shrink-0 items-center justify-center rounded-full font-medium transition-all duration-200 focus:ring-2 focus:ring-offset-2 focus:outline-none dark:focus:ring-offset-neutral-900 ${clickable ? "cursor-pointer" : "cursor-default"} ${step.hasError ? "bg-red-100 text-red-600 focus:ring-red-500 dark:bg-red-900/30 dark:text-red-400" : status === "completed" ? "bg-primary-800 focus:ring-primary-500 dark:bg-primary-800 text-white" : status === "current" ? "bg-primary-800 ring-primary-600 focus:ring-primary-500 dark:bg-primary-800 dark:ring-primary-500 text-white ring-2 ring-offset-2 dark:ring-offset-neutral-900" : "bg-neutral-200 text-neutral-500 focus:ring-neutral-400 dark:bg-neutral-700 dark:text-neutral-300"}`.trim(),
40772
41565
  "aria-current": status === "current" ? "step" : void 0,
40773
41566
  children: step.hasError ? /* @__PURE__ */ jsx(ErrorIcon, { className: "h-4 w-4" }) : status === "completed" ? step.icon || /* @__PURE__ */ jsx(CheckIcon5, { className: "h-4 w-4" }) : step.icon || /* @__PURE__ */ jsx(
40774
41567
  "span",
@@ -42621,6 +43414,6 @@ function WebsiteInputGroup({
42621
43414
  }
42622
43415
  WebsiteInputGroup.displayName = "WebsiteInputGroup";
42623
43416
 
42624
- export { AIChat, AIChatModal, AIChatTrigger, AIReconciliationPanel, AccessDeniedPage, ActionButton2 as ActionButton, ActionButtonsBar, ActiveFilters, AddContactModal, AddServiceCard, AdditionalFields, Address, AddressCard, AddressCompact, AddressDisplay, AddressForm, AddressInline, AppHeader, AppHeaderActions, AppHeaderBrand, AppHeaderDivider, AppHeaderIconButton, AppHeaderSearch, AppHeaderSection, AppHeaderTitle, AppHeaderUserMenu, Assessment, AuthButtons, AuthDialog, BookAppointmentButton, BookingDialog, BusinessHours, BusinessHoursEditor, CHANGE_TYPE_LABELS, CONCERN_STATUS_LABELS, CSVColumnMapper, CSVFileUpload, CardSkeleton, CheckrIntegration, ClaimListingButton, ClaimProviderForm, CodingChips, CommandPalette, CommandPaletteProvider, CommandPaletteTrigger, CompactCookieBanner, CompactFilterBar, CompactHeader, CompactHours, CompactProviderHeader, ConditionEditor, ConnectionStatusBadge, ConnectionStatusBar, ConnectionStatusOverlay, ConsentSwitch, CookieConsentBanner, CopyrightText, CountBadge, CreateInvoiceModal, CreateReferralModal, DEFAULT_ERROR_CONFIGS, DEFAULT_LANGUAGES, DEFAULT_RADIUS_OPTIONS, DEFAULT_SOCIAL_PROVIDERS, DOTBadge, DashboardWidget, DashboardWidgetActions, DashboardWidgetDataCards, DashboardWidgetInfo, DashboardWidgetTable, DateRangeFilter, DateRangePicker, DialogOverlay, DisclaimerText, DocumentDetectionOverlay, DocumentScanner, DropZone, DropzoneOverlay, EditUserRoleModal, EmployeeForm, EmployeeProfileCard, EmployerContactCard, EmployerList, EmployerPricingCard, EmployerServiceModal, EmployerView, ErrorPage, FileManager, FilePreview, FloatingAIChat, FloatingInput, FooterLinkSection, SocialMediaLinks2 as FooterSocialLinks, HRISProviderSelector, HandsFreeChat, HealthSurveillance, HelpSupportPanel, HeroSearchBar, HeyOzwell, HeyOzwellToggle, HoursSummary, ImagingOrderEditor, InlineBookingForm, InventoryManager, InviteUserModal, InvoiceList, InvoicePaymentPage, InvoiceView, LabOrderEditor, LanguageSelector, LanguageSelectorInline, LanguageSelectorNative, LegalLinks, LoadingBar, LoadingDots, LoadingOverlay, LoadingPage, LoadingSkeleton, MODEL_MANIFEST, MaintenancePage, MobileBackButton, MobileMenuButton, MobileMenuPanel, ModelInfoList, NavLinks, NewsletterForm, NotFoundPage, NotificationCenter, ORDER_TYPE_META, ORDER_TYPE_SEARCH_DOMAINS, OfflinePage, OnboardingCompletion, OnboardingStepQuestion, OnboardingWizard, OpenStatusBadge, OrderCard, OrderConfirmation, OrderConfirmationWizard, OrderDetailSidebar, OrderEditor, OrderList, OrderLookupForm, OrderSidebar, OrderSidebarTabs, OzwellSettingsMenu, PageHeader, PatientHeader, PaymentHistoryTable, PaymentMethodBank, PaymentMethodCard, PaymentMethodList, PendingClaimsTable, PermissionsEditor, PresentingProblems, ProblemList, ProcedureOrderEditor, ProductVersion, ProductVersionBadge, Breadcrumb2 as ProviderBreadcrumb, ProviderCard, ProviderCardGrid, ProviderCardSkeleton, ProviderDetailHeader, ProviderDetailHeaderSkeleton, ProviderLogo2 as ProviderLogo, ProviderOverview, ProviderSearchBar, ProviderSearchFilters, ProviderSelector, ProviderSettings, SocialMediaLinks as ProviderSocialLinks, ProviderUsersTable, QuickBookCard, QuickLinksCard, RELEVANCE_LABELS, RecurringServiceAddCard, RecurringServiceCard, RecurringServiceGrid, RecurringServiceSetupModal, ReferralEditor, RejectionModal, ReportDashboard, ReportDatePicker, ReportLink, ReportTimeRange, ResultsEntryCard, ResultsEntryForm, ResultsEntryModal, SSOConfigForm, ScheduleCalendar, SearchResultsMessage, SelectedServicesBadges, ServerErrorPage, ServiceAccordion, ServiceBadge, ServiceBadgeGroup, ServiceCard, ServiceCategoryBadge, ServiceGeneralSettings, ServiceGrid, ServiceLink, ServiceList, ServiceMultiSelect, ServicePicker, ServicePricingManager, ServiceSelect, ServiceShippingSettings, ServiceTagCloud, ServiceTagCloudBadges, SetupServiceModal, Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarMobileToggle, SidebarNav, SidebarNavGroup, SidebarNavItem, SidebarProvider, SidebarSearch, SidebarToggle, SimpleFooter, SiteFooter, SiteHeader, SiteLogo, StepIndicator, StripeBadge, StripeSecureBadge, SuggestedActions, TableOfContents, TimelineEventList, TimelineProgress, Toast, ToastContainer, ToastProvider, UncertaintyBadge, UpdateAvailableOverlay, UserMenu, VerifiedBadge2 as VerifiedBadge, VisitScribe, VoiceManager, VoiceSetup, WEBSITE_TYPES, WebChartReportViewer, WebcamModal, WebsiteInput, WebsiteInputGroup, askOzwell, askOzwellStream, attributeSegments, calculateDateRange, centroid, chime, clearVoiceprints, clearWhatPrints, clusterEmbeddings, concernGroupKey, concernHistoryContent, cosine, countBadgeVariants, countChipVariants, create24HourSchedule, createDefaultSchedule, createWeekdaySchedule, currentAssertion, decodeTo16kMono, defaultOrderTabs, defaultReconciliationIsEqual, endsWithDone, formatAddressLines, formatAddressSingleLine, formatCityState, formatCityStateZip, generateId, getDefaultPresets, getDictationLoad, getExtendedPresets, getGoogleMapsSearchUrl, getGoogleMapsUrl, getOzwellConfig, getVoiceprints, getWakeWarm, inferSpeakerRoles, isConditionCodetype, isOzwellConfigured, isValidUrl, isWhisperLoaded, labelClusters, loadWhatPrints, medicationToOrder, mergeTurns, openRollingRecorder, orderToMedication, orderTypeForCodetype, panelVariants as reconciliationPanelVariants, saveWhatPrints, setVoiceprints, stripStopPhrase, subscribeDictationLoad, subscribeWakeWarm, toOzwellMessages, transcribeBlob, transcribeGate, transcribeSamples, transcribeSegments, transcribeServer, trimTrailingStopPhrase, useCamera, useCommandPalette, useConnectionStatus, useCookieConsent, useDiarization, useDocumentDetection, useDropzone, useFileUpload, useHeyOzwell, useSidebar, useSpeakerVerify, useToast, useVisitScribe, useVoiceSetup, useWakeWord, warmStopGate, warmWakeModels, warmWhisper, widgetVariants };
43417
+ export { AIChat, AIChatModal, AIChatTrigger, AIReconciliationPanel, AccessDeniedPage, ActionButton2 as ActionButton, ActionButtonsBar, ActiveFilters, AddContactModal, AddServiceCard, AdditionalFields, Address, AddressCard, AddressCompact, AddressDisplay, AddressForm, AddressInline, AppHeader, AppHeaderActions, AppHeaderBrand, AppHeaderDivider, AppHeaderIconButton, AppHeaderSearch, AppHeaderSection, AppHeaderTitle, AppHeaderUserMenu, Assessment, AuthButtons, AuthDialog, BookAppointmentButton, BookingDialog, BusinessHours, BusinessHoursEditor, CHANGE_TYPE_LABELS, CONCERN_STATUS_LABELS, CSVColumnMapper, CSVFileUpload, CardSkeleton, CheckrIntegration, ClaimListingButton, ClaimProviderForm, CodingChips, CommandPalette, CommandPaletteProvider, CommandPaletteTrigger, CompactCookieBanner, CompactFilterBar, CompactHeader, CompactHours, CompactProviderHeader, ComposerModelSelector, ConditionEditor, ConnectionStatusBadge, ConnectionStatusBar, ConnectionStatusOverlay, ConsentSwitch, CookieConsentBanner, CopyrightText, CountBadge, CreateInvoiceModal, CreateReferralModal, DEFAULT_ERROR_CONFIGS, DEFAULT_LANGUAGES, DEFAULT_RADIUS_OPTIONS, DEFAULT_SOCIAL_PROVIDERS, DOTBadge, DashboardWidget, DashboardWidgetActions, DashboardWidgetDataCards, DashboardWidgetInfo, DashboardWidgetTable, DateRangeFilter, DateRangePicker, DialogOverlay, DisclaimerText, DocumentDetectionOverlay, DocumentScanner, DropZone, DropzoneOverlay, EditUserRoleModal, EmployeeForm, EmployeeProfileCard, EmployerContactCard, EmployerList, EmployerPricingCard, EmployerServiceModal, EmployerView, ErrorPage, FileManager, FilePreview, FloatingAIChat, FloatingInput, FooterLinkSection, SocialMediaLinks2 as FooterSocialLinks, HRISProviderSelector, HandsFreeChat, HealthSurveillance, HelpSupportPanel, HeroSearchBar, HeyOzwell, HeyOzwellToggle, HoursSummary, ImagingOrderEditor, InlineBookingForm, InventoryManager, InviteUserModal, InvoiceList, InvoicePaymentPage, InvoiceView, LabOrderEditor, LanguageSelector, LanguageSelectorInline, LanguageSelectorNative, LegalLinks, LoadingBar, LoadingDots, LoadingOverlay, LoadingPage, LoadingSkeleton, MODEL_MANIFEST, MaintenancePage, MobileBackButton, MobileMenuButton, MobileMenuPanel, ModelInfoList, NavLinks, NewsletterForm, NotFoundPage, NotificationCenter, ORDER_TYPE_META, ORDER_TYPE_SEARCH_DOMAINS, OfflinePage, OnboardingCompletion, OnboardingStepQuestion, OnboardingWizard, OpenStatusBadge, OrderCard, OrderConfirmation, OrderConfirmationWizard, OrderDetailSidebar, OrderEditor, OrderList, OrderLookupForm, OrderSidebar, OrderSidebarTabs, OzwellSettingsMenu, PageHeader, PatientHeader, PaymentHistoryTable, PaymentMethodBank, PaymentMethodCard, PaymentMethodList, PendingClaimsTable, PermissionsEditor, PillSelect, PresentingProblems, ProblemList, ProcedureOrderEditor, ProductVersion, ProductVersionBadge, Breadcrumb2 as ProviderBreadcrumb, ProviderCard, ProviderCardGrid, ProviderCardSkeleton, ProviderDetailHeader, ProviderDetailHeaderSkeleton, ProviderLogo2 as ProviderLogo, ProviderOverview, ProviderSearchBar, ProviderSearchFilters, ProviderSelector, ProviderSettings, SocialMediaLinks as ProviderSocialLinks, ProviderUsersTable, QuickBookCard, QuickLinksCard, RELEVANCE_LABELS, RecurringServiceAddCard, RecurringServiceCard, RecurringServiceGrid, RecurringServiceSetupModal, ReferralEditor, RejectionModal, ReportDashboard, ReportDatePicker, ReportLink, ReportTimeRange, ResultsEntryCard, ResultsEntryForm, ResultsEntryModal, SSOConfigForm, ScheduleCalendar, SearchResultsMessage, SelectedServicesBadges, ServerErrorPage, ServiceAccordion, ServiceBadge, ServiceBadgeGroup, ServiceCard, ServiceCategoryBadge, ServiceGeneralSettings, ServiceGrid, ServiceLink, ServiceList, ServiceMultiSelect, ServicePicker, ServicePricingManager, ServiceSelect, ServiceShippingSettings, ServiceTagCloud, ServiceTagCloudBadges, SetupServiceModal, Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarMobileToggle, SidebarNav, SidebarNavGroup, SidebarNavItem, SidebarProvider, SidebarSearch, SidebarToggle, SimpleFooter, SiteFooter, SiteHeader, SiteLogo, StepIndicator, StripeBadge, StripeSecureBadge, SuggestedActions, TableOfContents, TimelineEventList, TimelineProgress, Toast, ToastContainer, ToastProvider, UncertaintyBadge, UpdateAvailableOverlay, UserMenu, VerifiedBadge2 as VerifiedBadge, VisitScribe, VoiceManager, VoiceSetup, WEBSITE_TYPES, WebChartReportViewer, WebcamModal, WebsiteInput, WebsiteInputGroup, askOzwell, askOzwellStream, attributeSegments, calculateDateRange, centroid, chime, clearVoiceprints, clearWhatPrints, clusterEmbeddings, concernGroupKey, concernHistoryContent, cosine, countBadgeVariants, countChipVariants, create24HourSchedule, createDefaultSchedule, createWeekdaySchedule, currentAssertion, decodeTo16kMono, defaultOrderTabs, defaultReconciliationIsEqual, endsWithDone, formatAddressLines, formatAddressSingleLine, formatCityState, formatCityStateZip, generateId, getDefaultPresets, getDictationLoad, getExtendedPresets, getGoogleMapsSearchUrl, getGoogleMapsUrl, getOzwellConfig, getVoiceprints, getWakeWarm, inferSpeakerRoles, isConditionCodetype, isOzwellConfigured, isValidUrl, isWhisperLoaded, labelClusters, loadWhatPrints, medicationToOrder, mergeTurns, openRollingRecorder, orderToMedication, orderTypeForCodetype, panelVariants as reconciliationPanelVariants, saveWhatPrints, setVoiceprints, stripStopPhrase, subscribeDictationLoad, subscribeWakeWarm, toOzwellMessages, transcribeBlob, transcribeGate, transcribeSamples, transcribeSegments, transcribeServer, trimTrailingStopPhrase, useCamera, useCommandPalette, useConnectionStatus, useCookieConsent, useDiarization, useDocumentDetection, useDropzone, useFileUpload, useHeyOzwell, useSidebar, useSpeakerVerify, useToast, useVisitScribe, useVoiceSetup, useWakeWord, warmStopGate, warmWakeModels, warmWhisper, widgetVariants };
42625
43418
  //# sourceMappingURL=index.js.map
42626
43419
  //# sourceMappingURL=index.js.map