@mieweb/ui 0.11.0-dev.44 → 0.11.0-dev.45
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.
- package/dist/ag-grid.cjs +2 -2
- package/dist/ag-grid.js +1 -1
- package/dist/{chunk-AHYDJN4H.cjs → chunk-2XHPPOXY.cjs} +32 -32
- package/dist/{chunk-AHYDJN4H.cjs.map → chunk-2XHPPOXY.cjs.map} +1 -1
- package/dist/{chunk-3IKIRGHI.cjs → chunk-3H6BQV2D.cjs} +6 -6
- package/dist/{chunk-3IKIRGHI.cjs.map → chunk-3H6BQV2D.cjs.map} +1 -1
- package/dist/{chunk-IIV5GNSK.cjs → chunk-3PT4B4JT.cjs} +4 -4
- package/dist/{chunk-IIV5GNSK.cjs.map → chunk-3PT4B4JT.cjs.map} +1 -1
- package/dist/{chunk-GLG6UE2H.cjs → chunk-3SEQVGLH.cjs} +4 -4
- package/dist/{chunk-GLG6UE2H.cjs.map → chunk-3SEQVGLH.cjs.map} +1 -1
- package/dist/{chunk-JUY2JLFL.js → chunk-3XDU7XIC.js} +3 -3
- package/dist/{chunk-JUY2JLFL.js.map → chunk-3XDU7XIC.js.map} +1 -1
- package/dist/{chunk-LQ22CY7X.js → chunk-46ZUORUE.js} +5 -5
- package/dist/{chunk-LQ22CY7X.js.map → chunk-46ZUORUE.js.map} +1 -1
- package/dist/{chunk-CKECOCYJ.js → chunk-4IOIDS2Z.js} +3 -3
- package/dist/{chunk-CKECOCYJ.js.map → chunk-4IOIDS2Z.js.map} +1 -1
- package/dist/{chunk-F7SZSOB3.js → chunk-6PCA5H47.js} +3 -3
- package/dist/{chunk-F7SZSOB3.js.map → chunk-6PCA5H47.js.map} +1 -1
- package/dist/{chunk-ULEX7OOJ.js → chunk-6Y6W5DUY.js} +4 -4
- package/dist/{chunk-ULEX7OOJ.js.map → chunk-6Y6W5DUY.js.map} +1 -1
- package/dist/{chunk-S7AMZ4RD.cjs → chunk-7K6SW4VB.cjs} +4 -4
- package/dist/{chunk-S7AMZ4RD.cjs.map → chunk-7K6SW4VB.cjs.map} +1 -1
- package/dist/{chunk-KY67AMQ5.cjs → chunk-7MF3O3BU.cjs} +4 -4
- package/dist/{chunk-KY67AMQ5.cjs.map → chunk-7MF3O3BU.cjs.map} +1 -1
- package/dist/{chunk-Z3WMDVMR.cjs → chunk-7QNBPB7F.cjs} +9 -5
- package/dist/chunk-7QNBPB7F.cjs.map +1 -0
- package/dist/{chunk-YFWDS6MX.js → chunk-AB24H2RM.js} +3 -3
- package/dist/{chunk-YFWDS6MX.js.map → chunk-AB24H2RM.js.map} +1 -1
- package/dist/{chunk-DIIXY6EB.js → chunk-AQBZEN43.js} +5 -5
- package/dist/{chunk-DIIXY6EB.js.map → chunk-AQBZEN43.js.map} +1 -1
- package/dist/{chunk-2W73UQ3T.js → chunk-BPYI7BDC.js} +3 -3
- package/dist/{chunk-2W73UQ3T.js.map → chunk-BPYI7BDC.js.map} +1 -1
- package/dist/{chunk-7U7SONM5.js → chunk-CVCUQ2MZ.js} +3 -3
- package/dist/{chunk-7U7SONM5.js.map → chunk-CVCUQ2MZ.js.map} +1 -1
- package/dist/{chunk-PWXDRFJL.cjs → chunk-DHEOWRIE.cjs} +6 -6
- package/dist/{chunk-PWXDRFJL.cjs.map → chunk-DHEOWRIE.cjs.map} +1 -1
- package/dist/{chunk-OYUIEJPN.js → chunk-GTRYDFMT.js} +38 -10
- package/dist/chunk-GTRYDFMT.js.map +1 -0
- package/dist/{chunk-2FZYZ4HT.cjs → chunk-HDSYYQYM.cjs} +4 -4
- package/dist/{chunk-2FZYZ4HT.cjs.map → chunk-HDSYYQYM.cjs.map} +1 -1
- package/dist/{chunk-HH7PWD5I.cjs → chunk-HOE2U27V.cjs} +21 -21
- package/dist/{chunk-HH7PWD5I.cjs.map → chunk-HOE2U27V.cjs.map} +1 -1
- package/dist/{chunk-JCIQIR5V.js → chunk-IGUDEWIW.js} +4 -4
- package/dist/{chunk-JCIQIR5V.js.map → chunk-IGUDEWIW.js.map} +1 -1
- package/dist/{chunk-2KK4WZ7Y.cjs → chunk-IKHK4GTF.cjs} +4 -4
- package/dist/{chunk-2KK4WZ7Y.cjs.map → chunk-IKHK4GTF.cjs.map} +1 -1
- package/dist/{chunk-YVKBXNPK.js → chunk-JBNQ2L3K.js} +10 -6
- package/dist/chunk-JBNQ2L3K.js.map +1 -0
- package/dist/{chunk-GU6TPVXF.cjs → chunk-JK2IWOI7.cjs} +6 -6
- package/dist/{chunk-GU6TPVXF.cjs.map → chunk-JK2IWOI7.cjs.map} +1 -1
- package/dist/{chunk-TZKBW4GA.cjs → chunk-K76UNS22.cjs} +6 -6
- package/dist/{chunk-TZKBW4GA.cjs.map → chunk-K76UNS22.cjs.map} +1 -1
- package/dist/{chunk-DAAJ3B2T.js → chunk-KP72MDFB.js} +4 -4
- package/dist/{chunk-DAAJ3B2T.js.map → chunk-KP72MDFB.js.map} +1 -1
- package/dist/{chunk-MLCIINXT.js → chunk-LBUXS6FJ.js} +4 -4
- package/dist/{chunk-MLCIINXT.js.map → chunk-LBUXS6FJ.js.map} +1 -1
- package/dist/{chunk-GG3IK5TL.cjs → chunk-MQK2D6I6.cjs} +9 -9
- package/dist/{chunk-GG3IK5TL.cjs.map → chunk-MQK2D6I6.cjs.map} +1 -1
- package/dist/{chunk-IPHJQ6CF.js → chunk-MQSGJB2B.js} +5 -5
- package/dist/{chunk-IPHJQ6CF.js.map → chunk-MQSGJB2B.js.map} +1 -1
- package/dist/{chunk-2GBVJHWN.cjs → chunk-NH5JOZLG.cjs} +13 -13
- package/dist/{chunk-2GBVJHWN.cjs.map → chunk-NH5JOZLG.cjs.map} +1 -1
- package/dist/{chunk-NWU634SO.cjs → chunk-O2EAHOXM.cjs} +4 -4
- package/dist/{chunk-NWU634SO.cjs.map → chunk-O2EAHOXM.cjs.map} +1 -1
- package/dist/{chunk-JUYBJLPI.cjs → chunk-O7Y56J4R.cjs} +4 -4
- package/dist/{chunk-JUYBJLPI.cjs.map → chunk-O7Y56J4R.cjs.map} +1 -1
- package/dist/{chunk-EAAVFTKI.cjs → chunk-OJ2NCQ2R.cjs} +14 -14
- package/dist/{chunk-EAAVFTKI.cjs.map → chunk-OJ2NCQ2R.cjs.map} +1 -1
- package/dist/{chunk-GLRKXJCR.js → chunk-OX32ITWC.js} +3 -3
- package/dist/{chunk-GLRKXJCR.js.map → chunk-OX32ITWC.js.map} +1 -1
- package/dist/{chunk-L4APW65W.cjs → chunk-PJ4XEBMU.cjs} +4 -4
- package/dist/{chunk-L4APW65W.cjs.map → chunk-PJ4XEBMU.cjs.map} +1 -1
- package/dist/{chunk-OZKJYLN6.js → chunk-PSCSU63K.js} +3 -3
- package/dist/{chunk-OZKJYLN6.js.map → chunk-PSCSU63K.js.map} +1 -1
- package/dist/{chunk-EI4JU5JF.js → chunk-RKM4VGAN.js} +3 -3
- package/dist/{chunk-EI4JU5JF.js.map → chunk-RKM4VGAN.js.map} +1 -1
- package/dist/{chunk-ME7EVT6F.js → chunk-RYGVILUR.js} +3 -3
- package/dist/{chunk-ME7EVT6F.js.map → chunk-RYGVILUR.js.map} +1 -1
- package/dist/{chunk-EGPDT7SM.js → chunk-S7NJV335.js} +3 -3
- package/dist/{chunk-EGPDT7SM.js.map → chunk-S7NJV335.js.map} +1 -1
- package/dist/{chunk-AHT2HRHC.cjs → chunk-TNRANQVI.cjs} +16 -16
- package/dist/{chunk-AHT2HRHC.cjs.map → chunk-TNRANQVI.cjs.map} +1 -1
- package/dist/{chunk-TERHGQ73.cjs → chunk-U7XWWU5H.cjs} +5 -5
- package/dist/{chunk-TERHGQ73.cjs.map → chunk-U7XWWU5H.cjs.map} +1 -1
- package/dist/{chunk-G35LXI2A.js → chunk-UIFN2LYT.js} +3 -3
- package/dist/{chunk-G35LXI2A.js.map → chunk-UIFN2LYT.js.map} +1 -1
- package/dist/{chunk-L3CAWGBU.js → chunk-UQAWXY6R.js} +3 -3
- package/dist/{chunk-L3CAWGBU.js.map → chunk-UQAWXY6R.js.map} +1 -1
- package/dist/{chunk-ZULFKL3C.js → chunk-VOPRL4RF.js} +7 -7
- package/dist/{chunk-ZULFKL3C.js.map → chunk-VOPRL4RF.js.map} +1 -1
- package/dist/{chunk-KB2PLV5Q.js → chunk-VQGRMCVT.js} +4 -4
- package/dist/{chunk-KB2PLV5Q.js.map → chunk-VQGRMCVT.js.map} +1 -1
- package/dist/{chunk-MD55WRGN.cjs → chunk-X6THHGTZ.cjs} +37 -37
- package/dist/{chunk-MD55WRGN.cjs.map → chunk-X6THHGTZ.cjs.map} +1 -1
- package/dist/{chunk-Q6QLGCL7.cjs → chunk-XCCH5KHW.cjs} +9 -9
- package/dist/{chunk-Q6QLGCL7.cjs.map → chunk-XCCH5KHW.cjs.map} +1 -1
- package/dist/{chunk-KQXD6BFO.cjs → chunk-XM3D4KAF.cjs} +9 -9
- package/dist/{chunk-KQXD6BFO.cjs.map → chunk-XM3D4KAF.cjs.map} +1 -1
- package/dist/{chunk-PINIBEIU.cjs → chunk-XRXOGMMG.cjs} +39 -11
- package/dist/chunk-XRXOGMMG.cjs.map +1 -0
- package/dist/{chunk-XPWFIDZM.cjs → chunk-XU3X2AUL.cjs} +4 -4
- package/dist/{chunk-XPWFIDZM.cjs.map → chunk-XU3X2AUL.cjs.map} +1 -1
- package/dist/{chunk-3A4N5E6P.js → chunk-XZ65FX6T.js} +3 -3
- package/dist/{chunk-3A4N5E6P.js.map → chunk-XZ65FX6T.js.map} +1 -1
- package/dist/{chunk-CRR7AE5D.js → chunk-Z6I4XFPC.js} +3 -3
- package/dist/{chunk-CRR7AE5D.js.map → chunk-Z6I4XFPC.js.map} +1 -1
- package/dist/{chunk-LTCHD3K5.cjs → chunk-Z7ZOSENN.cjs} +5 -5
- package/dist/{chunk-LTCHD3K5.cjs.map → chunk-Z7ZOSENN.cjs.map} +1 -1
- package/dist/{chunk-NZUQL42A.cjs → chunk-ZDA6FEKA.cjs} +5 -5
- package/dist/{chunk-NZUQL42A.cjs.map → chunk-ZDA6FEKA.cjs.map} +1 -1
- package/dist/{chunk-UY2EZYIC.js → chunk-ZSBG6C3P.js} +3 -3
- package/dist/{chunk-UY2EZYIC.js.map → chunk-ZSBG6C3P.js.map} +1 -1
- package/dist/{chunk-KAQNYX7B.js → chunk-ZVRJVUFX.js} +3 -3
- package/dist/{chunk-KAQNYX7B.js.map → chunk-ZVRJVUFX.js.map} +1 -1
- package/dist/components/AudioPlayer/index.cjs +7 -7
- package/dist/components/AudioPlayer/index.js +2 -2
- package/dist/components/BoardView/index.cjs +5 -5
- package/dist/components/BoardView/index.js +2 -2
- package/dist/components/CollabStatus/index.cjs +5 -5
- package/dist/components/CollabStatus/index.js +2 -2
- package/dist/components/Dropdown/index.cjs +9 -9
- package/dist/components/Dropdown/index.d.cts +6 -1
- package/dist/components/Dropdown/index.d.ts +6 -1
- package/dist/components/Dropdown/index.js +2 -2
- package/dist/components/EmailEditor/index.cjs +16 -16
- package/dist/components/EmailEditor/index.js +7 -7
- package/dist/components/MediaEditor/index.cjs +10 -10
- package/dist/components/MediaEditor/index.js +5 -5
- package/dist/components/MediaFeed/index.cjs +6 -6
- package/dist/components/MediaFeed/index.js +5 -5
- package/dist/components/MediaPlayer/index.cjs +8 -8
- package/dist/components/MediaPlayer/index.js +4 -4
- package/dist/components/MegaMenu/index.cjs +5 -5
- package/dist/components/MegaMenu/index.js +2 -2
- package/dist/components/RecordHeader/index.cjs +5 -5
- package/dist/components/RecordHeader/index.js +3 -3
- package/dist/components/RecordLayout/index.cjs +5 -5
- package/dist/components/RecordLayout/index.js +3 -3
- package/dist/components/RichTextEditor/index.cjs +6 -6
- package/dist/components/RichTextEditor/index.js +3 -3
- package/dist/components/Slider/index.cjs +6 -6
- package/dist/components/Slider/index.js +2 -2
- package/dist/components/SliderCalculator/index.cjs +5 -5
- package/dist/components/SliderCalculator/index.js +3 -3
- package/dist/components/SuperChat/index.cjs +23 -23
- package/dist/components/SuperChat/index.js +8 -8
- package/dist/components/SuperChat/plugins/index.cjs +5 -5
- package/dist/components/SuperChat/plugins/index.js +4 -4
- package/dist/components/Tabs/index.cjs +8 -8
- package/dist/components/Tabs/index.js +2 -2
- package/dist/components/Textarea/index.cjs +8 -8
- package/dist/components/Textarea/index.js +5 -5
- package/dist/components/ThemeProvider/index.cjs +9 -9
- package/dist/components/ThemeProvider/index.js +3 -3
- package/dist/components/Tooltip/index.cjs +3 -3
- package/dist/components/Tooltip/index.js +2 -2
- package/dist/components/ViewSet/index.cjs +5 -5
- package/dist/components/ViewSet/index.js +4 -4
- package/dist/components/ViewSwitcher/index.cjs +4 -4
- package/dist/components/ViewSwitcher/index.js +2 -2
- package/dist/deck.cjs +3 -3
- package/dist/deck.js +1 -1
- package/dist/esheet.cjs +107 -107
- package/dist/esheet.js +10 -10
- package/dist/hooks/index.cjs +5 -5
- package/dist/hooks/index.js +1 -1
- package/dist/index.cjs +284 -284
- package/dist/index.d.cts +6 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.js +40 -40
- package/dist/kerebron.cjs +6 -6
- package/dist/kerebron.js +4 -4
- package/dist/{model-5PB6KNYH.cjs → model-2TISYEYF.cjs} +20 -20
- package/dist/{model-5PB6KNYH.cjs.map → model-2TISYEYF.cjs.map} +1 -1
- package/dist/{model-OGWTZEXR.js → model-BCS5BUK3.js} +6 -6
- package/dist/{model-OGWTZEXR.js.map → model-BCS5BUK3.js.map} +1 -1
- package/dist/org-chart.cjs +2 -2
- package/dist/org-chart.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-OYUIEJPN.js.map +0 -1
- package/dist/chunk-PINIBEIU.cjs.map +0 -1
- package/dist/chunk-YVKBXNPK.js.map +0 -1
- package/dist/chunk-Z3WMDVMR.cjs.map +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -8285,7 +8285,12 @@ interface DropdownProps {
|
|
|
8285
8285
|
open?: boolean;
|
|
8286
8286
|
/** Callback when open state changes */
|
|
8287
8287
|
onOpenChange?: (open: boolean) => void;
|
|
8288
|
-
/**
|
|
8288
|
+
/**
|
|
8289
|
+
* Placement of the dropdown. On the vertical placements, `-start`/`-end`
|
|
8290
|
+
* are logical: they resolve against the trigger's computed direction, so
|
|
8291
|
+
* `bottom-start` aligns to the right edge inside a `dir="rtl"` subtree.
|
|
8292
|
+
* `left*`/`right*` are physical sides.
|
|
8293
|
+
*/
|
|
8289
8294
|
placement?: DropdownPlacement;
|
|
8290
8295
|
/** Additional class name for the dropdown menu */
|
|
8291
8296
|
className?: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -8285,7 +8285,12 @@ interface DropdownProps {
|
|
|
8285
8285
|
open?: boolean;
|
|
8286
8286
|
/** Callback when open state changes */
|
|
8287
8287
|
onOpenChange?: (open: boolean) => void;
|
|
8288
|
-
/**
|
|
8288
|
+
/**
|
|
8289
|
+
* Placement of the dropdown. On the vertical placements, `-start`/`-end`
|
|
8290
|
+
* are logical: they resolve against the trigger's computed direction, so
|
|
8291
|
+
* `bottom-start` aligns to the right edge inside a `dir="rtl"` subtree.
|
|
8292
|
+
* `left*`/`right*` are physical sides.
|
|
8293
|
+
*/
|
|
8289
8294
|
placement?: DropdownPlacement;
|
|
8290
8295
|
/** Additional class name for the dropdown menu */
|
|
8291
8296
|
className?: string;
|
package/dist/index.js
CHANGED
|
@@ -4,8 +4,8 @@ export { askOzwell, askOzwellStream, decodeTo16kMono, endsWithDone, getDictation
|
|
|
4
4
|
import { loadWhatPrints, saveWhatPrints, clearWhatPrints } from './chunk-74ENCTIK.js';
|
|
5
5
|
export { clearVoiceprints, clearWhatPrints, getVoiceprints, loadWhatPrints, saveWhatPrints, setVoiceprints } from './chunk-74ENCTIK.js';
|
|
6
6
|
export { Rating, ReviewCard, defaultRatingLabels, defaultReviewCardLabels } from './chunk-CBBKWRLG.js';
|
|
7
|
-
export { RecordHeader, defaultRecordHeaderLabels } from './chunk-
|
|
8
|
-
export { RecordLayout, defaultRecordLayoutLabels } from './chunk-
|
|
7
|
+
export { RecordHeader, defaultRecordHeaderLabels } from './chunk-ZVRJVUFX.js';
|
|
8
|
+
export { RecordLayout, defaultRecordLayoutLabels } from './chunk-S7NJV335.js';
|
|
9
9
|
export { TagEditor, defaultTagEditorLabels } from './chunk-GJSLKD4Q.js';
|
|
10
10
|
export { UserPicker, defaultUserPickerLabels } from './chunk-SZSRGUVO.js';
|
|
11
11
|
export { brands } from './chunk-J3QEMZCH.js';
|
|
@@ -26,7 +26,7 @@ export { LogoUploader, defaultLogoUploaderLabels } from './chunk-WQHBMZSC.js';
|
|
|
26
26
|
export { PhiMask, defaultPhiMaskLabels } from './chunk-DHGCLPFZ.js';
|
|
27
27
|
export { PropertyList, defaultPropertyListLabels } from './chunk-7HUTR6RX.js';
|
|
28
28
|
export { InlineEdit, defaultInlineEditLabels } from './chunk-M3VPGJMV.js';
|
|
29
|
-
export { ViewSet } from './chunk-
|
|
29
|
+
export { ViewSet } from './chunk-6Y6W5DUY.js';
|
|
30
30
|
export { TranscriptView, formatTimestampMs } from './chunk-LAEIVOIY.js';
|
|
31
31
|
export { PlayButton, VideoCard } from './chunk-43K7OQ3E.js';
|
|
32
32
|
export { VisuallyHidden } from './chunk-H2CIKJQI.js';
|
|
@@ -41,23 +41,23 @@ import { Table, TableHeader, TableRow, TableHead, TableBody, TableCell } from '.
|
|
|
41
41
|
export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow } from './chunk-5ILCNY74.js';
|
|
42
42
|
import { Text } from './chunk-3YSIZ2CK.js';
|
|
43
43
|
export { SmallMuted, Text, textVariants } from './chunk-3YSIZ2CK.js';
|
|
44
|
-
export { ThemeProvider, ThemeProviderContext, ThemeToggle, themeToggleIconVariants, themeToggleVariants, useThemeContext } from './chunk-
|
|
44
|
+
export { ThemeProvider, ThemeProviderContext, ThemeToggle, themeToggleIconVariants, themeToggleVariants, useThemeContext } from './chunk-RKM4VGAN.js';
|
|
45
45
|
export { Toggle, toggleVariants } from './chunk-PTZB2GKL.js';
|
|
46
|
-
export { ViewSwitcher, viewSwitcherVariants } from './chunk-
|
|
46
|
+
export { ViewSwitcher, viewSwitcherVariants } from './chunk-BPYI7BDC.js';
|
|
47
47
|
import { Skeleton } from './chunk-ZIUADGAR.js';
|
|
48
48
|
export { Skeleton, SkeletonCard, SkeletonTable, SkeletonText, skeletonVariants } from './chunk-ZIUADGAR.js';
|
|
49
49
|
export { SourceTip } from './chunk-KFEN2SRZ.js';
|
|
50
50
|
export { Sparkline } from './chunk-CG4ZKJLE.js';
|
|
51
|
-
import { SparklesIcon, RefreshIcon, CloseIcon, JumpToBottomButton, AIMessageDisplay } from './chunk-
|
|
52
|
-
export { AILogoIcon, AIMessageDisplay, AITypingIndicator, ChatBubble, ChevronIcon, CloseIcon, CollapsiblePill, MCPToolCallDisplay, MessageAvatar, RefreshIcon, ResourceLink, SendIcon, SparklesIcon, SpinnerIcon, ToolStatusIcon, getToolIcon } from './chunk-
|
|
53
|
-
import { useTypingEmulation, EmptyState } from './chunk-
|
|
54
|
-
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, useTypingEmulation, useTypingIndicator } from './chunk-
|
|
55
|
-
import { notifyComposerMigrationOnce, ChatComposer, DEFAULT_MAX_FILE_SIZE, DEFAULT_ACCEPTED_FILE_TYPES, ComposerSelector } from './chunk-
|
|
56
|
-
export { AttachmentPicker, AttachmentPreviewItem, CameraButton, ChatComposer, ComposerModelSelector, DragDropZone, generateAttachmentId, getFileType, validateFile } from './chunk-
|
|
51
|
+
import { SparklesIcon, RefreshIcon, CloseIcon, JumpToBottomButton, AIMessageDisplay } from './chunk-UIFN2LYT.js';
|
|
52
|
+
export { AILogoIcon, AIMessageDisplay, AITypingIndicator, ChatBubble, ChevronIcon, CloseIcon, CollapsiblePill, MCPToolCallDisplay, MessageAvatar, RefreshIcon, ResourceLink, SendIcon, SparklesIcon, SpinnerIcon, ToolStatusIcon, getToolIcon } from './chunk-UIFN2LYT.js';
|
|
53
|
+
import { useTypingEmulation, EmptyState } from './chunk-PSCSU63K.js';
|
|
54
|
+
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, useTypingEmulation, useTypingIndicator } from './chunk-PSCSU63K.js';
|
|
55
|
+
import { notifyComposerMigrationOnce, ChatComposer, DEFAULT_MAX_FILE_SIZE, DEFAULT_ACCEPTED_FILE_TYPES, ComposerSelector } from './chunk-KP72MDFB.js';
|
|
56
|
+
export { AttachmentPicker, AttachmentPreviewItem, CameraButton, ChatComposer, ComposerModelSelector, DragDropZone, generateAttachmentId, getFileType, validateFile } from './chunk-KP72MDFB.js';
|
|
57
57
|
export { DateButton, DatePicker, RadioOption, SchedulePicker, TimeButton, TimePicker, dateButtonVariants, radioOptionVariants, timeButtonVariants } from './chunk-23AYDOCH.js';
|
|
58
58
|
export { ScrollArea, scrollAreaVariants } from './chunk-HS25RPDW.js';
|
|
59
59
|
export { SectionSpyNav } from './chunk-CVMD2A3J.js';
|
|
60
|
-
export { AnimatedNumber, SliderCalculator } from './chunk-
|
|
60
|
+
export { AnimatedNumber, SliderCalculator } from './chunk-CVCUQ2MZ.js';
|
|
61
61
|
export { PhoneInput, PhoneInputGroup } from './chunk-QDNHN7R2.js';
|
|
62
62
|
import { Progress } from './chunk-P4E3K3ND.js';
|
|
63
63
|
export { CircularProgress, Progress, circularProgressVariants, progressBarFillVariants, progressBarTrackVariants } from './chunk-P4E3K3ND.js';
|
|
@@ -66,14 +66,14 @@ export { ReadingProgressBar } from './chunk-WKSUL2ZN.js';
|
|
|
66
66
|
export { DictationButton, defaultDictationLabels, useDictation } from './chunk-MZA2LDS4.js';
|
|
67
67
|
import { RecordButton } from './chunk-MQOYDQTF.js';
|
|
68
68
|
export { RecordButton, formatDuration, recordButtonVariants } from './chunk-MQOYDQTF.js';
|
|
69
|
-
export { FillerWordsModal, MediaEditor, SilenceSettingsModal, SpeedMarkerMenu, WordEditorModal } from './chunk-
|
|
70
|
-
export { MediaFeed } from './chunk-
|
|
69
|
+
export { FillerWordsModal, MediaEditor, SilenceSettingsModal, SpeedMarkerMenu, WordEditorModal } from './chunk-46ZUORUE.js';
|
|
70
|
+
export { MediaFeed } from './chunk-3XDU7XIC.js';
|
|
71
71
|
import './chunk-SCGXD334.js';
|
|
72
|
-
export { MediaControls, MediaPlayer, inferMediaKind, mediaPlayerVariants } from './chunk-
|
|
73
|
-
import { Slider } from './chunk-
|
|
74
|
-
export { Slider, sliderRangeVariants, sliderThumbVariants, sliderTrackVariants } from './chunk-
|
|
75
|
-
import { normalizePath, MegaMenuBar } from './chunk-
|
|
76
|
-
export { MegaMenu, MegaMenuBar, normalizePath } from './chunk-
|
|
72
|
+
export { MediaControls, MediaPlayer, inferMediaKind, mediaPlayerVariants } from './chunk-IGUDEWIW.js';
|
|
73
|
+
import { Slider } from './chunk-Z6I4XFPC.js';
|
|
74
|
+
export { Slider, sliderRangeVariants, sliderThumbVariants, sliderTrackVariants } from './chunk-Z6I4XFPC.js';
|
|
75
|
+
import { normalizePath, MegaMenuBar } from './chunk-OX32ITWC.js';
|
|
76
|
+
export { MegaMenu, MegaMenuBar, normalizePath } from './chunk-OX32ITWC.js';
|
|
77
77
|
export { OrbitRing } from './chunk-SUS3WFY3.js';
|
|
78
78
|
export { RadialExplorer } from './chunk-IGRHPZOJ.js';
|
|
79
79
|
export { Pagination, SimplePagination, paginationButtonVariants } from './chunk-PFKRHNYV.js';
|
|
@@ -93,10 +93,10 @@ import { CountryDropdownBase } from './chunk-OTIKWEFZ.js';
|
|
|
93
93
|
export { CountryCodeDropdown, formatE164, validatePhoneNumber } from './chunk-OTIKWEFZ.js';
|
|
94
94
|
export { CustomizableDashboard, DashboardCustomizePanel, consolidateColumns, mergeColumnOrder, moveAcrossColumns, reorderOnDrop, requiredColumns } from './chunk-OWYWRBED.js';
|
|
95
95
|
export { Sheet, SheetBody, SheetClose, SheetDescription, SheetFooter, SheetHeader, SheetTitle, sheetContentVariants, sheetOverlayVariants } from './chunk-LMBXJZLG.js';
|
|
96
|
-
export { EMAIL_BLOCK_TYPES, EmailEditor, createDefaultDesignSettings, createEmailBlock, createEmailHtmlSanitizer, createEmptyEmailContentTree, defaultEmailEditorLabels, generateEmailBlockId, renderEmailMjml } from './chunk-
|
|
96
|
+
export { EMAIL_BLOCK_TYPES, EmailEditor, createDefaultDesignSettings, createEmailBlock, createEmailHtmlSanitizer, createEmptyEmailContentTree, defaultEmailEditorLabels, generateEmailBlockId, renderEmailMjml } from './chunk-AQBZEN43.js';
|
|
97
97
|
import './chunk-XBAAHOCP.js';
|
|
98
|
-
import { Tabs, TabsList, TabsTrigger, TabsContent } from './chunk-
|
|
99
|
-
export { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants, tabsTriggerVariants } from './chunk-
|
|
98
|
+
import { Tabs, TabsList, TabsTrigger, TabsContent } from './chunk-RYGVILUR.js';
|
|
99
|
+
export { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants, tabsTriggerVariants } from './chunk-RYGVILUR.js';
|
|
100
100
|
import { Switch, switchThumbVariants, switchTrackVariants } from './chunk-AQ564XO7.js';
|
|
101
101
|
export { Switch, switchThumbVariants, switchTrackVariants } from './chunk-AQ564XO7.js';
|
|
102
102
|
export { FilterSummaryBar } from './chunk-6SCQ7FKT.js';
|
|
@@ -106,17 +106,17 @@ import './chunk-OF7NTZ2I.js';
|
|
|
106
106
|
export { CalendarView, defaultCalendarLabels } from './chunk-JATLYCS4.js';
|
|
107
107
|
import './chunk-XXA4NZUC.js';
|
|
108
108
|
export { ClampedText } from './chunk-VU3ZMJBN.js';
|
|
109
|
-
export { CollabStatus, defaultCollabStatusLabels, useYjsCollabStatus } from './chunk-
|
|
109
|
+
export { CollabStatus, defaultCollabStatusLabels, useYjsCollabStatus } from './chunk-ZSBG6C3P.js';
|
|
110
110
|
export { Collapsible, CollapsibleContent, CollapsibleTrigger } from './chunk-VSRO4PAI.js';
|
|
111
111
|
import { Alert, AlertTitle, AlertDescription } from './chunk-3JWAABYI.js';
|
|
112
112
|
export { Alert, AlertDescription, AlertTitle, alertVariants } from './chunk-3JWAABYI.js';
|
|
113
113
|
import { AlertDialog } from './chunk-MAEANAAJ.js';
|
|
114
114
|
export { AlertDialog, ConfirmDialogProvider, defaultAlertDialogLabels, useConfirm } from './chunk-MAEANAAJ.js';
|
|
115
115
|
import './chunk-G4VQEQGW.js';
|
|
116
|
-
export { AudioPlayer, ProgressBar, audioPlayerVariants, formatTime as formatAudioTime, playButtonVariants } from './chunk-
|
|
116
|
+
export { AudioPlayer, ProgressBar, audioPlayerVariants, formatTime as formatAudioTime, playButtonVariants } from './chunk-4IOIDS2Z.js';
|
|
117
117
|
export { AudioRecorder, audioRecorderVariants, controlButtonVariants, formatTime, waveformContainerVariants } from './chunk-2DW4PUJD.js';
|
|
118
118
|
export { Autocomplete } from './chunk-UBOVDAD7.js';
|
|
119
|
-
export { BoardView, cardVariants as boardViewCardVariants, defaultBoardLabels } from './chunk-
|
|
119
|
+
export { BoardView, cardVariants as boardViewCardVariants, defaultBoardLabels } from './chunk-6PCA5H47.js';
|
|
120
120
|
export { BenchmarkTableSection, ComparisonSection, CtaSection, FaqSection, FeatureGridSection, HeroSection, LandingPage, LeadFormSection, LinkGroupsSection, LogoCloudSection, MetricListSection, PdfEmbedSection, PricingSection, ProcessStepsSection, RankedListSection, ReportByline, ReportLegend, ReportMethodology, ResourceCardsSection, SplitContentSection, StatsSection, TestimonialSection, TileCartogramSection, VideoSection, defaultLeadFormFields, landingPresets, quartileBuckets, usStateTiles, validateLandingPage } from './chunk-YFZNSP7F.js';
|
|
121
121
|
import './chunk-IQ4KQJAO.js';
|
|
122
122
|
export { MetricStatusBadge, SectionHeading, SectionShell, TemplateIcon, defaultMetricStatusLabels, templateIcons } from './chunk-JNSSA4YN.js';
|
|
@@ -147,12 +147,12 @@ import { Spinner, SpinnerWithLabel } from './chunk-UA7E7PDS.js';
|
|
|
147
147
|
export { FullPageSpinner, Spinner, SpinnerWithLabel, spinnerVariants } from './chunk-UA7E7PDS.js';
|
|
148
148
|
import { evaluateDue, completedKeys, normalizeOrders } from './chunk-Y5KEFV5O.js';
|
|
149
149
|
export { buildChartOrderRows, buildEncounterOrderRows, dueForOrder, evaluateDue, evaluateProgram, isApplicable } from './chunk-Y5KEFV5O.js';
|
|
150
|
-
import { parseSig, labelToMedicationFields, MedicationEditor, useCodeLookupConfig } from './chunk-
|
|
151
|
-
export { ALLERGY_TYPE_LABELS, AllergyList, AllergyManager, Assessment, CodeLookupProvider, ConditionEditor, MEDICATION_STATUS_LABELS, MedicationEditor, MedicationList, MedicationReconciliation, ORDER_TYPE_META, ORDER_TYPE_SEARCH_DOMAINS, doseFormToQuantityUnit, isConditionCodetype, labelToMedicationFields, lookupToMedicationFields, normalizeConditionCodingSystem, orderTypeForCodetype, parseMedicationLabel, parseSig, useCodeLookupConfig } from './chunk-
|
|
152
|
-
import { currentAssertion, CodingChips, toolbarKeyNav } from './chunk-
|
|
153
|
-
export { CHANGE_TYPE_LABELS, CONCERN_STATUS_LABELS, CodingChips, ProblemList, RowActionToolbar, RowIconButton, UncertaintyBadge, concernGroupKey, concernHistoryContent, currentAssertion, toolbarKeyNav } from './chunk-
|
|
154
|
-
import { Tooltip } from './chunk-
|
|
155
|
-
export { Tooltip } from './chunk-
|
|
150
|
+
import { parseSig, labelToMedicationFields, MedicationEditor, useCodeLookupConfig } from './chunk-VOPRL4RF.js';
|
|
151
|
+
export { ALLERGY_TYPE_LABELS, AllergyList, AllergyManager, Assessment, CodeLookupProvider, ConditionEditor, MEDICATION_STATUS_LABELS, MedicationEditor, MedicationList, MedicationReconciliation, ORDER_TYPE_META, ORDER_TYPE_SEARCH_DOMAINS, doseFormToQuantityUnit, isConditionCodetype, labelToMedicationFields, lookupToMedicationFields, normalizeConditionCodingSystem, orderTypeForCodetype, parseMedicationLabel, parseSig, useCodeLookupConfig } from './chunk-VOPRL4RF.js';
|
|
152
|
+
import { currentAssertion, CodingChips, toolbarKeyNav } from './chunk-VQGRMCVT.js';
|
|
153
|
+
export { CHANGE_TYPE_LABELS, CONCERN_STATUS_LABELS, CodingChips, ProblemList, RowActionToolbar, RowIconButton, UncertaintyBadge, concernGroupKey, concernHistoryContent, currentAssertion, toolbarKeyNav } from './chunk-VQGRMCVT.js';
|
|
154
|
+
import { Tooltip } from './chunk-AB24H2RM.js';
|
|
155
|
+
export { Tooltip } from './chunk-AB24H2RM.js';
|
|
156
156
|
import { ButtonGroup } from './chunk-BBLEGF5L.js';
|
|
157
157
|
export { ButtonGroup } from './chunk-BBLEGF5L.js';
|
|
158
158
|
import { RadioGroup, Radio } from './chunk-EPSB4WTL.js';
|
|
@@ -161,8 +161,8 @@ import { Label } from './chunk-I3WGZPI6.js';
|
|
|
161
161
|
export { Label, labelVariants } from './chunk-I3WGZPI6.js';
|
|
162
162
|
import { DateInput } from './chunk-ZP4H5HA4.js';
|
|
163
163
|
export { DateInput } from './chunk-ZP4H5HA4.js';
|
|
164
|
-
import { Textarea } from './chunk-
|
|
165
|
-
export { TextAreaPlain, Textarea, htmlToPlain, plainToHtml, textareaVariants } from './chunk-
|
|
164
|
+
import { Textarea } from './chunk-UQAWXY6R.js';
|
|
165
|
+
export { TextAreaPlain, Textarea, htmlToPlain, plainToHtml, textareaVariants } from './chunk-UQAWXY6R.js';
|
|
166
166
|
import { Select } from './chunk-VCI2Y7ST.js';
|
|
167
167
|
export { Select, selectTriggerVariants } from './chunk-VCI2Y7ST.js';
|
|
168
168
|
import { Card, CardHeader, CardContent, CardTitle } from './chunk-QYSUYB3S.js';
|
|
@@ -183,15 +183,15 @@ import { isStorybookDocsMode } from './chunk-VSQF22GL.js';
|
|
|
183
183
|
export { isStorybookDocsMode } from './chunk-VSQF22GL.js';
|
|
184
184
|
import { Badge } from './chunk-522WJIVI.js';
|
|
185
185
|
export { Badge, badgeVariants } from './chunk-522WJIVI.js';
|
|
186
|
-
import './chunk-
|
|
186
|
+
import './chunk-MQSGJB2B.js';
|
|
187
187
|
import './chunk-NIE3WBJH.js';
|
|
188
|
-
import { RichTextEditorBase } from './chunk-
|
|
189
|
-
export { MacroLibrary, RichTextEditor, convertAngleBracketsToMustache, processDictation } from './chunk-
|
|
188
|
+
import { RichTextEditorBase } from './chunk-XZ65FX6T.js';
|
|
189
|
+
export { MacroLibrary, RichTextEditor, convertAngleBracketsToMustache, processDictation } from './chunk-XZ65FX6T.js';
|
|
190
190
|
import './chunk-5YOT4DVH.js';
|
|
191
191
|
export { Separator, separatorVariants } from './chunk-OQWZYKJM.js';
|
|
192
192
|
import './chunk-AMYFRY7K.js';
|
|
193
|
-
import { Dropdown, DropdownContent, DropdownItem, DropdownHeader, DropdownSeparator } from './chunk-
|
|
194
|
-
export { Dropdown, DropdownContent, DropdownHeader, DropdownItem, DropdownLabel, DropdownSeparator, DropdownSubmenu } from './chunk-
|
|
193
|
+
import { Dropdown, DropdownContent, DropdownItem, DropdownHeader, DropdownSeparator } from './chunk-GTRYDFMT.js';
|
|
194
|
+
export { Dropdown, DropdownContent, DropdownHeader, DropdownItem, DropdownLabel, DropdownSeparator, DropdownSubmenu } from './chunk-GTRYDFMT.js';
|
|
195
195
|
import './chunk-6NZXWKUE.js';
|
|
196
196
|
import { Input, inputVariants } from './chunk-3IMM2PM4.js';
|
|
197
197
|
export { Input, RequiredMark, floatingGroupLabelVariants, floatingGroupVariants, floatingLabelVariants, inputVariants } from './chunk-3IMM2PM4.js';
|
|
@@ -209,8 +209,8 @@ import { AlertTriangle, Loader2, ArrowLeft, Users, Plus, FilePlus, CheckCircle,
|
|
|
209
209
|
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, ArrowUp as ArrowUpIcon, 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, Bot as BotIcon, 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, Mic as MicIcon, 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, Square as StopIcon, 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-BKSPDTX4.js';
|
|
210
210
|
import { usePrefersReducedMotion } from './chunk-XDU65GLW.js';
|
|
211
211
|
export { usePrefersReducedMotion } from './chunk-XDU65GLW.js';
|
|
212
|
-
import { useDirection } from './chunk-
|
|
213
|
-
export { RTL_LOCALES, isRtl, isRtlLocale, useDirection } from './chunk-
|
|
212
|
+
import { useDirection } from './chunk-JBNQ2L3K.js';
|
|
213
|
+
export { RTL_LOCALES, isRtl, isRtlLocale, useDirection } from './chunk-JBNQ2L3K.js';
|
|
214
214
|
import './chunk-N5JDL4VE.js';
|
|
215
215
|
import { Button } from './chunk-WX2XB6FP.js';
|
|
216
216
|
export { Button } from './chunk-WX2XB6FP.js';
|
package/dist/kerebron.cjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkHOE2U27V_cjs = require('./chunk-HOE2U27V.cjs');
|
|
4
4
|
var chunkNCG7NJAW_cjs = require('./chunk-NCG7NJAW.cjs');
|
|
5
|
-
require('./chunk-
|
|
5
|
+
require('./chunk-TNRANQVI.cjs');
|
|
6
6
|
require('./chunk-FSLI5IKP.cjs');
|
|
7
7
|
require('./chunk-YP5T6NZD.cjs');
|
|
8
8
|
require('./chunk-ZNUMOJOI.cjs');
|
|
9
|
-
require('./chunk-
|
|
9
|
+
require('./chunk-XRXOGMMG.cjs');
|
|
10
10
|
require('./chunk-I44YNYI6.cjs');
|
|
11
11
|
require('./chunk-Z5S5JEJD.cjs');
|
|
12
12
|
require('./chunk-NMBYU7D7.cjs');
|
|
@@ -17,7 +17,7 @@ require('./chunk-AOHJILLU.cjs');
|
|
|
17
17
|
require('./chunk-C7RVKV25.cjs');
|
|
18
18
|
require('./chunk-L7L5S2HO.cjs');
|
|
19
19
|
require('./chunk-YW2AKBLS.cjs');
|
|
20
|
-
require('./chunk-
|
|
20
|
+
require('./chunk-7QNBPB7F.cjs');
|
|
21
21
|
require('./chunk-EACNRR3C.cjs');
|
|
22
22
|
require('./chunk-FSARTLUE.cjs');
|
|
23
23
|
require('./chunk-HGJHWI7W.cjs');
|
|
@@ -29,11 +29,11 @@ require('./chunk-EUAMEVVI.cjs');
|
|
|
29
29
|
|
|
30
30
|
Object.defineProperty(exports, "CodeEditor", {
|
|
31
31
|
enumerable: true,
|
|
32
|
-
get: function () { return
|
|
32
|
+
get: function () { return chunkHOE2U27V_cjs.CodeEditor; }
|
|
33
33
|
});
|
|
34
34
|
Object.defineProperty(exports, "TextAreaRich", {
|
|
35
35
|
enumerable: true,
|
|
36
|
-
get: function () { return
|
|
36
|
+
get: function () { return chunkHOE2U27V_cjs.TextAreaRichKerebron; }
|
|
37
37
|
});
|
|
38
38
|
Object.defineProperty(exports, "RichEditor", {
|
|
39
39
|
enumerable: true,
|
package/dist/kerebron.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { CodeEditor, TextAreaRichKerebron as TextAreaRich } from './chunk-
|
|
1
|
+
export { CodeEditor, TextAreaRichKerebron as TextAreaRich } from './chunk-MQSGJB2B.js';
|
|
2
2
|
export { RichEditor } from './chunk-NIE3WBJH.js';
|
|
3
|
-
import './chunk-
|
|
3
|
+
import './chunk-XZ65FX6T.js';
|
|
4
4
|
import './chunk-5YOT4DVH.js';
|
|
5
5
|
import './chunk-OQWZYKJM.js';
|
|
6
6
|
import './chunk-AMYFRY7K.js';
|
|
7
|
-
import './chunk-
|
|
7
|
+
import './chunk-GTRYDFMT.js';
|
|
8
8
|
import './chunk-6NZXWKUE.js';
|
|
9
9
|
import './chunk-3IMM2PM4.js';
|
|
10
10
|
import './chunk-RUGHNFQG.js';
|
|
@@ -15,7 +15,7 @@ import './chunk-WSNMQQ4P.js';
|
|
|
15
15
|
import './chunk-ERLPVXOV.js';
|
|
16
16
|
import './chunk-BKSPDTX4.js';
|
|
17
17
|
import './chunk-XDU65GLW.js';
|
|
18
|
-
import './chunk-
|
|
18
|
+
import './chunk-JBNQ2L3K.js';
|
|
19
19
|
import './chunk-N5JDL4VE.js';
|
|
20
20
|
import './chunk-WX2XB6FP.js';
|
|
21
21
|
import './chunk-VP3XNLUL.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('./chunk-
|
|
5
|
-
require('./chunk-
|
|
3
|
+
var chunkJK2IWOI7_cjs = require('./chunk-JK2IWOI7.cjs');
|
|
4
|
+
require('./chunk-XM3D4KAF.cjs');
|
|
5
|
+
require('./chunk-3SEQVGLH.cjs');
|
|
6
6
|
require('./chunk-MJWFNV3L.cjs');
|
|
7
7
|
require('./chunk-GF2BE4FB.cjs');
|
|
8
8
|
require('./chunk-CPDNX3LS.cjs');
|
|
@@ -10,7 +10,7 @@ require('./chunk-7E46YDOT.cjs');
|
|
|
10
10
|
require('./chunk-FSLI5IKP.cjs');
|
|
11
11
|
require('./chunk-L7L5S2HO.cjs');
|
|
12
12
|
require('./chunk-YW2AKBLS.cjs');
|
|
13
|
-
require('./chunk-
|
|
13
|
+
require('./chunk-7QNBPB7F.cjs');
|
|
14
14
|
require('./chunk-EACNRR3C.cjs');
|
|
15
15
|
require('./chunk-FSARTLUE.cjs');
|
|
16
16
|
require('./chunk-HGJHWI7W.cjs');
|
|
@@ -21,59 +21,59 @@ require('./chunk-EUAMEVVI.cjs');
|
|
|
21
21
|
|
|
22
22
|
Object.defineProperty(exports, "createEncounterSnapshot", {
|
|
23
23
|
enumerable: true,
|
|
24
|
-
get: function () { return
|
|
24
|
+
get: function () { return chunkJK2IWOI7_cjs.createEncounterSnapshot; }
|
|
25
25
|
});
|
|
26
26
|
Object.defineProperty(exports, "getEncounterConcerns", {
|
|
27
27
|
enumerable: true,
|
|
28
|
-
get: function () { return
|
|
28
|
+
get: function () { return chunkJK2IWOI7_cjs.getEncounterConcerns; }
|
|
29
29
|
});
|
|
30
30
|
Object.defineProperty(exports, "parseEncounterAssessment", {
|
|
31
31
|
enumerable: true,
|
|
32
|
-
get: function () { return
|
|
32
|
+
get: function () { return chunkJK2IWOI7_cjs.parseEncounterAssessment; }
|
|
33
33
|
});
|
|
34
34
|
Object.defineProperty(exports, "parseEncounterConditions", {
|
|
35
35
|
enumerable: true,
|
|
36
|
-
get: function () { return
|
|
36
|
+
get: function () { return chunkJK2IWOI7_cjs.parseEncounterConditions; }
|
|
37
37
|
});
|
|
38
38
|
Object.defineProperty(exports, "parseEncounterPlan", {
|
|
39
39
|
enumerable: true,
|
|
40
|
-
get: function () { return
|
|
40
|
+
get: function () { return chunkJK2IWOI7_cjs.parseEncounterPlan; }
|
|
41
41
|
});
|
|
42
42
|
Object.defineProperty(exports, "parseEncounterVitals", {
|
|
43
43
|
enumerable: true,
|
|
44
|
-
get: function () { return
|
|
44
|
+
get: function () { return chunkJK2IWOI7_cjs.parseEncounterVitals; }
|
|
45
45
|
});
|
|
46
46
|
Object.defineProperty(exports, "validAssessmentItem", {
|
|
47
47
|
enumerable: true,
|
|
48
|
-
get: function () { return
|
|
48
|
+
get: function () { return chunkJK2IWOI7_cjs.validAssessmentItem; }
|
|
49
49
|
});
|
|
50
50
|
Object.defineProperty(exports, "validateEncounterAllergyValue", {
|
|
51
51
|
enumerable: true,
|
|
52
|
-
get: function () { return
|
|
52
|
+
get: function () { return chunkJK2IWOI7_cjs.validateEncounterAllergyValue; }
|
|
53
53
|
});
|
|
54
54
|
Object.defineProperty(exports, "validateEncounterAssessment", {
|
|
55
55
|
enumerable: true,
|
|
56
|
-
get: function () { return
|
|
56
|
+
get: function () { return chunkJK2IWOI7_cjs.validateEncounterAssessment; }
|
|
57
57
|
});
|
|
58
58
|
Object.defineProperty(exports, "validateEncounterConditions", {
|
|
59
59
|
enumerable: true,
|
|
60
|
-
get: function () { return
|
|
60
|
+
get: function () { return chunkJK2IWOI7_cjs.validateEncounterConditions; }
|
|
61
61
|
});
|
|
62
62
|
Object.defineProperty(exports, "validateEncounterMedicationValue", {
|
|
63
63
|
enumerable: true,
|
|
64
|
-
get: function () { return
|
|
64
|
+
get: function () { return chunkJK2IWOI7_cjs.validateEncounterMedicationValue; }
|
|
65
65
|
});
|
|
66
66
|
Object.defineProperty(exports, "validateEncounterPlan", {
|
|
67
67
|
enumerable: true,
|
|
68
|
-
get: function () { return
|
|
68
|
+
get: function () { return chunkJK2IWOI7_cjs.validateEncounterPlan; }
|
|
69
69
|
});
|
|
70
70
|
Object.defineProperty(exports, "validateEncounterResponses", {
|
|
71
71
|
enumerable: true,
|
|
72
|
-
get: function () { return
|
|
72
|
+
get: function () { return chunkJK2IWOI7_cjs.validateEncounterResponses; }
|
|
73
73
|
});
|
|
74
74
|
Object.defineProperty(exports, "validateEncounterVitals", {
|
|
75
75
|
enumerable: true,
|
|
76
|
-
get: function () { return
|
|
76
|
+
get: function () { return chunkJK2IWOI7_cjs.validateEncounterVitals; }
|
|
77
77
|
});
|
|
78
|
-
//# sourceMappingURL=model-
|
|
79
|
-
//# sourceMappingURL=model-
|
|
78
|
+
//# sourceMappingURL=model-2TISYEYF.cjs.map
|
|
79
|
+
//# sourceMappingURL=model-2TISYEYF.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"model-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"model-2TISYEYF.cjs"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { createEncounterSnapshot, getEncounterConcerns, parseEncounterAssessment, parseEncounterConditions, parseEncounterPlan, parseEncounterVitals, validAssessmentItem, validateEncounterAllergyValue, validateEncounterAssessment, validateEncounterConditions, validateEncounterMedicationValue, validateEncounterPlan, validateEncounterResponses, validateEncounterVitals } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
export { createEncounterSnapshot, getEncounterConcerns, parseEncounterAssessment, parseEncounterConditions, parseEncounterPlan, parseEncounterVitals, validAssessmentItem, validateEncounterAllergyValue, validateEncounterAssessment, validateEncounterConditions, validateEncounterMedicationValue, validateEncounterPlan, validateEncounterResponses, validateEncounterVitals } from './chunk-LBUXS6FJ.js';
|
|
2
|
+
import './chunk-VQGRMCVT.js';
|
|
3
|
+
import './chunk-AB24H2RM.js';
|
|
4
4
|
import './chunk-QYSUYB3S.js';
|
|
5
5
|
import './chunk-YUMOM3KE.js';
|
|
6
6
|
import './chunk-HNXLLDPN.js';
|
|
@@ -8,11 +8,11 @@ import './chunk-522WJIVI.js';
|
|
|
8
8
|
import './chunk-5YOT4DVH.js';
|
|
9
9
|
import './chunk-BKSPDTX4.js';
|
|
10
10
|
import './chunk-XDU65GLW.js';
|
|
11
|
-
import './chunk-
|
|
11
|
+
import './chunk-JBNQ2L3K.js';
|
|
12
12
|
import './chunk-N5JDL4VE.js';
|
|
13
13
|
import './chunk-WX2XB6FP.js';
|
|
14
14
|
import './chunk-VP3XNLUL.js';
|
|
15
15
|
import './chunk-TQONQSJO.js';
|
|
16
16
|
import './chunk-PX6F3LHL.js';
|
|
17
|
-
//# sourceMappingURL=model-
|
|
18
|
-
//# sourceMappingURL=model-
|
|
17
|
+
//# sourceMappingURL=model-BCS5BUK3.js.map
|
|
18
|
+
//# sourceMappingURL=model-BCS5BUK3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"model-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"model-BCS5BUK3.js"}
|
package/dist/org-chart.cjs
CHANGED
|
@@ -5,7 +5,7 @@ require('./chunk-Q3YVLO52.cjs');
|
|
|
5
5
|
var chunkGKDHMNUA_cjs = require('./chunk-GKDHMNUA.cjs');
|
|
6
6
|
var chunk4NCDU5IG_cjs = require('./chunk-4NCDU5IG.cjs');
|
|
7
7
|
var chunkXXVUHLQN_cjs = require('./chunk-XXVUHLQN.cjs');
|
|
8
|
-
var
|
|
8
|
+
var chunk7QNBPB7F_cjs = require('./chunk-7QNBPB7F.cjs');
|
|
9
9
|
require('./chunk-EACNRR3C.cjs');
|
|
10
10
|
var chunkFSARTLUE_cjs = require('./chunk-FSARTLUE.cjs');
|
|
11
11
|
require('./chunk-HGJHWI7W.cjs');
|
|
@@ -613,7 +613,7 @@ function OrgChartTree({
|
|
|
613
613
|
const id = current.node.id;
|
|
614
614
|
const hasKids = childrenOf(forest, id).length > 0;
|
|
615
615
|
const expanded = nodeContext(current).expanded;
|
|
616
|
-
const rtl = !!listRef.current &&
|
|
616
|
+
const rtl = !!listRef.current && chunk7QNBPB7F_cjs.isRtl(listRef.current);
|
|
617
617
|
let key = e.key;
|
|
618
618
|
if (rtl && key === "ArrowLeft") key = "ArrowRight";
|
|
619
619
|
else if (rtl && key === "ArrowRight") key = "ArrowLeft";
|
package/dist/org-chart.js
CHANGED
|
@@ -3,7 +3,7 @@ import './chunk-DVDT7TX7.js';
|
|
|
3
3
|
import { Avatar } from './chunk-TI3TQQ7F.js';
|
|
4
4
|
import { accentClasses } from './chunk-3YBS4WUQ.js';
|
|
5
5
|
import { Spinner } from './chunk-UA7E7PDS.js';
|
|
6
|
-
import { isRtl } from './chunk-
|
|
6
|
+
import { isRtl } from './chunk-JBNQ2L3K.js';
|
|
7
7
|
import './chunk-N5JDL4VE.js';
|
|
8
8
|
import { Button } from './chunk-WX2XB6FP.js';
|
|
9
9
|
import './chunk-VP3XNLUL.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mieweb/ui",
|
|
3
|
-
"version": "0.11.0-dev.
|
|
3
|
+
"version": "0.11.0-dev.45",
|
|
4
4
|
"description": "A themeable, accessible React component library built with Tailwind CSS",
|
|
5
5
|
"author": "Medical Informatics Engineering, Inc.",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Dropdown/Dropdown.tsx"],"names":["Fragment","rtl","ChevronRightIcon"],"mappings":"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","file":"chunk-OYUIEJPN.js","sourcesContent":["import * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { ChevronRight as ChevronRightIcon } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { useClickOutside } from '../../hooks/useClickOutside';\nimport { isRtl } from '../../hooks/useDirection';\nimport { useEscapeKey } from '../../hooks/useEscapeKey';\nimport {\n useAnchoredPosition,\n type AnchoredPlacement,\n type AnchoredSide,\n} from '../../hooks/useAnchoredPosition';\nimport { Animated, AnimatedPresence } from '../../motion';\nimport { inputVariants } from '../Input';\n\nexport type DropdownPlacement = AnchoredPlacement;\n\nexport interface DropdownProps {\n /** The trigger element (usually a button) */\n trigger: React.ReactElement<{\n onClick?: () => void;\n disabled?: boolean;\n 'aria-haspopup'?: string;\n 'aria-expanded'?: boolean;\n 'aria-controls'?: string;\n }>;\n /** Dropdown content */\n children: React.ReactNode;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Placement of the dropdown */\n placement?: DropdownPlacement;\n /** Additional class name for the dropdown menu */\n className?: string;\n /** Width of the dropdown menu */\n width?: 'auto' | 'trigger' | number;\n /** Whether the dropdown is disabled */\n disabled?: boolean;\n /** Whether to render a search field at the top of the dropdown */\n searchable?: boolean;\n /** Placeholder text for the search input */\n searchPlaceholder?: string;\n /** Accessible label for the search input */\n searchAriaLabel?: string;\n /** Content to render when no items match the search query */\n searchEmptyState?: React.ReactNode;\n /** Whether dropdown items support multi-select checkboxes */\n multiSelect?: boolean;\n /** Selected item values for controlled multi-select dropdowns */\n selectedValues?: string[];\n /** Initial selected item values for uncontrolled multi-select dropdowns */\n defaultSelectedValues?: string[];\n /** Callback fired when selected values change in multi-select mode */\n onSelectedValuesChange?: (values: string[]) => void;\n /** Whether to render a select-all control for multi-select dropdowns */\n showSelectAll?: boolean;\n /** Label for the select-all control */\n selectAllLabel?: React.ReactNode;\n}\n\nconst placementOffset = 8; // matches the previous mt-2/mb-2 gap\n\n/**\n * Scale origin per resolved side, so the menu grows out of its trigger rather\n * than out of its own middle. Written as whole literal class names because\n * Tailwind's scanner only matches complete strings.\n */\nconst menuTransformOrigin: Record<AnchoredSide, string> = {\n bottom: 'origin-top',\n top: 'origin-bottom',\n right: 'origin-left',\n left: 'origin-right',\n};\n\n/**\n * CSS stand-in used when no motion runtime is active.\n *\n * Note this replaces `animate-in fade-in zoom-in-95 duration-100`, which was\n * dead markup: those are `tailwindcss-animate` utilities and that plugin is not\n * installed, so none of them were ever emitted into the stylesheet. `animate-fade-in`\n * is a real utility from this package's own Tailwind preset.\n */\nconst DROPDOWN_FALLBACK_ANIMATION = 'animate-fade-in';\n\ninterface DropdownContextValue {\n multiSelect: boolean;\n selectedValues: string[];\n toggleSelectedValue: (value: string) => void;\n /**\n * Registers a portaled descendant (submenu panel) with the root dropdown's\n * click-outside detection so clicks inside it don't close the menu.\n * Returns an unregister function.\n */\n registerOutsideRef: (ref: React.RefObject<HTMLElement | null>) => () => void;\n}\n\nconst DropdownContext = React.createContext<DropdownContextValue | null>(null);\n\nfunction getNodeText(node: React.ReactNode): string {\n if (typeof node === 'string' || typeof node === 'number') {\n return String(node);\n }\n\n if (Array.isArray(node)) {\n return node.map(getNodeText).join(' ');\n }\n\n if (React.isValidElement<{ children?: React.ReactNode }>(node)) {\n return getNodeText(node.props.children);\n }\n\n return '';\n}\n\nfunction isDropdownElement<P>(\n node: React.ReactNode,\n component: React.JSXElementConstructor<P>\n): node is React.ReactElement<P> {\n return React.isValidElement(node) && node.type === component;\n}\n\nfunction hasVisibleDropdownContent(node: React.ReactNode): boolean {\n if (node == null || typeof node === 'boolean') {\n return false;\n }\n\n if (Array.isArray(node)) {\n return node.some(hasVisibleDropdownContent);\n }\n\n if (!React.isValidElement<{ children?: React.ReactNode }>(node)) {\n if (typeof node === 'string') {\n return node.trim().length > 0;\n }\n\n return true;\n }\n\n if (node.type === React.Fragment) {\n return React.Children.toArray(node.props.children).some(\n hasVisibleDropdownContent\n );\n }\n\n if (\n node.type === DropdownSeparator ||\n node.type === DropdownLabel ||\n node.type === DropdownHeader\n ) {\n return false;\n }\n\n if (node.type === DropdownContent) {\n return React.Children.toArray(node.props.children).some(\n hasVisibleDropdownContent\n );\n }\n\n return true;\n}\n\nfunction normalizeDropdownSiblings(\n children: React.ReactNode[]\n): React.ReactNode[] {\n const hasContentBefore = (index: number) => {\n for (let current = index - 1; current >= 0; current -= 1) {\n const child = children[current];\n\n if (isDropdownElement(child, DropdownSeparator)) {\n return false;\n }\n\n if (hasVisibleDropdownContent(child)) {\n return true;\n }\n }\n\n return false;\n };\n\n const hasContentAfter = (index: number) => {\n for (let current = index + 1; current < children.length; current += 1) {\n const child = children[current];\n\n if (isDropdownElement(child, DropdownSeparator)) {\n return false;\n }\n\n if (hasVisibleDropdownContent(child)) {\n return true;\n }\n }\n\n return false;\n };\n\n return children.filter((child, index) => {\n if (isDropdownElement(child, DropdownSeparator)) {\n return hasContentBefore(index) && hasContentAfter(index);\n }\n\n if (isDropdownElement(child, DropdownLabel)) {\n return hasContentAfter(index);\n }\n\n return true;\n });\n}\n\nfunction filterDropdownChildren(\n children: React.ReactNode,\n query: string\n): React.ReactNode[] {\n const normalizedQuery = query.trim().toLowerCase();\n\n if (!normalizedQuery) {\n return React.Children.toArray(children);\n }\n\n const filteredChildren = React.Children.toArray(children)\n .map((child) => {\n if (!React.isValidElement<{ children?: React.ReactNode }>(child)) {\n if (typeof child === 'string' || typeof child === 'number') {\n return String(child).toLowerCase().includes(normalizedQuery)\n ? child\n : null;\n }\n\n return null;\n }\n\n if (child.type === React.Fragment) {\n const fragmentChildren = filterDropdownChildren(\n child.props.children,\n normalizedQuery\n );\n\n return fragmentChildren.length > 0\n ? React.cloneElement(child, undefined, fragmentChildren)\n : null;\n }\n\n if (isDropdownElement(child, DropdownHeader)) {\n return child;\n }\n\n if (isDropdownElement(child, DropdownItem)) {\n const searchText = [\n getNodeText(child.props.children),\n child.props.searchText,\n ]\n .filter(Boolean)\n .join(' ')\n .toLowerCase();\n\n return searchText.includes(normalizedQuery) ? child : null;\n }\n\n if (isDropdownElement(child, DropdownSubmenu)) {\n const searchText = [\n getNodeText(child.props.label),\n child.props.searchText,\n ]\n .filter(Boolean)\n .join(' ')\n .toLowerCase();\n\n // Keep the whole submenu when its label matches; otherwise filter its\n // items and keep it only when something inside still matches.\n if (searchText.includes(normalizedQuery)) {\n return child;\n }\n\n const submenuChildren = filterDropdownChildren(\n child.props.children,\n normalizedQuery\n );\n\n return hasVisibleDropdownContent(submenuChildren)\n ? React.cloneElement(child, undefined, submenuChildren)\n : null;\n }\n\n if (isDropdownElement(child, DropdownContent)) {\n const contentChildren = filterDropdownChildren(\n child.props.children,\n normalizedQuery\n );\n\n return hasVisibleDropdownContent(contentChildren)\n ? React.cloneElement(child, undefined, contentChildren)\n : null;\n }\n\n if (isDropdownElement(child, DropdownSeparator)) {\n return child;\n }\n\n if (isDropdownElement(child, DropdownLabel)) {\n return child;\n }\n\n const nestedChildren = child.props.children;\n\n if (nestedChildren === undefined) {\n return child;\n }\n\n const filteredNestedChildren = filterDropdownChildren(\n nestedChildren,\n normalizedQuery\n );\n\n return filteredNestedChildren.length > 0\n ? React.cloneElement(child, undefined, filteredNestedChildren)\n : null;\n })\n .filter((child) => child !== null);\n\n return normalizeDropdownSiblings(filteredChildren);\n}\n\nfunction getSelectableValues(children: React.ReactNode): string[] {\n return React.Children.toArray(children).flatMap((child) => {\n if (\n !React.isValidElement<{ children?: React.ReactNode; value?: unknown }>(\n child\n )\n ) {\n return [];\n }\n\n if (child.type === React.Fragment || child.type === DropdownContent) {\n return getSelectableValues(child.props.children);\n }\n\n if (isDropdownElement(child, DropdownItem)) {\n return typeof child.props.value === 'string' ? [child.props.value] : [];\n }\n\n return child.props.children !== undefined\n ? getSelectableValues(child.props.children)\n : [];\n });\n}\n\n/**\n * An accessible dropdown menu component.\n *\n * @example\n * ```tsx\n * <Dropdown\n * trigger={<Button>Options</Button>}\n * >\n * <DropdownItem onClick={() => console.log('Edit')}>Edit</DropdownItem>\n * <DropdownItem onClick={() => console.log('Delete')} variant=\"danger\">Delete</DropdownItem>\n * </Dropdown>\n * ```\n */\nfunction Dropdown({\n trigger,\n children,\n open: controlledOpen,\n onOpenChange,\n placement = 'bottom-start',\n className,\n width = 'auto',\n disabled = false,\n searchable = false,\n searchPlaceholder = 'Search...',\n searchAriaLabel = 'Search dropdown items',\n searchEmptyState = 'No results found',\n multiSelect = false,\n selectedValues: controlledSelectedValues,\n defaultSelectedValues = [],\n onSelectedValuesChange,\n showSelectAll = false,\n selectAllLabel = 'Select all',\n}: DropdownProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false);\n const [uncontrolledSelectedValues, setUncontrolledSelectedValues] =\n React.useState(defaultSelectedValues);\n const [searchQuery, setSearchQuery] = React.useState('');\n const [extraOutsideRefs, setExtraOutsideRefs] = React.useState<\n ReadonlyArray<React.RefObject<HTMLElement | null>>\n >([]);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const searchInputRef = React.useRef<HTMLInputElement>(null);\n const menuId = React.useId();\n\n const isControlled = controlledOpen !== undefined;\n const isSelectedValuesControlled = controlledSelectedValues !== undefined;\n const isOpen = isControlled ? controlledOpen : uncontrolledOpen;\n const selectedValues = isSelectedValuesControlled\n ? controlledSelectedValues\n : uncontrolledSelectedValues;\n\n const setOpen = React.useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(value);\n }\n onOpenChange?.(value);\n },\n [isControlled, onOpenChange]\n );\n\n const handleToggle = React.useCallback(() => {\n if (!disabled) {\n setOpen(!isOpen);\n }\n }, [disabled, isOpen, setOpen]);\n\n const handleClose = React.useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n\n const setSelectedValues = React.useCallback(\n (values: string[]) => {\n if (!isSelectedValuesControlled) {\n setUncontrolledSelectedValues(values);\n }\n onSelectedValuesChange?.(values);\n },\n [isSelectedValuesControlled, onSelectedValuesChange]\n );\n\n const toggleSelectedValue = React.useCallback(\n (value: string) => {\n if (!multiSelect) {\n return;\n }\n\n setSelectedValues(\n selectedValues.includes(value)\n ? selectedValues.filter((selectedValue) => selectedValue !== value)\n : [...selectedValues, value]\n );\n },\n [multiSelect, selectedValues, setSelectedValues]\n );\n\n const registerOutsideRef = React.useCallback(\n (ref: React.RefObject<HTMLElement | null>) => {\n setExtraOutsideRefs((prev) => [...prev, ref]);\n return () => setExtraOutsideRefs((prev) => prev.filter((r) => r !== ref));\n },\n []\n );\n\n const dropdownContext = React.useMemo<DropdownContextValue>(\n () => ({\n multiSelect,\n selectedValues,\n toggleSelectedValue,\n registerOutsideRef,\n }),\n [multiSelect, selectedValues, toggleSelectedValue, registerOutsideRef]\n );\n\n useEscapeKey(handleClose, isOpen);\n\n // Portal + fixed positioning so the menu escapes overflow-hidden ancestors.\n const { anchorRef, floatingRef, style, actualSide } = useAnchoredPosition<\n HTMLDivElement,\n HTMLDivElement\n >({\n open: isOpen,\n placement,\n offset: placementOffset,\n matchMinWidth: width === 'trigger',\n });\n\n const outsideRefs = React.useMemo(\n () => [containerRef, floatingRef, ...extraOutsideRefs],\n [floatingRef, extraOutsideRefs]\n );\n useClickOutside(outsideRefs, handleClose, isOpen);\n\n React.useEffect(() => {\n if (!isOpen) {\n setSearchQuery('');\n return;\n }\n\n if (searchable) {\n requestAnimationFrame(() => searchInputRef.current?.focus());\n }\n }, [isOpen, searchable]);\n\n // Clone trigger to add event handlers\n const triggerElement = React.cloneElement(trigger, {\n onClick: handleToggle,\n 'aria-haspopup': 'menu',\n 'aria-expanded': isOpen,\n 'aria-controls': isOpen ? menuId : undefined,\n disabled: disabled || trigger.props.disabled,\n });\n\n const widthStyle = typeof width === 'number' ? { width: `${width}px` } : {};\n\n const filteredChildren = React.useMemo(\n () => filterDropdownChildren(children, searchQuery),\n [children, searchQuery]\n );\n const visibleSelectableValues = React.useMemo(\n () => getSelectableValues(searchable ? filteredChildren : children),\n [children, filteredChildren, searchable]\n );\n const hasSearchResults = React.useMemo(\n () => hasVisibleDropdownContent(filteredChildren),\n [filteredChildren]\n );\n const allVisibleSelected =\n visibleSelectableValues.length > 0 &&\n visibleSelectableValues.every((value) => selectedValues.includes(value));\n const someVisibleSelected = visibleSelectableValues.some((value) =>\n selectedValues.includes(value)\n );\n\n const handleSelectAll = React.useCallback(() => {\n if (!multiSelect || visibleSelectableValues.length === 0) {\n return;\n }\n\n const visibleValueSet = new Set(visibleSelectableValues);\n\n setSelectedValues(\n allVisibleSelected\n ? selectedValues.filter((value) => !visibleValueSet.has(value))\n : Array.from(new Set([...selectedValues, ...visibleSelectableValues]))\n );\n }, [\n allVisibleSelected,\n multiSelect,\n selectedValues,\n setSelectedValues,\n visibleSelectableValues,\n ]);\n\n return (\n <DropdownContext.Provider value={dropdownContext}>\n <div\n ref={(node) => {\n containerRef.current = node;\n anchorRef.current = node;\n }}\n className=\"relative inline-flex\"\n >\n {triggerElement}\n {typeof document !== 'undefined' &&\n createPortal(\n <AnimatedPresence>\n {isOpen && (\n <Animated\n key=\"dropdown-menu\"\n ref={floatingRef as React.Ref<HTMLElement>}\n preset=\"menu\"\n mode=\"presence\"\n // Post-flip side, not the requested `placement`: a menu that\n // flipped for want of room has to animate from where it\n // actually landed.\n custom={actualSide}\n style={{ ...style, ...widthStyle }}\n data-slot=\"dropdown-menu\"\n className={cn(\n 'flex min-w-[12rem] flex-col overflow-hidden',\n 'rounded-xl border border-neutral-200 bg-white shadow-lg',\n 'dark:border-neutral-700 dark:bg-neutral-800',\n // Anchors the scale to the trigger. Static per side and never\n // animated, so CSS owns it rather than the preset.\n menuTransformOrigin[actualSide],\n className\n )}\n fallbackClassName={DROPDOWN_FALLBACK_ANIMATION}\n >\n {searchable && (\n <div\n className=\"shrink-0 border-b border-neutral-200 p-2 dark:border-neutral-700\"\n data-slot=\"dropdown-search\"\n >\n <input\n ref={searchInputRef}\n type=\"search\"\n value={searchQuery}\n onChange={(event) => setSearchQuery(event.target.value)}\n placeholder={searchPlaceholder}\n aria-label={searchAriaLabel}\n aria-controls={menuId}\n aria-autocomplete=\"list\"\n data-slot=\"dropdown-search-input\"\n className={cn(\n inputVariants({ size: 'sm' }),\n 'text-sm',\n 'dark:border-neutral-600 dark:bg-neutral-700 dark:text-neutral-100'\n )}\n />\n </div>\n )}\n <div\n id={menuId}\n role=\"menu\"\n className=\"min-h-0 overflow-y-auto\"\n >\n {multiSelect &&\n showSelectAll &&\n visibleSelectableValues.length > 0 && (\n <>\n <div className=\"p-2\" data-slot=\"dropdown-select-all\">\n <DropdownItem\n checked={allVisibleSelected}\n indeterminate={\n !allVisibleSelected && someVisibleSelected\n }\n onClick={handleSelectAll}\n >\n {selectAllLabel}\n </DropdownItem>\n </div>\n <DropdownSeparator />\n </>\n )}\n {searchable ? (\n hasSearchResults ? (\n filteredChildren\n ) : (\n <div\n className=\"text-muted-foreground px-3 py-4 text-center text-sm\"\n data-slot=\"dropdown-empty\"\n >\n {searchEmptyState}\n </div>\n )\n ) : (\n children\n )}\n </div>\n </Animated>\n )}\n </AnimatedPresence>,\n document.body\n )}\n </div>\n </DropdownContext.Provider>\n );\n}\n\nDropdown.displayName = 'Dropdown';\n\n// ============================================================================\n// Dropdown Header Component\n// ============================================================================\n\nexport interface DropdownHeaderProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'title'\n> {\n /** Avatar element or image */\n avatar?: React.ReactNode;\n /** Primary text (e.g., user name) */\n title: React.ReactNode;\n /** Secondary text (e.g., email) */\n subtitle?: React.ReactNode;\n}\n\n/**\n * A header section for dropdown menus, typically used for user info.\n *\n * @example\n * ```tsx\n * <DropdownHeader\n * avatar={<Avatar name=\"John Doe\" />}\n * title=\"John Doe\"\n * subtitle=\"john@example.com\"\n * />\n * ```\n */\nconst DropdownHeader = React.forwardRef<HTMLDivElement, DropdownHeaderProps>(\n ({ className, avatar, title, subtitle, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-slot=\"dropdown-header\"\n className={cn(\n 'border-b border-neutral-200 p-4 dark:border-neutral-700',\n className\n )}\n {...props}\n >\n <div\n className=\"flex items-center gap-3\"\n data-slot=\"dropdown-header-row\"\n >\n {avatar}\n <div className=\"min-w-0 flex-1\">\n <p\n className=\"truncate text-sm font-semibold text-neutral-900 dark:text-white\"\n data-slot=\"dropdown-header-title\"\n >\n {title}\n </p>\n {subtitle && (\n <p\n className=\"text-muted-foreground truncate text-xs\"\n data-slot=\"dropdown-header-subtitle\"\n >\n {subtitle}\n </p>\n )}\n </div>\n </div>\n {children}\n </div>\n );\n }\n);\n\nDropdownHeader.displayName = 'DropdownHeader';\n\n// ============================================================================\n// Dropdown Content Component\n// ============================================================================\n\nexport type DropdownContentProps = React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * A container for dropdown menu items with proper padding.\n */\nconst DropdownContent = React.forwardRef<HTMLDivElement, DropdownContentProps>(\n ({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-slot=\"dropdown-content\"\n className={cn('p-2', className)}\n {...props}\n />\n );\n }\n);\n\nDropdownContent.displayName = 'DropdownContent';\n\n// ============================================================================\n// Dropdown Item Component\n// ============================================================================\n\nexport interface DropdownItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n /** Icon to display before the label */\n icon?: React.ReactNode;\n /** Danger variant for destructive actions */\n variant?: 'default' | 'danger';\n /** Optional text used when filtering searchable dropdown items */\n searchText?: string;\n /** Checked state for multi-select items */\n checked?: boolean;\n /** Indeterminate state for multi-select items */\n indeterminate?: boolean;\n /** Callback fired when a multi-select item changes */\n onCheckedChange?: (checked: boolean) => void;\n}\n\nfunction DropdownItemCheckbox({\n checked,\n indeterminate = false,\n}: {\n checked: boolean;\n indeterminate?: boolean;\n}) {\n return (\n <span\n aria-hidden=\"true\"\n data-slot=\"dropdown-checkbox\"\n className={cn(\n 'flex h-4 w-4 shrink-0 items-center justify-center rounded border-2 transition-colors duration-150',\n checked || indeterminate\n ? 'border-primary-500 bg-primary-800 text-white'\n : 'border-input bg-background text-transparent'\n )}\n >\n {indeterminate ? (\n <svg\n aria-hidden=\"true\"\n className=\"h-3 w-3\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n d=\"M4 8h8\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n ) : (\n <svg\n aria-hidden=\"true\"\n className=\"h-3 w-3\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n d=\"M3.5 8.5 6.5 11.5 12.5 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </span>\n );\n}\n\n/**\n * An item within a Dropdown menu.\n */\nconst DropdownItem = React.forwardRef<HTMLButtonElement, DropdownItemProps>(\n (\n {\n className,\n icon,\n variant = 'default',\n children,\n searchText,\n checked,\n indeterminate = false,\n onCheckedChange,\n onClick,\n value,\n disabled,\n ...props\n },\n ref\n ) => {\n const dropdownContext = React.useContext(DropdownContext);\n const itemValue = typeof value === 'string' ? value : undefined;\n const contextSelectedValues = dropdownContext?.selectedValues ?? [];\n const isMultiSelectItem =\n (dropdownContext?.multiSelect === true && itemValue !== undefined) ||\n checked !== undefined ||\n indeterminate;\n const isChecked =\n checked ??\n (isMultiSelectItem\n ? itemValue !== undefined && contextSelectedValues.includes(itemValue)\n : false);\n\n const handleClick = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (\n dropdownContext &&\n isMultiSelectItem &&\n itemValue !== undefined &&\n !disabled\n ) {\n dropdownContext.toggleSelectedValue(itemValue);\n onCheckedChange?.(!isChecked);\n }\n\n onClick?.(event);\n },\n [\n disabled,\n dropdownContext,\n isChecked,\n isMultiSelectItem,\n itemValue,\n onCheckedChange,\n onClick,\n ]\n );\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role={isMultiSelectItem ? 'menuitemcheckbox' : 'menuitem'}\n aria-checked={\n isMultiSelectItem ? (indeterminate ? 'mixed' : isChecked) : undefined\n }\n disabled={disabled}\n data-slot=\"dropdown-item\"\n className={cn(\n 'flex w-full items-center gap-3 rounded-lg px-3 py-2 text-start text-sm',\n 'transition-colors duration-150',\n 'focus:outline-none',\n variant === 'default' && [\n 'text-neutral-700 dark:text-neutral-300',\n 'hover:bg-neutral-100 dark:hover:bg-neutral-700',\n 'focus:bg-neutral-100 dark:focus:bg-neutral-700',\n ],\n variant === 'danger' && [\n 'text-red-600 dark:text-red-400',\n 'hover:bg-red-50 dark:hover:bg-red-900/20',\n 'focus:bg-red-50 dark:focus:bg-red-900/20',\n ],\n className\n )}\n data-search-text={searchText}\n onClick={handleClick}\n value={value}\n {...props}\n >\n {isMultiSelectItem && (\n <DropdownItemCheckbox\n checked={isChecked}\n indeterminate={indeterminate}\n />\n )}\n {icon && (\n <span className=\"h-4 w-4 shrink-0\" data-slot=\"dropdown-item-icon\">\n {icon}\n </span>\n )}\n <span className=\"font-medium\" data-slot=\"dropdown-item-label\">\n {children}\n </span>\n </button>\n );\n }\n);\n\nDropdownItem.displayName = 'DropdownItem';\n\n// ============================================================================\n// Dropdown Submenu Component\n// ============================================================================\n\nexport interface DropdownSubmenuProps {\n /** The parent item's label */\n label: React.ReactNode;\n /** Icon to display before the label */\n icon?: React.ReactNode;\n /** Whether the submenu trigger is disabled */\n disabled?: boolean;\n /** Optional text used when filtering searchable dropdown items */\n searchText?: string;\n /** Additional class name for the submenu trigger item */\n className?: string;\n /** Submenu items */\n children: React.ReactNode;\n}\n\n/** Delay before a hover-opened submenu closes, allowing diagonal travel. */\nconst submenuCloseDelay = 150;\n\n/**\n * A dropdown item that opens a nested flyout menu.\n *\n * Opens on hover or click, and from the keyboard via Enter/Space or the\n * arrow toward the inline-end (ArrowRight in LTR, ArrowLeft in RTL); the\n * opposite arrow or Escape closes just the submenu (Escape is stopped so the\n * root menu stays open) and returns focus to the trigger.\n *\n * @example\n * ```tsx\n * <Dropdown trigger={<Button>Options</Button>}>\n * <DropdownItem onClick={copy}>Copy</DropdownItem>\n * <DropdownSubmenu label=\"Copy as\">\n * <DropdownItem onClick={copyMarkdown}>Markdown</DropdownItem>\n * <DropdownItem onClick={copyPlain}>Plain text</DropdownItem>\n * </DropdownSubmenu>\n * </Dropdown>\n * ```\n */\nfunction DropdownSubmenu({\n label,\n icon,\n disabled = false,\n className,\n children,\n}: DropdownSubmenuProps) {\n const [open, setOpen] = React.useState(false);\n // The flyout opens toward the inline-end — physical left under RTL — so\n // the panel side matches the open key and the flipped chevron.\n const [rtl, setRtl] = React.useState(false);\n const menuId = React.useId();\n const dropdownContext = React.useContext(DropdownContext);\n const closeTimer = React.useRef<ReturnType<typeof setTimeout> | undefined>(\n undefined\n );\n\n const { anchorRef, floatingRef, style, actualSide } = useAnchoredPosition<\n HTMLButtonElement,\n HTMLDivElement\n >({ open, placement: rtl ? 'left-start' : 'right-start', offset: 4 });\n\n // Sample direction when opening; layout effect so the reposition with the\n // corrected placement happens before paint (no wrong-side flash).\n React.useLayoutEffect(() => {\n if (open) setRtl(isRtl(anchorRef.current));\n }, [open, anchorRef]);\n\n // Let the root dropdown treat clicks inside the portaled flyout as \"inside\"\n // so they don't dismiss the whole menu. Layout effect so the registration\n // flushes before the browser can deliver the next mousedown/touchstart —\n // a passive effect could lose a fast open-then-click race.\n const registerOutsideRef = dropdownContext?.registerOutsideRef;\n React.useLayoutEffect(() => {\n if (!open || !registerOutsideRef) return;\n return registerOutsideRef(floatingRef);\n }, [open, registerOutsideRef, floatingRef]);\n\n React.useEffect(() => () => clearTimeout(closeTimer.current), []);\n\n const cancelClose = () => clearTimeout(closeTimer.current);\n const openNow = () => {\n if (disabled) return;\n cancelClose();\n setOpen(true);\n };\n const scheduleClose = () => {\n cancelClose();\n closeTimer.current = setTimeout(() => setOpen(false), submenuCloseDelay);\n };\n const closeAndRefocus = () => {\n cancelClose();\n setOpen(false);\n anchorRef.current?.focus();\n };\n\n const focusFirstItem = () => {\n // The flyout positions in a layout effect; wait a frame so it's measurable\n // and visible before moving focus.\n requestAnimationFrame(() => {\n floatingRef.current\n ?.querySelector<HTMLElement>('[data-slot=\"dropdown-item\"]')\n ?.focus();\n });\n };\n\n return (\n <>\n <button\n ref={anchorRef}\n type=\"button\"\n role=\"menuitem\"\n disabled={disabled}\n aria-haspopup=\"menu\"\n aria-expanded={open}\n aria-controls={open ? menuId : undefined}\n data-slot=\"dropdown-submenu-trigger\"\n className={cn(\n 'flex w-full items-center gap-3 rounded-lg px-3 py-2 text-start text-sm',\n 'transition-colors duration-150',\n 'focus:outline-none',\n 'text-neutral-700 dark:text-neutral-300',\n 'hover:bg-neutral-100 dark:hover:bg-neutral-700',\n 'focus:bg-neutral-100 dark:focus:bg-neutral-700',\n open && 'bg-neutral-100 dark:bg-neutral-700',\n className\n )}\n onPointerEnter={(event) => {\n // Hover-open is a mouse affordance; touch taps go through onClick so\n // the flyout doesn't open-then-toggle on the same tap.\n if (event.pointerType === 'mouse') openNow();\n }}\n onPointerLeave={(event) => {\n if (event.pointerType === 'mouse') scheduleClose();\n }}\n onClick={(event) => {\n openNow();\n // Keyboard activation (Enter/Space fire click with detail 0) moves\n // focus into the flyout; pointer clicks leave focus on the trigger.\n if (event.detail === 0) focusFirstItem();\n }}\n onKeyDown={(event) => {\n // The submenu opens toward the inline-end and its chevron flips\n // under RTL, so the open/close arrows are visual and invert too.\n const rtl = isRtl(event.currentTarget);\n const openKey = rtl ? 'ArrowLeft' : 'ArrowRight';\n const closeKey = rtl ? 'ArrowRight' : 'ArrowLeft';\n if (event.key === openKey) {\n event.preventDefault();\n openNow();\n focusFirstItem();\n } else if (\n open &&\n (event.key === closeKey || event.key === 'Escape')\n ) {\n event.preventDefault();\n // Keep the root menu open: stop Escape before it reaches the\n // document-level listener that closes the whole dropdown.\n event.stopPropagation();\n closeAndRefocus();\n }\n }}\n >\n {icon && (\n <span className=\"h-4 w-4 shrink-0\" data-slot=\"dropdown-item-icon\">\n {icon}\n </span>\n )}\n <span className=\"flex-1 font-medium\" data-slot=\"dropdown-item-label\">\n {label}\n </span>\n <ChevronRightIcon\n size={16}\n aria-hidden=\"true\"\n className=\"shrink-0 text-neutral-400 rtl:-scale-x-100\"\n />\n </button>\n {typeof document !== 'undefined' &&\n createPortal(\n <AnimatedPresence>\n {open && (\n <Animated\n key=\"dropdown-submenu\"\n ref={floatingRef}\n style={style}\n preset=\"menu\"\n mode=\"presence\"\n // A submenu opens to the side and flips when it runs out of\n // room, so it has to animate from the side it actually landed\n // on — same contract as the root menu.\n custom={actualSide}\n id={menuId}\n role=\"menu\"\n // Programmatically focusable (a11y: interactive role); focus\n // lands on the menu items themselves.\n tabIndex={-1}\n data-slot=\"dropdown-submenu\"\n className={cn(\n // min() keeps the preferred width from beating the hook's\n // maxWidth viewport clamp on very narrow screens.\n 'flex min-w-[min(10rem,calc(100vw-1rem))] flex-col overflow-hidden',\n 'rounded-xl border border-neutral-200 bg-white shadow-lg',\n 'dark:border-neutral-700 dark:bg-neutral-800',\n // Anchors the scale to the trigger, as on the root menu.\n menuTransformOrigin[actualSide]\n )}\n fallbackClassName={DROPDOWN_FALLBACK_ANIMATION}\n onPointerEnter={cancelClose}\n onPointerLeave={(event) => {\n if (event.pointerType === 'mouse') scheduleClose();\n }}\n onKeyDown={(event) => {\n // The panel is portaled to document.body, so computing the\n // direction from event.currentTarget would miss a local dir\n // override around the dropdown — reuse the direction sampled\n // from the in-place trigger when the flyout opened.\n const closeKey = rtl ? 'ArrowRight' : 'ArrowLeft';\n if (event.key === closeKey || event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n closeAndRefocus();\n }\n }}\n >\n <div className=\"min-h-0 overflow-y-auto\">{children}</div>\n </Animated>\n )}\n </AnimatedPresence>,\n document.body\n )}\n </>\n );\n}\n\nDropdownSubmenu.displayName = 'DropdownSubmenu';\n\n// ============================================================================\n// Dropdown Separator Component\n// ============================================================================\n\n/**\n * A separator between dropdown items.\n */\nfunction DropdownSeparator({ className }: { className?: string }) {\n return (\n <hr\n data-slot=\"dropdown-separator\"\n className={cn(\n 'border-t border-neutral-200 dark:border-neutral-700',\n className\n )}\n />\n );\n}\n\nDropdownSeparator.displayName = 'DropdownSeparator';\n\n// ============================================================================\n// Dropdown Label Component\n// ============================================================================\n\n/**\n * A label/header for a group of dropdown items.\n */\nfunction DropdownLabel({\n className,\n children,\n}: {\n className?: string;\n children: React.ReactNode;\n}) {\n return (\n <div\n data-slot=\"dropdown-label\"\n className={cn(\n 'px-3 py-1.5 text-xs font-semibold tracking-wider uppercase',\n 'text-muted-foreground',\n className\n )}\n >\n {children}\n </div>\n );\n}\n\nDropdownLabel.displayName = 'DropdownLabel';\n\nexport {\n Dropdown,\n DropdownHeader,\n DropdownContent,\n DropdownItem,\n DropdownSubmenu,\n DropdownSeparator,\n DropdownLabel,\n};\n"]}
|