@mieweb/ui 0.11.0-dev.0 → 0.11.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/{chunk-J2CKXXOW.js → chunk-4I6BW3FB.js} +8 -5
  2. package/dist/chunk-4I6BW3FB.js.map +1 -0
  3. package/dist/{chunk-XHK5VZ4L.cjs → chunk-6ZA574PU.cjs} +8 -5
  4. package/dist/chunk-6ZA574PU.cjs.map +1 -0
  5. package/dist/{chunk-ECYIDXG6.cjs → chunk-AFDW64EF.cjs} +4 -2
  6. package/dist/chunk-AFDW64EF.cjs.map +1 -0
  7. package/dist/{chunk-KVTKSPX5.js → chunk-AG5EKCE4.js} +4 -2
  8. package/dist/chunk-AG5EKCE4.js.map +1 -0
  9. package/dist/{chunk-OW3SQJ7P.js → chunk-EI4JU5JF.js} +3 -3
  10. package/dist/{chunk-OW3SQJ7P.js.map → chunk-EI4JU5JF.js.map} +1 -1
  11. package/dist/{chunk-JSXIB6EJ.cjs → chunk-GLG6UE2H.cjs} +12 -7
  12. package/dist/chunk-GLG6UE2H.cjs.map +1 -0
  13. package/dist/{chunk-H3ROMJYI.cjs → chunk-KY67AMQ5.cjs} +4 -4
  14. package/dist/{chunk-H3ROMJYI.cjs.map → chunk-KY67AMQ5.cjs.map} +1 -1
  15. package/dist/{chunk-FBN2VHUV.cjs → chunk-QQCHM7BZ.cjs} +4 -4
  16. package/dist/{chunk-FBN2VHUV.cjs.map → chunk-QQCHM7BZ.cjs.map} +1 -1
  17. package/dist/{chunk-EBKE4DLU.js → chunk-VYNFJVRZ.js} +3 -3
  18. package/dist/{chunk-EBKE4DLU.js.map → chunk-VYNFJVRZ.js.map} +1 -1
  19. package/dist/{chunk-7X6R3JIA.js → chunk-YFWDS6MX.js} +12 -7
  20. package/dist/chunk-YFWDS6MX.js.map +1 -0
  21. package/dist/components/MegaMenu/index.cjs +5 -4
  22. package/dist/components/MegaMenu/index.js +2 -1
  23. package/dist/components/ThemeProvider/index.cjs +9 -8
  24. package/dist/components/ThemeProvider/index.js +3 -2
  25. package/dist/components/Tooltip/index.cjs +3 -2
  26. package/dist/components/Tooltip/index.d.cts +6 -2
  27. package/dist/components/Tooltip/index.d.ts +6 -2
  28. package/dist/components/Tooltip/index.js +2 -1
  29. package/dist/esheet.cjs +5 -5
  30. package/dist/esheet.js +2 -2
  31. package/dist/index.cjs +64 -64
  32. package/dist/index.d.cts +6 -2
  33. package/dist/index.d.ts +6 -2
  34. package/dist/index.js +8 -8
  35. package/dist/styles.css +1 -1
  36. package/dist/tailwind-preset.cjs +4 -4
  37. package/dist/tailwind-preset.js +1 -1
  38. package/package.json +1 -1
  39. package/dist/chunk-7X6R3JIA.js.map +0 -1
  40. package/dist/chunk-ECYIDXG6.cjs.map +0 -1
  41. package/dist/chunk-J2CKXXOW.js.map +0 -1
  42. package/dist/chunk-JSXIB6EJ.cjs.map +0 -1
  43. package/dist/chunk-KVTKSPX5.js.map +0 -1
  44. 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 = preferredPlacement;
75
- if (!fitsPlacement(preferredPlacement)) {
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[preferredPlacement];
86
+ const opposite = opposites[resolvedPlacement];
83
87
  if (fitsPlacement(opposite)) {
84
88
  actualPlacement = opposite;
85
89
  } else {
86
- const perpendicular = preferredPlacement === "top" || preferredPlacement === "bottom" ? ["right", "left"] : ["bottom", "top"];
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-7X6R3JIA.js.map
308
- //# sourceMappingURL=chunk-7X6R3JIA.js.map
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 chunkXHK5VZ4L_cjs = require('../../chunk-XHK5VZ4L.cjs');
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 chunkXHK5VZ4L_cjs.MegaMenu; }
15
+ get: function () { return chunk6ZA574PU_cjs.MegaMenu; }
15
16
  });
16
17
  Object.defineProperty(exports, "MegaMenuBar", {
17
18
  enumerable: true,
18
- get: function () { return chunkXHK5VZ4L_cjs.MegaMenuBar; }
19
+ get: function () { return chunk6ZA574PU_cjs.MegaMenuBar; }
19
20
  });
20
21
  Object.defineProperty(exports, "normalizePath", {
21
22
  enumerable: true,
22
- get: function () { return chunkXHK5VZ4L_cjs.normalizePath; }
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-J2CKXXOW.js';
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';
@@ -1,9 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkH3ROMJYI_cjs = require('../../chunk-H3ROMJYI.cjs');
3
+ var chunkKY67AMQ5_cjs = require('../../chunk-KY67AMQ5.cjs');
4
4
  require('../../chunk-2O7D6F67.cjs');
5
- require('../../chunk-JSXIB6EJ.cjs');
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 chunkH3ROMJYI_cjs.ThemeProvider; }
15
+ get: function () { return chunkKY67AMQ5_cjs.ThemeProvider; }
15
16
  });
16
17
  Object.defineProperty(exports, "ThemeProviderContext", {
17
18
  enumerable: true,
18
- get: function () { return chunkH3ROMJYI_cjs.ThemeProviderContext; }
19
+ get: function () { return chunkKY67AMQ5_cjs.ThemeProviderContext; }
19
20
  });
20
21
  Object.defineProperty(exports, "ThemeToggle", {
21
22
  enumerable: true,
22
- get: function () { return chunkH3ROMJYI_cjs.ThemeToggle; }
23
+ get: function () { return chunkKY67AMQ5_cjs.ThemeToggle; }
23
24
  });
24
25
  Object.defineProperty(exports, "themeToggleIconVariants", {
25
26
  enumerable: true,
26
- get: function () { return chunkH3ROMJYI_cjs.themeToggleIconVariants; }
27
+ get: function () { return chunkKY67AMQ5_cjs.themeToggleIconVariants; }
27
28
  });
28
29
  Object.defineProperty(exports, "themeToggleVariants", {
29
30
  enumerable: true,
30
- get: function () { return chunkH3ROMJYI_cjs.themeToggleVariants; }
31
+ get: function () { return chunkKY67AMQ5_cjs.themeToggleVariants; }
31
32
  });
32
33
  Object.defineProperty(exports, "useThemeContext", {
33
34
  enumerable: true,
34
- get: function () { return chunkH3ROMJYI_cjs.useThemeContext; }
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-OW3SQJ7P.js';
1
+ export { ThemeProvider, ThemeProviderContext, ThemeToggle, themeToggleIconVariants, themeToggleVariants, useThemeContext } from '../../chunk-EI4JU5JF.js';
2
2
  import '../../chunk-KJZNEVYM.js';
3
- import '../../chunk-7X6R3JIA.js';
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 chunkJSXIB6EJ_cjs = require('../../chunk-JSXIB6EJ.cjs');
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 chunkJSXIB6EJ_cjs.Tooltip; }
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
- /** Preferred placement of the tooltip relative to the trigger. Will flip if not enough space. */
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
- /** Preferred placement of the tooltip relative to the trigger. Will flip if not enough space. */
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-7X6R3JIA.js';
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 chunkFBN2VHUV_cjs = require('./chunk-FBN2VHUV.cjs');
4
- require('./chunk-JSXIB6EJ.cjs');
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
- chunkFBN2VHUV_cjs.MedicationReconciliation,
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 = chunkFBN2VHUV_cjs.useCodeLookupConfig();
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
- chunkFBN2VHUV_cjs.AllergyManager,
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-EBKE4DLU.js';
2
- import './chunk-7X6R3JIA.js';
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';