@mieweb/ui 0.11.0-dev.0 → 0.11.0-dev.2
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/{chunk-J2CKXXOW.js → chunk-4I6BW3FB.js} +8 -5
- package/dist/chunk-4I6BW3FB.js.map +1 -0
- package/dist/{chunk-XHK5VZ4L.cjs → chunk-6ZA574PU.cjs} +8 -5
- package/dist/chunk-6ZA574PU.cjs.map +1 -0
- package/dist/{chunk-ECYIDXG6.cjs → chunk-AFDW64EF.cjs} +4 -2
- package/dist/chunk-AFDW64EF.cjs.map +1 -0
- package/dist/{chunk-KVTKSPX5.js → chunk-AG5EKCE4.js} +4 -2
- package/dist/chunk-AG5EKCE4.js.map +1 -0
- package/dist/{chunk-FMEA6WAY.cjs → chunk-C66JR43M.cjs} +9 -9
- package/dist/{chunk-FMEA6WAY.cjs.map → chunk-C66JR43M.cjs.map} +1 -1
- package/dist/{chunk-OW3SQJ7P.js → chunk-EI4JU5JF.js} +3 -3
- package/dist/{chunk-OW3SQJ7P.js.map → chunk-EI4JU5JF.js.map} +1 -1
- package/dist/{chunk-TJ4GWQPM.js → chunk-GJPCWR4C.js} +102 -64
- package/dist/chunk-GJPCWR4C.js.map +1 -0
- package/dist/{chunk-JSXIB6EJ.cjs → chunk-GLG6UE2H.cjs} +12 -7
- package/dist/chunk-GLG6UE2H.cjs.map +1 -0
- package/dist/{chunk-H3ROMJYI.cjs → chunk-KY67AMQ5.cjs} +4 -4
- package/dist/{chunk-H3ROMJYI.cjs.map → chunk-KY67AMQ5.cjs.map} +1 -1
- package/dist/{chunk-YZCM7CXK.js → chunk-NKG2UNXE.js} +3 -3
- package/dist/{chunk-YZCM7CXK.js.map → chunk-NKG2UNXE.js.map} +1 -1
- package/dist/{chunk-FBN2VHUV.cjs → chunk-QQCHM7BZ.cjs} +4 -4
- package/dist/{chunk-FBN2VHUV.cjs.map → chunk-QQCHM7BZ.cjs.map} +1 -1
- package/dist/{chunk-EBKE4DLU.js → chunk-VYNFJVRZ.js} +3 -3
- package/dist/{chunk-EBKE4DLU.js.map → chunk-VYNFJVRZ.js.map} +1 -1
- package/dist/{chunk-U2RS574O.cjs → chunk-WGXJNCRG.cjs} +101 -63
- package/dist/chunk-WGXJNCRG.cjs.map +1 -0
- package/dist/{chunk-7X6R3JIA.js → chunk-YFWDS6MX.js} +12 -7
- package/dist/chunk-YFWDS6MX.js.map +1 -0
- package/dist/components/MegaMenu/index.cjs +5 -4
- package/dist/components/MegaMenu/index.js +2 -1
- package/dist/components/SuperChat/index.cjs +3 -3
- package/dist/components/SuperChat/index.d.cts +8 -4
- package/dist/components/SuperChat/index.d.ts +8 -4
- package/dist/components/SuperChat/index.js +1 -1
- package/dist/components/SuperChat/plugins/index.cjs +3 -3
- package/dist/components/SuperChat/plugins/index.js +2 -2
- package/dist/components/ThemeProvider/index.cjs +9 -8
- package/dist/components/ThemeProvider/index.js +3 -2
- package/dist/components/Tooltip/index.cjs +3 -2
- package/dist/components/Tooltip/index.d.cts +6 -2
- package/dist/components/Tooltip/index.d.ts +6 -2
- package/dist/components/Tooltip/index.js +2 -1
- package/dist/esheet.cjs +5 -5
- package/dist/esheet.js +2 -2
- package/dist/index.cjs +111 -111
- package/dist/index.d.cts +27 -12
- package/dist/index.d.ts +27 -12
- package/dist/index.js +12 -12
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +4 -4
- package/dist/tailwind-preset.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-7X6R3JIA.js.map +0 -1
- package/dist/chunk-ECYIDXG6.cjs.map +0 -1
- package/dist/chunk-J2CKXXOW.js.map +0 -1
- package/dist/chunk-JSXIB6EJ.cjs.map +0 -1
- package/dist/chunk-KVTKSPX5.js.map +0 -1
- package/dist/chunk-TJ4GWQPM.js.map +0 -1
- package/dist/chunk-U2RS574O.cjs.map +0 -1
- package/dist/chunk-XHK5VZ4L.cjs.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { usePrefersReducedMotion } from './chunk-XDU65GLW.js';
|
|
2
|
+
import { useDirection } from './chunk-YVKBXNPK.js';
|
|
2
3
|
import { cn } from './chunk-TQONQSJO.js';
|
|
3
4
|
import * as React from 'react';
|
|
4
5
|
import { createPortal } from 'react-dom';
|
|
@@ -53,12 +54,15 @@ function Tooltip({
|
|
|
53
54
|
hideTimeoutRef.current = null;
|
|
54
55
|
}
|
|
55
56
|
}, []);
|
|
57
|
+
const direction = useDirection(wrapperRef);
|
|
56
58
|
const calculatePosition = React.useCallback(() => {
|
|
57
59
|
if (!wrapperRef.current || !tooltipRef.current) return;
|
|
58
60
|
const triggerRect = wrapperRef.current.getBoundingClientRect();
|
|
59
61
|
const tooltipRect = tooltipRef.current.getBoundingClientRect();
|
|
60
62
|
const viewportWidth = window.innerWidth;
|
|
61
63
|
const viewportHeight = window.innerHeight;
|
|
64
|
+
const rtl = direction === "rtl";
|
|
65
|
+
const resolvedPlacement = preferredPlacement === "start" ? rtl ? "right" : "left" : preferredPlacement === "end" ? rtl ? "left" : "right" : preferredPlacement;
|
|
62
66
|
const fitsPlacement = (p) => {
|
|
63
67
|
switch (p) {
|
|
64
68
|
case "top":
|
|
@@ -71,19 +75,19 @@ function Tooltip({
|
|
|
71
75
|
return triggerRect.right + tooltipRect.width + offset <= viewportWidth - VIEWPORT_PADDING;
|
|
72
76
|
}
|
|
73
77
|
};
|
|
74
|
-
let actualPlacement =
|
|
75
|
-
if (!fitsPlacement(
|
|
78
|
+
let actualPlacement = resolvedPlacement;
|
|
79
|
+
if (!fitsPlacement(resolvedPlacement)) {
|
|
76
80
|
const opposites = {
|
|
77
81
|
top: "bottom",
|
|
78
82
|
bottom: "top",
|
|
79
83
|
left: "right",
|
|
80
84
|
right: "left"
|
|
81
85
|
};
|
|
82
|
-
const opposite = opposites[
|
|
86
|
+
const opposite = opposites[resolvedPlacement];
|
|
83
87
|
if (fitsPlacement(opposite)) {
|
|
84
88
|
actualPlacement = opposite;
|
|
85
89
|
} else {
|
|
86
|
-
const perpendicular =
|
|
90
|
+
const perpendicular = resolvedPlacement === "top" || resolvedPlacement === "bottom" ? ["right", "left"] : ["bottom", "top"];
|
|
87
91
|
for (const p of perpendicular) {
|
|
88
92
|
if (fitsPlacement(p)) {
|
|
89
93
|
actualPlacement = p;
|
|
@@ -130,7 +134,7 @@ function Tooltip({
|
|
|
130
134
|
top = viewportHeight - tooltipRect.height - VIEWPORT_PADDING;
|
|
131
135
|
}
|
|
132
136
|
setPosition({ top, left, actualPlacement, arrowOffset });
|
|
133
|
-
}, [preferredPlacement, offset]);
|
|
137
|
+
}, [preferredPlacement, offset, direction]);
|
|
134
138
|
React.useEffect(() => {
|
|
135
139
|
if (typeof document === "undefined") return;
|
|
136
140
|
const checkDarkMode = () => {
|
|
@@ -272,6 +276,7 @@ function Tooltip({
|
|
|
272
276
|
style: {
|
|
273
277
|
position: "fixed",
|
|
274
278
|
top: position?.top ?? -9999,
|
|
279
|
+
// rtl-ignore -- fixed viewport coordinate; direction is handled
|
|
275
280
|
left: position?.left ?? -9999,
|
|
276
281
|
maxWidth: maxWidth === "none" ? void 0 : maxWidth,
|
|
277
282
|
visibility: position ? "visible" : "hidden",
|
|
@@ -304,5 +309,5 @@ function Tooltip({
|
|
|
304
309
|
Tooltip.displayName = "Tooltip";
|
|
305
310
|
|
|
306
311
|
export { Tooltip };
|
|
307
|
-
//# sourceMappingURL=chunk-
|
|
308
|
-
//# sourceMappingURL=chunk-
|
|
312
|
+
//# sourceMappingURL=chunk-YFWDS6MX.js.map
|
|
313
|
+
//# sourceMappingURL=chunk-YFWDS6MX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/Tooltip/Tooltip.tsx"],"names":[],"mappings":"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","file":"chunk-YFWDS6MX.js","sourcesContent":["import * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { cn } from '../../utils/cn';\nimport { useDirection } from '../../hooks/useDirection';\nimport { usePrefersReducedMotion } from '../../hooks/usePrefersReducedMotion';\n\nexport type TooltipPlacement =\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'start'\n | 'end';\n\n/** Physical placements — what `start`/`end` resolve to at position time. */\ntype PhysicalPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface TooltipProps {\n /** The content to display in the tooltip */\n content: React.ReactNode;\n /** The element that triggers the tooltip */\n children: React.ReactElement<{\n onFocus?: () => void;\n onBlur?: () => void;\n 'aria-describedby'?: string;\n }>;\n /**\n * Preferred placement of the tooltip relative to the trigger. Will flip if\n * not enough space. `left`/`right` are physical; `start`/`end` are logical\n * (they follow the trigger's text direction, so `start` is right in RTL).\n */\n placement?: TooltipPlacement;\n /** Delay in ms before showing the tooltip */\n delay?: number;\n /** Whether the tooltip is disabled */\n disabled?: boolean;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Additional class name for the tooltip content */\n className?: string;\n /** Maximum width of the tooltip in pixels. Set to 'none' for no limit. Default: 250 */\n maxWidth?: number | 'none';\n /** Offset from the trigger element in pixels. Default: 8 */\n offset?: number;\n}\n\nconst DEFAULT_OFFSET = 8;\nconst VIEWPORT_PADDING = 8;\n\n/**\n * An accessible tooltip component that displays on hover/focus.\n * Features smart positioning that automatically flips to avoid going off-screen.\n *\n * @example\n * ```tsx\n * <Tooltip content=\"This is a tooltip\">\n * <Button>Hover me</Button>\n * </Tooltip>\n * ```\n *\n * @example\n * ```tsx\n * // With multi-line content\n * <Tooltip content=\"This is a longer description that will wrap nicely\" maxWidth={200}>\n * <Button>Info</Button>\n * </Tooltip>\n * ```\n */\nfunction Tooltip({\n content,\n children,\n placement: preferredPlacement = 'top',\n delay = 200,\n disabled = false,\n open: controlledOpen,\n onOpenChange,\n className,\n maxWidth = 250,\n offset = DEFAULT_OFFSET,\n}: TooltipProps) {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false);\n const [position, setPosition] = React.useState<{\n top: number;\n left: number;\n actualPlacement: PhysicalPlacement;\n arrowOffset: number;\n } | null>(null);\n const [isDarkMode, setIsDarkMode] = React.useState(false);\n\n const showTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(\n null\n );\n const hideTimeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(\n null\n );\n const isHoveringRef = React.useRef(false);\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n const tooltipRef = React.useRef<HTMLDivElement>(null);\n const tooltipId = React.useId();\n const prefersReducedMotion = usePrefersReducedMotion();\n\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : uncontrolledOpen;\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 clearTimeouts = React.useCallback(() => {\n if (showTimeoutRef.current) {\n clearTimeout(showTimeoutRef.current);\n showTimeoutRef.current = null;\n }\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n }, []);\n\n // Calculate optimal position for tooltip. `useDirection` is reactive, so an\n // open tooltip repositions immediately when the nearest `dir` changes.\n const direction = useDirection(wrapperRef);\n const calculatePosition = React.useCallback(() => {\n if (!wrapperRef.current || !tooltipRef.current) return;\n\n const triggerRect = wrapperRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n // Resolve logical placements against the trigger's text direction.\n const rtl = direction === 'rtl';\n const resolvedPlacement: PhysicalPlacement =\n preferredPlacement === 'start'\n ? rtl\n ? 'right'\n : 'left'\n : preferredPlacement === 'end'\n ? rtl\n ? 'left'\n : 'right'\n : preferredPlacement;\n\n // Helper to check if placement fits\n const fitsPlacement = (p: PhysicalPlacement): boolean => {\n switch (p) {\n case 'top':\n return (\n triggerRect.top - tooltipRect.height - offset >= VIEWPORT_PADDING\n );\n case 'bottom':\n return (\n triggerRect.bottom + tooltipRect.height + offset <=\n viewportHeight - VIEWPORT_PADDING\n );\n case 'left':\n return (\n triggerRect.left - tooltipRect.width - offset >= VIEWPORT_PADDING\n );\n case 'right':\n return (\n triggerRect.right + tooltipRect.width + offset <=\n viewportWidth - VIEWPORT_PADDING\n );\n }\n };\n\n // Determine actual placement (flip if preferred doesn't fit)\n let actualPlacement = resolvedPlacement;\n if (!fitsPlacement(resolvedPlacement)) {\n const opposites: Record<PhysicalPlacement, PhysicalPlacement> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n };\n const opposite = opposites[resolvedPlacement];\n if (fitsPlacement(opposite)) {\n actualPlacement = opposite;\n } else {\n // Try perpendicular placements\n const perpendicular: PhysicalPlacement[] =\n resolvedPlacement === 'top' || resolvedPlacement === 'bottom'\n ? ['right', 'left']\n : ['bottom', 'top'];\n for (const p of perpendicular) {\n if (fitsPlacement(p)) {\n actualPlacement = p;\n break;\n }\n }\n }\n }\n\n // Calculate base position\n let top = 0;\n let left = 0;\n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n\n switch (actualPlacement) {\n case 'top':\n top = triggerRect.top - tooltipRect.height - offset;\n left = triggerCenterX - tooltipRect.width / 2;\n break;\n case 'bottom':\n top = triggerRect.bottom + offset;\n left = triggerCenterX - tooltipRect.width / 2;\n break;\n case 'left':\n top = triggerCenterY - tooltipRect.height / 2;\n left = triggerRect.left - tooltipRect.width - offset;\n break;\n case 'right':\n top = triggerCenterY - tooltipRect.height / 2;\n left = triggerRect.right + offset;\n break;\n }\n\n // Calculate arrow offset for when tooltip is constrained\n let arrowOffset = 0;\n const idealLeft = left;\n\n // Constrain to viewport (horizontal)\n if (left < VIEWPORT_PADDING) {\n left = VIEWPORT_PADDING;\n } else if (left + tooltipRect.width > viewportWidth - VIEWPORT_PADDING) {\n left = viewportWidth - tooltipRect.width - VIEWPORT_PADDING;\n }\n\n // Calculate arrow offset based on how much we shifted\n if (actualPlacement === 'top' || actualPlacement === 'bottom') {\n arrowOffset = idealLeft - left;\n }\n\n // Constrain to viewport (vertical)\n if (top < VIEWPORT_PADDING) {\n top = VIEWPORT_PADDING;\n } else if (top + tooltipRect.height > viewportHeight - VIEWPORT_PADDING) {\n top = viewportHeight - tooltipRect.height - VIEWPORT_PADDING;\n }\n\n setPosition({ top, left, actualPlacement, arrowOffset });\n }, [preferredPlacement, offset, direction]);\n\n // Detect dark mode from document\n React.useEffect(() => {\n if (typeof document === 'undefined') return;\n\n const checkDarkMode = () => {\n setIsDarkMode(document.documentElement.classList.contains('dark'));\n };\n\n checkDarkMode();\n\n // Watch for class changes on document\n const observer = new window.MutationObserver(checkDarkMode);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n });\n\n return () => observer.disconnect();\n }, []);\n\n // Recalculate position when open or on scroll/resize\n React.useEffect(() => {\n if (!isOpen) {\n setPosition(null);\n return;\n }\n\n // Initial calculation after render\n const rafId = window.requestAnimationFrame(() => {\n calculatePosition();\n });\n\n // Recalculate on scroll/resize\n const handleUpdate = () => calculatePosition();\n window.addEventListener('scroll', handleUpdate, true);\n window.addEventListener('resize', handleUpdate);\n\n return () => {\n window.cancelAnimationFrame(rafId);\n window.removeEventListener('scroll', handleUpdate, true);\n window.removeEventListener('resize', handleUpdate);\n };\n }, [isOpen, calculatePosition]);\n\n const handleMouseEnter = React.useCallback(() => {\n if (disabled) return;\n isHoveringRef.current = true;\n clearTimeouts();\n showTimeoutRef.current = setTimeout(() => {\n if (isHoveringRef.current) {\n setOpen(true);\n }\n }, delay);\n }, [disabled, delay, setOpen, clearTimeouts]);\n\n const handleMouseLeave = React.useCallback(() => {\n isHoveringRef.current = false;\n clearTimeouts();\n hideTimeoutRef.current = setTimeout(() => {\n if (!isHoveringRef.current) {\n setOpen(false);\n }\n }, 100);\n }, [setOpen, clearTimeouts]);\n\n const handleFocus = React.useCallback(() => {\n if (disabled) return;\n clearTimeouts();\n setOpen(true);\n }, [disabled, setOpen, clearTimeouts]);\n\n const handleBlur = React.useCallback(() => {\n clearTimeouts();\n setOpen(false);\n }, [setOpen, clearTimeouts]);\n\n // Cleanup timeouts on unmount\n React.useEffect(() => {\n return () => {\n clearTimeouts();\n };\n }, [clearTimeouts]);\n\n // Clone the child to add aria attributes and focus handlers\n const trigger = React.cloneElement(children, {\n onFocus: handleFocus,\n onBlur: handleBlur,\n 'aria-describedby': isOpen ? tooltipId : undefined,\n });\n\n // Arrow styles based on actual placement - using inline styles for border triangle\n // Arrow color matches tooltip background (neutral-900 in light mode, neutral-100 in dark mode)\n const getArrowStyle = (isDark: boolean): React.CSSProperties => {\n if (!position) return {};\n const { actualPlacement, arrowOffset } = position;\n\n const baseStyle: React.CSSProperties = {\n position: 'absolute',\n width: 0,\n height: 0,\n borderStyle: 'solid',\n // Must use content-box for CSS border triangle to work (Tailwind sets border-box globally)\n boxSizing: 'content-box',\n };\n\n const arrowSize = 5;\n // Match tooltip background colors: bg-neutral-900 (#171717) / dark:bg-neutral-100 (#f5f5f5)\n const arrowColor = isDark ? '#f5f5f5' : '#171717';\n\n // Use arrowSize for positioning to create slight overlap with tooltip body\n const arrowOffset2 = arrowSize;\n\n switch (actualPlacement) {\n case 'top':\n return {\n ...baseStyle,\n bottom: -arrowOffset2,\n left: `calc(50% + ${arrowOffset}px)`,\n transform: 'translateX(-50%)',\n borderWidth: `${arrowSize}px ${arrowSize}px 0 ${arrowSize}px`,\n borderColor: `${arrowColor} transparent transparent transparent`,\n };\n case 'bottom':\n return {\n ...baseStyle,\n top: -arrowOffset2,\n left: `calc(50% + ${arrowOffset}px)`,\n transform: 'translateX(-50%)',\n borderWidth: `0 ${arrowSize}px ${arrowSize}px ${arrowSize}px`,\n borderColor: `transparent transparent ${arrowColor} transparent`,\n };\n case 'left':\n return {\n ...baseStyle,\n right: -arrowOffset2,\n top: '50%',\n transform: 'translateY(-50%)',\n borderWidth: `${arrowSize}px 0 ${arrowSize}px ${arrowSize}px`,\n borderColor: `transparent transparent transparent ${arrowColor}`,\n };\n case 'right':\n return {\n ...baseStyle,\n left: -arrowOffset2,\n top: '50%',\n transform: 'translateY(-50%)',\n borderWidth: `${arrowSize}px ${arrowSize}px ${arrowSize}px 0`,\n borderColor: `transparent ${arrowColor} transparent transparent`,\n };\n }\n };\n\n return (\n <div\n ref={wrapperRef}\n className=\"relative inline-flex\"\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {trigger}\n {isOpen &&\n !disabled &&\n typeof document !== 'undefined' &&\n createPortal(\n <div\n ref={tooltipRef}\n id={tooltipId}\n role=\"tooltip\"\n data-slot=\"tooltip\"\n aria-hidden={!isOpen}\n style={{\n position: 'fixed',\n top: position?.top ?? -9999,\n // rtl-ignore -- fixed viewport coordinate; direction is handled\n left: position?.left ?? -9999,\n maxWidth: maxWidth === 'none' ? undefined : maxWidth,\n visibility: position ? 'visible' : 'hidden',\n // Use inline styles to ensure they work in portals (rendered outside React tree)\n backgroundColor: isDarkMode ? '#f5f5f5' : '#171717', // neutral-100 / neutral-900\n color: isDarkMode ? '#171717' : '#ffffff', // neutral-900 / white\n fontFamily:\n 'var(--mieweb-font-sans, ui-sans-serif, system-ui, sans-serif)',\n }}\n className={cn(\n 'pointer-events-none z-[9999] px-3 py-1.5 text-xs',\n 'rounded-md shadow-md',\n 'leading-normal font-semibold',\n !prefersReducedMotion && position && 'animate-fade-in',\n className\n )}\n >\n {content}\n {position && (\n <span style={getArrowStyle(isDarkMode)} aria-hidden=\"true\" />\n )}\n </div>,\n document.body\n )}\n </div>\n );\n}\n\nTooltip.displayName = 'Tooltip';\n\nexport { Tooltip };\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk6ZA574PU_cjs = require('../../chunk-6ZA574PU.cjs');
|
|
4
|
+
require('../../chunk-Z3WMDVMR.cjs');
|
|
4
5
|
require('../../chunk-EACNRR3C.cjs');
|
|
5
6
|
require('../../chunk-ANMX7YDL.cjs');
|
|
6
7
|
require('../../chunk-DXEPYK3I.cjs');
|
|
@@ -11,15 +12,15 @@ require('../../chunk-EUAMEVVI.cjs');
|
|
|
11
12
|
|
|
12
13
|
Object.defineProperty(exports, "MegaMenu", {
|
|
13
14
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunk6ZA574PU_cjs.MegaMenu; }
|
|
15
16
|
});
|
|
16
17
|
Object.defineProperty(exports, "MegaMenuBar", {
|
|
17
18
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
19
|
+
get: function () { return chunk6ZA574PU_cjs.MegaMenuBar; }
|
|
19
20
|
});
|
|
20
21
|
Object.defineProperty(exports, "normalizePath", {
|
|
21
22
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
23
|
+
get: function () { return chunk6ZA574PU_cjs.normalizePath; }
|
|
23
24
|
});
|
|
24
25
|
//# sourceMappingURL=index.cjs.map
|
|
25
26
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { MegaMenu, MegaMenuBar, normalizePath } from '../../chunk-
|
|
1
|
+
export { MegaMenu, MegaMenuBar, normalizePath } from '../../chunk-4I6BW3FB.js';
|
|
2
|
+
import '../../chunk-YVKBXNPK.js';
|
|
2
3
|
import '../../chunk-N5JDL4VE.js';
|
|
3
4
|
import '../../chunk-WFBUBT54.js';
|
|
4
5
|
import '../../chunk-GVM6DTR5.js';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var chunkJFLC7SHM_cjs = require('../../chunk-JFLC7SHM.cjs');
|
|
4
4
|
var chunkXRVMYT5G_cjs = require('../../chunk-XRVMYT5G.cjs');
|
|
5
|
-
var
|
|
5
|
+
var chunkWGXJNCRG_cjs = require('../../chunk-WGXJNCRG.cjs');
|
|
6
6
|
var chunkAJPFQF3H_cjs = require('../../chunk-AJPFQF3H.cjs');
|
|
7
7
|
require('../../chunk-GLXTVCHN.cjs');
|
|
8
8
|
var chunkKQ6GLYFZ_cjs = require('../../chunk-KQ6GLYFZ.cjs');
|
|
@@ -1411,7 +1411,7 @@ function SuperChat({
|
|
|
1411
1411
|
mediaItems.length
|
|
1412
1412
|
]);
|
|
1413
1413
|
React3__namespace.useEffect(() => {
|
|
1414
|
-
|
|
1414
|
+
chunkWGXJNCRG_cjs.notifyComposerMigrationOnce("SuperChat");
|
|
1415
1415
|
}, []);
|
|
1416
1416
|
const renderText = React3__namespace.useMemo(
|
|
1417
1417
|
() => renderTextContent ?? createMarkdownRenderer({
|
|
@@ -1897,7 +1897,7 @@ function SuperChat({
|
|
|
1897
1897
|
}
|
|
1898
1898
|
),
|
|
1899
1899
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1900
|
-
|
|
1900
|
+
chunkWGXJNCRG_cjs.ChatComposer,
|
|
1901
1901
|
{
|
|
1902
1902
|
value: draft,
|
|
1903
1903
|
onValueChange: handleDraftChange,
|
|
@@ -62,18 +62,22 @@ type UncontrolledProviderFilterProps = {
|
|
|
62
62
|
};
|
|
63
63
|
type ComposerModelSelectorProps = ComposerModelSelectorBaseProps & (ControlledProviderFilterProps | UncontrolledProviderFilterProps);
|
|
64
64
|
|
|
65
|
-
/** An
|
|
66
|
-
interface
|
|
67
|
-
/** Stable id (returned via `
|
|
65
|
+
/** An option in a composer selector-row menu (agent, voice, …). */
|
|
66
|
+
interface ComposerSelectorOption {
|
|
67
|
+
/** Stable id (returned via `onChange`). */
|
|
68
68
|
id: string;
|
|
69
69
|
/** Display label. */
|
|
70
70
|
label: string;
|
|
71
|
-
/** Optional leading icon (
|
|
71
|
+
/** Optional leading icon (falls back to the selector's `icon` in the trigger). */
|
|
72
72
|
icon?: React.ReactNode;
|
|
73
73
|
/** Optional secondary text shown in the menu. */
|
|
74
74
|
description?: string;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
+
/** An agent shown in the composer's agent selector (trigger icon defaults to a bot glyph). */
|
|
78
|
+
interface ChatComposerAgentOption extends ComposerSelectorOption {
|
|
79
|
+
}
|
|
80
|
+
|
|
77
81
|
interface SuperChatProps {
|
|
78
82
|
/** The conversation to display (host-owned state). */
|
|
79
83
|
conversation: SuperChatConversation;
|
|
@@ -62,18 +62,22 @@ type UncontrolledProviderFilterProps = {
|
|
|
62
62
|
};
|
|
63
63
|
type ComposerModelSelectorProps = ComposerModelSelectorBaseProps & (ControlledProviderFilterProps | UncontrolledProviderFilterProps);
|
|
64
64
|
|
|
65
|
-
/** An
|
|
66
|
-
interface
|
|
67
|
-
/** Stable id (returned via `
|
|
65
|
+
/** An option in a composer selector-row menu (agent, voice, …). */
|
|
66
|
+
interface ComposerSelectorOption {
|
|
67
|
+
/** Stable id (returned via `onChange`). */
|
|
68
68
|
id: string;
|
|
69
69
|
/** Display label. */
|
|
70
70
|
label: string;
|
|
71
|
-
/** Optional leading icon (
|
|
71
|
+
/** Optional leading icon (falls back to the selector's `icon` in the trigger). */
|
|
72
72
|
icon?: React.ReactNode;
|
|
73
73
|
/** Optional secondary text shown in the menu. */
|
|
74
74
|
description?: string;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
+
/** An agent shown in the composer's agent selector (trigger icon defaults to a bot glyph). */
|
|
78
|
+
interface ChatComposerAgentOption extends ComposerSelectorOption {
|
|
79
|
+
}
|
|
80
|
+
|
|
77
81
|
interface SuperChatProps {
|
|
78
82
|
/** The conversation to display (host-owned state). */
|
|
79
83
|
conversation: SuperChatConversation;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TextRenderContext } from '../../chunk-I6CY5C6A.js';
|
|
2
2
|
export { TextRenderContext, useTextRenderContext } from '../../chunk-I6CY5C6A.js';
|
|
3
3
|
import { ChatBubble, MCPToolCallDisplay, AITypingIndicator, SparklesIcon, ButtonGroup, CloseIcon, JumpToBottomButton } from '../../chunk-RM2HPQIC.js';
|
|
4
|
-
import { notifyComposerMigrationOnce, ChatComposer } from '../../chunk-
|
|
4
|
+
import { notifyComposerMigrationOnce, ChatComposer } from '../../chunk-GJPCWR4C.js';
|
|
5
5
|
import { MediaFeed } from '../../chunk-2X54ZLT6.js';
|
|
6
6
|
import '../../chunk-RISZWWEQ.js';
|
|
7
7
|
import { MediaPlayer } from '../../chunk-N54FYWG6.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkJFLC7SHM_cjs = require('../../../chunk-JFLC7SHM.cjs');
|
|
4
|
-
var
|
|
5
|
-
require('../../../chunk-
|
|
4
|
+
var chunkC66JR43M_cjs = require('../../../chunk-C66JR43M.cjs');
|
|
5
|
+
require('../../../chunk-WGXJNCRG.cjs');
|
|
6
6
|
require('../../../chunk-ZNUMOJOI.cjs');
|
|
7
7
|
require('../../../chunk-PINIBEIU.cjs');
|
|
8
8
|
require('../../../chunk-I44YNYI6.cjs');
|
|
@@ -615,7 +615,7 @@ function ZoomableImage({
|
|
|
615
615
|
),
|
|
616
616
|
open && typeof document !== "undefined" && reactDom.createPortal(
|
|
617
617
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
618
|
-
|
|
618
|
+
chunkC66JR43M_cjs.LightboxModal,
|
|
619
619
|
{
|
|
620
620
|
attachment,
|
|
621
621
|
onClose: () => setOpen(false)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useTextRenderContext } from '../../../chunk-I6CY5C6A.js';
|
|
2
|
-
import { LightboxModal } from '../../../chunk-
|
|
3
|
-
import '../../../chunk-
|
|
2
|
+
import { LightboxModal } from '../../../chunk-NKG2UNXE.js';
|
|
3
|
+
import '../../../chunk-GJPCWR4C.js';
|
|
4
4
|
import '../../../chunk-AMYFRY7K.js';
|
|
5
5
|
import '../../../chunk-OYUIEJPN.js';
|
|
6
6
|
import '../../../chunk-6NZXWKUE.js';
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkKY67AMQ5_cjs = require('../../chunk-KY67AMQ5.cjs');
|
|
4
4
|
require('../../chunk-2O7D6F67.cjs');
|
|
5
|
-
require('../../chunk-
|
|
5
|
+
require('../../chunk-GLG6UE2H.cjs');
|
|
6
6
|
require('../../chunk-YW2AKBLS.cjs');
|
|
7
|
+
require('../../chunk-Z3WMDVMR.cjs');
|
|
7
8
|
require('../../chunk-S5RVSXDV.cjs');
|
|
8
9
|
require('../../chunk-EUAMEVVI.cjs');
|
|
9
10
|
|
|
@@ -11,27 +12,27 @@ require('../../chunk-EUAMEVVI.cjs');
|
|
|
11
12
|
|
|
12
13
|
Object.defineProperty(exports, "ThemeProvider", {
|
|
13
14
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
15
|
+
get: function () { return chunkKY67AMQ5_cjs.ThemeProvider; }
|
|
15
16
|
});
|
|
16
17
|
Object.defineProperty(exports, "ThemeProviderContext", {
|
|
17
18
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
19
|
+
get: function () { return chunkKY67AMQ5_cjs.ThemeProviderContext; }
|
|
19
20
|
});
|
|
20
21
|
Object.defineProperty(exports, "ThemeToggle", {
|
|
21
22
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
23
|
+
get: function () { return chunkKY67AMQ5_cjs.ThemeToggle; }
|
|
23
24
|
});
|
|
24
25
|
Object.defineProperty(exports, "themeToggleIconVariants", {
|
|
25
26
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
27
|
+
get: function () { return chunkKY67AMQ5_cjs.themeToggleIconVariants; }
|
|
27
28
|
});
|
|
28
29
|
Object.defineProperty(exports, "themeToggleVariants", {
|
|
29
30
|
enumerable: true,
|
|
30
|
-
get: function () { return
|
|
31
|
+
get: function () { return chunkKY67AMQ5_cjs.themeToggleVariants; }
|
|
31
32
|
});
|
|
32
33
|
Object.defineProperty(exports, "useThemeContext", {
|
|
33
34
|
enumerable: true,
|
|
34
|
-
get: function () { return
|
|
35
|
+
get: function () { return chunkKY67AMQ5_cjs.useThemeContext; }
|
|
35
36
|
});
|
|
36
37
|
//# sourceMappingURL=index.cjs.map
|
|
37
38
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export { ThemeProvider, ThemeProviderContext, ThemeToggle, themeToggleIconVariants, themeToggleVariants, useThemeContext } from '../../chunk-
|
|
1
|
+
export { ThemeProvider, ThemeProviderContext, ThemeToggle, themeToggleIconVariants, themeToggleVariants, useThemeContext } from '../../chunk-EI4JU5JF.js';
|
|
2
2
|
import '../../chunk-KJZNEVYM.js';
|
|
3
|
-
import '../../chunk-
|
|
3
|
+
import '../../chunk-YFWDS6MX.js';
|
|
4
4
|
import '../../chunk-XDU65GLW.js';
|
|
5
|
+
import '../../chunk-YVKBXNPK.js';
|
|
5
6
|
import '../../chunk-TQONQSJO.js';
|
|
6
7
|
import '../../chunk-PX6F3LHL.js';
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkGLG6UE2H_cjs = require('../../chunk-GLG6UE2H.cjs');
|
|
4
4
|
require('../../chunk-YW2AKBLS.cjs');
|
|
5
|
+
require('../../chunk-Z3WMDVMR.cjs');
|
|
5
6
|
require('../../chunk-S5RVSXDV.cjs');
|
|
6
7
|
require('../../chunk-EUAMEVVI.cjs');
|
|
7
8
|
|
|
@@ -9,7 +10,7 @@ require('../../chunk-EUAMEVVI.cjs');
|
|
|
9
10
|
|
|
10
11
|
Object.defineProperty(exports, "Tooltip", {
|
|
11
12
|
enumerable: true,
|
|
12
|
-
get: function () { return
|
|
13
|
+
get: function () { return chunkGLG6UE2H_cjs.Tooltip; }
|
|
13
14
|
});
|
|
14
15
|
//# sourceMappingURL=index.cjs.map
|
|
15
16
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
|
|
4
|
-
type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';
|
|
4
|
+
type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right' | 'start' | 'end';
|
|
5
5
|
interface TooltipProps {
|
|
6
6
|
/** The content to display in the tooltip */
|
|
7
7
|
content: React.ReactNode;
|
|
@@ -11,7 +11,11 @@ interface TooltipProps {
|
|
|
11
11
|
onBlur?: () => void;
|
|
12
12
|
'aria-describedby'?: string;
|
|
13
13
|
}>;
|
|
14
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Preferred placement of the tooltip relative to the trigger. Will flip if
|
|
16
|
+
* not enough space. `left`/`right` are physical; `start`/`end` are logical
|
|
17
|
+
* (they follow the trigger's text direction, so `start` is right in RTL).
|
|
18
|
+
*/
|
|
15
19
|
placement?: TooltipPlacement;
|
|
16
20
|
/** Delay in ms before showing the tooltip */
|
|
17
21
|
delay?: number;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
|
|
4
|
-
type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';
|
|
4
|
+
type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right' | 'start' | 'end';
|
|
5
5
|
interface TooltipProps {
|
|
6
6
|
/** The content to display in the tooltip */
|
|
7
7
|
content: React.ReactNode;
|
|
@@ -11,7 +11,11 @@ interface TooltipProps {
|
|
|
11
11
|
onBlur?: () => void;
|
|
12
12
|
'aria-describedby'?: string;
|
|
13
13
|
}>;
|
|
14
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Preferred placement of the tooltip relative to the trigger. Will flip if
|
|
16
|
+
* not enough space. `left`/`right` are physical; `start`/`end` are logical
|
|
17
|
+
* (they follow the trigger's text direction, so `start` is right in RTL).
|
|
18
|
+
*/
|
|
15
19
|
placement?: TooltipPlacement;
|
|
16
20
|
/** Delay in ms before showing the tooltip */
|
|
17
21
|
delay?: number;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { Tooltip } from '../../chunk-
|
|
1
|
+
export { Tooltip } from '../../chunk-YFWDS6MX.js';
|
|
2
2
|
import '../../chunk-XDU65GLW.js';
|
|
3
|
+
import '../../chunk-YVKBXNPK.js';
|
|
3
4
|
import '../../chunk-TQONQSJO.js';
|
|
4
5
|
import '../../chunk-PX6F3LHL.js';
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
package/dist/esheet.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('./chunk-
|
|
3
|
+
var chunkQQCHM7BZ_cjs = require('./chunk-QQCHM7BZ.cjs');
|
|
4
|
+
require('./chunk-GLG6UE2H.cjs');
|
|
5
5
|
require('./chunk-G7EQ3JPX.cjs');
|
|
6
6
|
require('./chunk-AIJAFPGJ.cjs');
|
|
7
7
|
require('./chunk-ZSGEGISB.cjs');
|
|
@@ -84,7 +84,7 @@ function MedicationListField({
|
|
|
84
84
|
return definition.medications ?? [];
|
|
85
85
|
}, [response?.answer, definition.medications]);
|
|
86
86
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
87
|
-
|
|
87
|
+
chunkQQCHM7BZ_cjs.MedicationReconciliation,
|
|
88
88
|
{
|
|
89
89
|
medications,
|
|
90
90
|
onChange: (next) => onResponse({ answer: JSON.stringify({ medications: next }) }),
|
|
@@ -141,7 +141,7 @@ function AllergyListField({
|
|
|
141
141
|
codeLookup
|
|
142
142
|
}) {
|
|
143
143
|
const definition = field.definition;
|
|
144
|
-
const ambientCodeLookup =
|
|
144
|
+
const ambientCodeLookup = chunkQQCHM7BZ_cjs.useCodeLookupConfig();
|
|
145
145
|
const effectiveCodeLookup = codeLookup === false ? void 0 : codeLookup ?? ambientCodeLookup ?? void 0;
|
|
146
146
|
const value = React__namespace.useMemo(() => {
|
|
147
147
|
if (response?.answer) return parseValue2(response.answer);
|
|
@@ -151,7 +151,7 @@ function AllergyListField({
|
|
|
151
151
|
onResponse({ answer: JSON.stringify(next) });
|
|
152
152
|
};
|
|
153
153
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
154
|
-
|
|
154
|
+
chunkQQCHM7BZ_cjs.AllergyManager,
|
|
155
155
|
{
|
|
156
156
|
allergies: value.allergies,
|
|
157
157
|
onChange: (allergies) => commit({
|
package/dist/esheet.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { MedicationReconciliation, useCodeLookupConfig, AllergyManager } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
import { MedicationReconciliation, useCodeLookupConfig, AllergyManager } from './chunk-VYNFJVRZ.js';
|
|
2
|
+
import './chunk-YFWDS6MX.js';
|
|
3
3
|
import './chunk-EPSB4WTL.js';
|
|
4
4
|
import './chunk-I3WGZPI6.js';
|
|
5
5
|
import './chunk-7IBZA7G6.js';
|