@banzamel/mineralui 2.1.2 → 2.1.4

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 (121) hide show
  1. package/README.md +1 -1
  2. package/dist/{MDetailList-BhKBJwpd.cjs → MDetailList-DTLU7HQZ.cjs} +2 -2
  3. package/dist/{MDetailList-BhKBJwpd.cjs.map → MDetailList-DTLU7HQZ.cjs.map} +1 -1
  4. package/dist/{MDetailList-BjvZUyNj.js → MDetailList-fDhVyhm7.js} +3 -3
  5. package/dist/{MDetailList-BjvZUyNj.js.map → MDetailList-fDhVyhm7.js.map} +1 -1
  6. package/dist/{MDropdownMenu-hXaIMkAj.cjs → MDropdownMenu-BvN5grK5.cjs} +2 -2
  7. package/dist/{MDropdownMenu-hXaIMkAj.cjs.map → MDropdownMenu-BvN5grK5.cjs.map} +1 -1
  8. package/dist/{MDropdownMenu-CZmU3uku.js → MDropdownMenu-CFoKJ7V6.js} +2 -2
  9. package/dist/{MDropdownMenu-CZmU3uku.js.map → MDropdownMenu-CFoKJ7V6.js.map} +1 -1
  10. package/dist/{MInput-BhTAfpYS.cjs → MInput-BpTlP8GE.cjs} +2 -2
  11. package/dist/{MInput-BhTAfpYS.cjs.map → MInput-BpTlP8GE.cjs.map} +1 -1
  12. package/dist/{MInput-CgtX0fUN.js → MInput-C8ObGzQk.js} +2 -2
  13. package/dist/{MInput-CgtX0fUN.js.map → MInput-C8ObGzQk.js.map} +1 -1
  14. package/dist/{MInputCVC-BGYhUGDE.js → MInputCVC-B4V0QI5h.js} +24 -24
  15. package/dist/{MInputCVC-BGYhUGDE.js.map → MInputCVC-B4V0QI5h.js.map} +1 -1
  16. package/dist/{MInputCVC-E2Z2hYfy.cjs → MInputCVC-BlY5OrVn.cjs} +2 -2
  17. package/dist/{MInputCVC-E2Z2hYfy.cjs.map → MInputCVC-BlY5OrVn.cjs.map} +1 -1
  18. package/dist/{MInputSearch-DE9Jqp0i.cjs → MInputSearch-9wcXlY8-.cjs} +2 -2
  19. package/dist/{MInputSearch-DE9Jqp0i.cjs.map → MInputSearch-9wcXlY8-.cjs.map} +1 -1
  20. package/dist/{MInputSearch-DEr5HBgw.js → MInputSearch-BM8gLlJ1.js} +3 -3
  21. package/dist/{MInputSearch-DEr5HBgw.js.map → MInputSearch-BM8gLlJ1.js.map} +1 -1
  22. package/dist/{MPagination-DTqT33Mx.cjs → MPagination-C6QQdEj_.cjs} +2 -2
  23. package/dist/{MPagination-DTqT33Mx.cjs.map → MPagination-C6QQdEj_.cjs.map} +1 -1
  24. package/dist/{MPagination-7yTbB8dZ.js → MPagination-CgmNEAZX.js} +6 -6
  25. package/dist/{MPagination-7yTbB8dZ.js.map → MPagination-CgmNEAZX.js.map} +1 -1
  26. package/dist/MPopover-C5aaGhma.js +150 -0
  27. package/dist/MPopover-C5aaGhma.js.map +1 -0
  28. package/dist/MPopover-CV-9MArH.cjs +2 -0
  29. package/dist/MPopover-CV-9MArH.cjs.map +1 -0
  30. package/dist/{MTag-BtlOVMRl.cjs → MTag-BzTp1crT.cjs} +2 -2
  31. package/dist/{MTag-BtlOVMRl.cjs.map → MTag-BzTp1crT.cjs.map} +1 -1
  32. package/dist/{MTag-BF6htPr-.js → MTag-D9q6faIk.js} +2 -2
  33. package/dist/{MTag-BF6htPr-.js.map → MTag-D9q6faIk.js.map} +1 -1
  34. package/dist/{MTreeView-DQaRF0ty.js → MTreeView-B1J7uqd1.js} +63 -63
  35. package/dist/{MTreeView-DQaRF0ty.js.map → MTreeView-B1J7uqd1.js.map} +1 -1
  36. package/dist/{MTreeView-1IqmVPMv.cjs → MTreeView-DuQkm0ZV.cjs} +2 -2
  37. package/dist/{MTreeView-1IqmVPMv.cjs.map → MTreeView-DuQkm0ZV.cjs.map} +1 -1
  38. package/dist/{cards-BBYh24NQ.cjs → cards-CQSYgH9U.cjs} +2 -2
  39. package/dist/{cards-BBYh24NQ.cjs.map → cards-CQSYgH9U.cjs.map} +1 -1
  40. package/dist/{cards-Du2kX3Br.js → cards-Cpr9B8Mu.js} +73 -73
  41. package/dist/{cards-Du2kX3Br.js.map → cards-Cpr9B8Mu.js.map} +1 -1
  42. package/dist/cards.cjs +1 -1
  43. package/dist/cards.js +1 -1
  44. package/dist/components/primitives/MPopover/popoverStack.d.ts +32 -0
  45. package/dist/{controls-Cbv4FmNq.js → controls-BKAhqjNM.js} +2 -2
  46. package/dist/{controls-Cbv4FmNq.js.map → controls-BKAhqjNM.js.map} +1 -1
  47. package/dist/{controls-DrdHBBtm.cjs → controls-CT_0lIPr.cjs} +2 -2
  48. package/dist/{controls-DrdHBBtm.cjs.map → controls-CT_0lIPr.cjs.map} +1 -1
  49. package/dist/controls.cjs +1 -1
  50. package/dist/controls.js +1 -1
  51. package/dist/{data-Csb03WFo.cjs → data-BZ92hzXx.cjs} +2 -2
  52. package/dist/{data-Csb03WFo.cjs.map → data-BZ92hzXx.cjs.map} +1 -1
  53. package/dist/{data-BgTkBMkP.js → data-C-6DP7iY.js} +16 -16
  54. package/dist/{data-BgTkBMkP.js.map → data-C-6DP7iY.js.map} +1 -1
  55. package/dist/data.cjs +1 -1
  56. package/dist/data.js +2 -2
  57. package/dist/{display-D9H8MP8D.js → display-BF4jASt9.js} +16 -16
  58. package/dist/{display-D9H8MP8D.js.map → display-BF4jASt9.js.map} +1 -1
  59. package/dist/{display-IMWtdmxS.cjs → display-DMix8BmD.cjs} +3 -3
  60. package/dist/{display-IMWtdmxS.cjs.map → display-DMix8BmD.cjs.map} +1 -1
  61. package/dist/display.cjs +1 -1
  62. package/dist/display.js +2 -2
  63. package/dist/{dropdowns-oj4--GbK.js → dropdowns-DiThUF7D.js} +91 -91
  64. package/dist/{dropdowns-oj4--GbK.js.map → dropdowns-DiThUF7D.js.map} +1 -1
  65. package/dist/{dropdowns-D_nUdflh.cjs → dropdowns-bQ0cEKNN.cjs} +2 -2
  66. package/dist/{dropdowns-D_nUdflh.cjs.map → dropdowns-bQ0cEKNN.cjs.map} +1 -1
  67. package/dist/dropdowns.cjs +1 -1
  68. package/dist/dropdowns.js +1 -1
  69. package/dist/{feedback-u1ssUT7e.cjs → feedback-4TjD57rX.cjs} +2 -2
  70. package/dist/{feedback-u1ssUT7e.cjs.map → feedback-4TjD57rX.cjs.map} +1 -1
  71. package/dist/{feedback-D7BTlioj.js → feedback-DW-cehnb.js} +35 -35
  72. package/dist/{feedback-D7BTlioj.js.map → feedback-DW-cehnb.js.map} +1 -1
  73. package/dist/feedback.cjs +1 -1
  74. package/dist/feedback.js +2 -2
  75. package/dist/icons/glyphs/MCoinIcon.d.ts +2 -0
  76. package/dist/icons/glyphs/MMoneyIcon.d.ts +2 -0
  77. package/dist/icons/glyphs/MReceiptIcon.d.ts +2 -0
  78. package/dist/icons/glyphs/MWalletIcon.d.ts +2 -0
  79. package/dist/icons/index.d.ts +4 -0
  80. package/dist/{icons-DLP-Rs6z.js → icons-CBMl-kOM.js} +221 -166
  81. package/dist/icons-CBMl-kOM.js.map +1 -0
  82. package/dist/icons-D675Im0B.cjs +2 -0
  83. package/dist/icons-D675Im0B.cjs.map +1 -0
  84. package/dist/icons.cjs +1 -1
  85. package/dist/icons.js +2 -2
  86. package/dist/index.cjs +1 -1
  87. package/dist/index.js +53 -53
  88. package/dist/{inputs-DQrjGfwd.js → inputs-CQoi402V.js} +180 -180
  89. package/dist/{inputs-DQrjGfwd.js.map → inputs-CQoi402V.js.map} +1 -1
  90. package/dist/{inputs-DsFdc0Io.cjs → inputs-yaaTPTsY.cjs} +2 -2
  91. package/dist/{inputs-DsFdc0Io.cjs.map → inputs-yaaTPTsY.cjs.map} +1 -1
  92. package/dist/inputs.cjs +1 -1
  93. package/dist/inputs.js +4 -4
  94. package/dist/{layout-BuvV-N9H.js → layout-CdSpVJuK.js} +32 -32
  95. package/dist/{layout-BuvV-N9H.js.map → layout-CdSpVJuK.js.map} +1 -1
  96. package/dist/{layout-B_2yBP1M.cjs → layout-Ddo7HUPu.cjs} +2 -2
  97. package/dist/{layout-B_2yBP1M.cjs.map → layout-Ddo7HUPu.cjs.map} +1 -1
  98. package/dist/layout.cjs +1 -1
  99. package/dist/layout.js +2 -2
  100. package/dist/{media-Xt6MkVhb.cjs → media-DRz3JZfr.cjs} +2 -2
  101. package/dist/{media-Xt6MkVhb.cjs.map → media-DRz3JZfr.cjs.map} +1 -1
  102. package/dist/{media-5IsYrhIQ.js → media-vOQOIYFD.js} +11 -11
  103. package/dist/{media-5IsYrhIQ.js.map → media-vOQOIYFD.js.map} +1 -1
  104. package/dist/media.cjs +1 -1
  105. package/dist/media.js +1 -1
  106. package/dist/{overlays-BAJDNT1m.cjs → overlays-BUZEaZaJ.cjs} +2 -2
  107. package/dist/{overlays-BAJDNT1m.cjs.map → overlays-BUZEaZaJ.cjs.map} +1 -1
  108. package/dist/{overlays-WA3jnWTG.js → overlays-C1vO_A2I.js} +50 -50
  109. package/dist/{overlays-WA3jnWTG.js.map → overlays-C1vO_A2I.js.map} +1 -1
  110. package/dist/overlays.cjs +1 -1
  111. package/dist/overlays.js +2 -2
  112. package/dist/primitives.cjs +1 -1
  113. package/dist/primitives.js +1 -1
  114. package/package.json +1 -1
  115. package/dist/MPopover-BRuwva-c.js +0 -95
  116. package/dist/MPopover-BRuwva-c.js.map +0 -1
  117. package/dist/MPopover-hDqrn317.cjs +0 -2
  118. package/dist/MPopover-hDqrn317.cjs.map +0 -1
  119. package/dist/icons-BfdQ45F2.cjs +0 -2
  120. package/dist/icons-BfdQ45F2.cjs.map +0 -1
  121. package/dist/icons-DLP-Rs6z.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"overlays-BAJDNT1m.cjs","names":[],"sources":["../src/components/overlays/MModal/MModal.tsx","../src/components/overlays/MSheet/MSheet.tsx","../src/components/overlays/MCommandPalette/MCommandPalette.tsx","../src/components/overlays/MDrawer/MDrawer.tsx","../src/components/overlays/MPopconfirm/MPopconfirm.tsx"],"sourcesContent":["import {useEffect, useState, useCallback, useRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport type {MModalProps} from './MModal.types'\nimport {MCard, MCardBody, MCardFooter, MCardHeader} from '../../cards'\nimport {MPortal} from '../../primitives'\nimport {cn} from '../../../utils/cn'\nimport './MModal.css'\n\nconst EXIT_DURATION = 540\n\n// Render blocking overlay content for dense details and mobile-friendly dialogs.\nexport function MModal({\n open,\n onClose,\n title,\n description,\n footer,\n size = 'md',\n closeOnBackdrop = true,\n closeOnEscape = true,\n className,\n children,\n ...rest\n}: MModalProps) {\n const [mounted, setMounted] = useState(false)\n const [closing, setClosing] = useState(false)\n const backdropRef = useRef<HTMLDivElement>(null)\n\n // Open → mount immediately\n useEffect(() => {\n if (open) {\n setMounted(true)\n setClosing(false)\n }\n }, [open])\n\n // Close → animate out, then unmount\n useEffect(() => {\n if (!open && mounted) {\n setClosing(true)\n const timer = setTimeout(() => {\n setMounted(false)\n setClosing(false)\n }, EXIT_DURATION)\n return () => clearTimeout(timer)\n }\n }, [open, mounted])\n\n useEffect(() => {\n if (!open || !closeOnEscape) return\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') onClose()\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [closeOnEscape, onClose, open])\n\n useEffect(() => {\n if (!mounted) return\n\n const previousOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n\n return () => {\n document.body.style.overflow = previousOverflow\n }\n }, [mounted])\n\n if (!mounted) return null\n\n const handleBackdropClick = (event: MouseEvent<HTMLDivElement>) => {\n if (!closeOnBackdrop) return\n if (event.target === event.currentTarget) onClose()\n }\n\n return (\n <MPortal>\n <div\n ref={backdropRef}\n className={cn('mineral-backdrop', 'modal-backdrop', closing && 'closing')}\n onMouseDown={handleBackdropClick}\n >\n <div className={'modal-shell'}>\n <MCard\n className={cn('modal', size, className)}\n role={'dialog'}\n aria-modal={'true'}\n aria-labelledby={title ? 'mineral-modal-title' : undefined}\n {...rest}\n >\n {(title || description) && (\n <MCardHeader>\n {title && (\n <div id={'mineral-modal-title'} className={'modal-title'}>\n {title}\n </div>\n )}\n {description && <div className={'modal-description'}>{description}</div>}\n </MCardHeader>\n )}\n <MCardBody>{children}</MCardBody>\n {footer && <MCardFooter>{footer}</MCardFooter>}\n </MCard>\n </div>\n </div>\n </MPortal>\n )\n}\n","import {useEffect, useId, useRef, useState} from 'react'\nimport type {PointerEvent as ReactPointerEvent, MouseEvent} from 'react'\nimport type {MSheetProps, MSheetSize} from './MSheet.types'\nimport {MCard, MCardBody, MCardFooter, MCardHeader} from '../../cards'\nimport {MButton} from '../../controls'\nimport {MPortal} from '../../primitives'\nimport {MCloseIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MSheet.css'\n\nconst EXIT_DURATION = 540\nconst CLOSE_DRAG_THRESHOLD = 72\n\nconst SHEET_HEIGHTS: Record<MSheetSize, string> = {\n sm: '32vh',\n md: '52vh',\n lg: '72vh',\n full: '92vh',\n}\n\nexport function MSheet({\n open,\n onClose,\n title,\n description,\n footer,\n size = 'md',\n closeOnBackdrop = true,\n closeOnEscape = true,\n className,\n children,\n style,\n ...rest\n}: MSheetProps) {\n const titleId = useId()\n const [mounted, setMounted] = useState(false)\n const [closing, setClosing] = useState(false)\n const [dragOffset, setDragOffset] = useState(0)\n\n const dragStateRef = useRef<{pointerId: number; startY: number} | null>(null)\n const dragOffsetRef = useRef(0)\n\n useEffect(() => {\n if (open) {\n setMounted(true)\n setClosing(false)\n setDragOffset(0)\n dragOffsetRef.current = 0\n }\n }, [open])\n\n useEffect(() => {\n if (!open && mounted) {\n setClosing(true)\n const timer = window.setTimeout(() => {\n setMounted(false)\n setClosing(false)\n }, EXIT_DURATION)\n return () => window.clearTimeout(timer)\n }\n }, [open, mounted])\n\n useEffect(() => {\n if (!mounted) return\n\n const previousOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n\n return () => {\n document.body.style.overflow = previousOverflow\n }\n }, [mounted])\n\n useEffect(() => {\n if (!open || !closeOnEscape) return\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') onClose()\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [closeOnEscape, onClose, open])\n\n function handleBackdropClick(event: MouseEvent<HTMLDivElement>) {\n if (closeOnBackdrop && event.target === event.currentTarget) {\n onClose()\n }\n }\n\n function handleHandlePointerDown(event: ReactPointerEvent<HTMLButtonElement>) {\n event.preventDefault()\n event.currentTarget.setPointerCapture(event.pointerId)\n\n dragStateRef.current = {\n pointerId: event.pointerId,\n startY: event.clientY,\n }\n setDragOffset(0)\n dragOffsetRef.current = 0\n }\n\n function handleHandlePointerMove(event: ReactPointerEvent<HTMLButtonElement>) {\n const dragState = dragStateRef.current\n if (!dragState || dragState.pointerId !== event.pointerId) {\n return\n }\n\n const nextOffset = Math.max(event.clientY - dragState.startY, 0)\n dragOffsetRef.current = nextOffset\n setDragOffset(nextOffset)\n }\n\n function finishDrag(pointerId: number) {\n const dragState = dragStateRef.current\n if (!dragState || dragState.pointerId !== pointerId) {\n return\n }\n\n dragStateRef.current = null\n\n if (dragOffsetRef.current > CLOSE_DRAG_THRESHOLD) {\n setDragOffset(0)\n dragOffsetRef.current = 0\n onClose()\n return\n }\n\n setDragOffset(0)\n dragOffsetRef.current = 0\n }\n\n if (!mounted) return null\n\n const resolvedHeight = SHEET_HEIGHTS[size]\n const transformStyle = dragOffset > 0 ? `translateY(${dragOffset}px)` : undefined\n\n return (\n <MPortal>\n <div\n className={cn('mineral-backdrop', 'sheet-backdrop', closing && 'closing')}\n onMouseDown={handleBackdropClick}\n >\n <div className=\"sheet-shell\" style={{transform: transformStyle}}>\n <MCard\n className={cn('sheet', `size-${size}`, className)}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n style={{\n ...style,\n height: size === 'full' ? resolvedHeight : undefined,\n maxHeight: resolvedHeight,\n }}\n {...rest}\n >\n <button\n type=\"button\"\n className=\"sheet-grabber\"\n onPointerDown={handleHandlePointerDown}\n onPointerMove={handleHandlePointerMove}\n onPointerUp={(event) => finishDrag(event.pointerId)}\n onPointerCancel={(event) => finishDrag(event.pointerId)}\n aria-label=\"Drag down to close\"\n >\n <span className=\"sheet-handle\" />\n </button>\n\n {(title || description) && (\n <MCardHeader className=\"sheet-header\">\n <div className=\"sheet-copy\">\n {title && (\n <div id={titleId} className=\"sheet-title\">\n {title}\n </div>\n )}\n {description && <div className=\"sheet-description\">{description}</div>}\n </div>\n <MButton\n variant=\"link\"\n color=\"neutral\"\n iconOnly\n size=\"sm\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"sheet-close\"\n >\n <MCloseIcon />\n </MButton>\n </MCardHeader>\n )}\n\n <MCardBody className=\"sheet-body\">{children}</MCardBody>\n\n {footer && <MCardFooter className=\"sheet-footer\">{footer}</MCardFooter>}\n </MCard>\n </div>\n </div>\n </MPortal>\n )\n}\n","import {useEffect, useMemo, useRef, useState} from 'react'\nimport type {KeyboardEvent as ReactKeyboardEvent, ReactNode} from 'react'\nimport type {MCommandPaletteItem, MCommandPaletteProps} from './MCommandPalette.types'\nimport {MButton} from '../../controls'\nimport {MInputSearch} from '../../inputs'\nimport {MCard, MCardBody, MCardHeader} from '../../cards'\nimport {MInline, MSimpleGrid, MStack} from '../../layout'\nimport {MSheet} from '../MSheet'\nimport {MTooltip} from '../MTooltip'\nimport {MBadge} from '../../feedback'\nimport {MLinkIcon, MSearchIcon} from '../../../icons'\nimport {MKbd, MHeading, MText} from '../../typography'\nimport {cn} from '../../../utils/cn'\nimport {useKeyboardNav} from '../../../utils/useKeyboardNav'\nimport './MCommandPalette.css'\n\nfunction normalizeText(value: ReactNode) {\n if (typeof value === 'string' || typeof value === 'number') {\n return value.toString()\n }\n\n return ''\n}\n\nfunction matchesShortcut(event: KeyboardEvent, shortcut: string) {\n const normalized = shortcut.toLowerCase().replace(/\\s+/g, '')\n const parts = normalized.split('+')\n const key = parts[parts.length - 1]\n\n if (!key) {\n return false\n }\n\n const expectsCtrl = parts.includes('ctrl')\n const expectsMeta = parts.includes('meta') || parts.includes('cmd')\n const expectsShift = parts.includes('shift')\n const expectsAlt = parts.includes('alt') || parts.includes('option')\n\n return (\n event.key.toLowerCase() === key &&\n !!expectsCtrl === event.ctrlKey &&\n !!expectsMeta === event.metaKey &&\n !!expectsShift === event.shiftKey &&\n !!expectsAlt === event.altKey\n )\n}\n\nfunction filterItems(items: MCommandPaletteItem[], query: string) {\n if (!query.trim()) {\n return items\n }\n\n const normalizedQuery = query.trim().toLowerCase()\n\n return items.filter((item) =>\n [\n normalizeText(item.title),\n normalizeText(item.description),\n normalizeText(item.group),\n normalizeText(item.actionLabel),\n ...(item.keywords ?? []),\n ].some((value) => value.toLowerCase().includes(normalizedQuery))\n )\n}\n\nfunction groupItems(items: MCommandPaletteItem[]) {\n const groups = new Map<string, {label: ReactNode; items: MCommandPaletteItem[]}>()\n\n items.forEach((item) => {\n const key = normalizeText(item.group) || 'General'\n const current = groups.get(key) ?? {label: item.group ?? 'General', items: []}\n current.items.push(item)\n groups.set(key, current)\n })\n\n return Array.from(groups.values())\n}\n\nexport function MCommandPalette({\n items,\n featuredItems = [],\n open,\n defaultOpen = false,\n onOpenChange,\n onSelect,\n title = 'Command palette',\n description,\n trigger,\n shortcut = 'ctrl+k',\n placeholder = 'Search modules, records and actions...',\n emptyLabel = 'No matching results.',\n footer,\n size = 'lg',\n closeOnSelect = true,\n}: MCommandPaletteProps) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [query, setQuery] = useState('')\n const [activeItemId, setActiveItemId] = useState<string | null>(null)\n const isControlled = open !== undefined\n const isOpen = isControlled ? open : internalOpen\n const inputRef = useRef<HTMLInputElement>(null)\n\n function setOpenState(nextOpen: boolean) {\n if (!isControlled) {\n setInternalOpen(nextOpen)\n }\n\n onOpenChange?.(nextOpen)\n }\n\n const filteredItems = useMemo(() => filterItems(items, query), [items, query])\n const groupedItems = useMemo(() => groupItems(filteredItems), [filteredItems])\n const flattenedItems = useMemo(() => groupedItems.flatMap((group) => group.items), [groupedItems])\n const featured = useMemo(() => (featuredItems.length ? featuredItems : items.slice(0, 6)), [featuredItems, items])\n\n function executeItem(item: MCommandPaletteItem) {\n item.onSelect?.()\n onSelect?.(item)\n\n if (!item.onSelect && item.href) {\n window.location.assign(item.href)\n }\n\n if (closeOnSelect) {\n setOpenState(false)\n setQuery('')\n setActiveItemId(null)\n }\n }\n\n const {activeIndex, setActiveIndex, resetIndex, onKeyDown} = useKeyboardNav({\n itemCount: flattenedItems.length,\n isOpen,\n onClose: () => setOpenState(false),\n onSelect: (index) => {\n const item = flattenedItems[index]\n\n if (item) {\n executeItem(item)\n }\n },\n })\n\n useEffect(() => {\n const handleKeydown = (event: KeyboardEvent) => {\n if (matchesShortcut(event, shortcut)) {\n event.preventDefault()\n setOpenState(true)\n }\n }\n\n window.addEventListener('keydown', handleKeydown)\n\n return () => {\n window.removeEventListener('keydown', handleKeydown)\n }\n }, [shortcut])\n\n useEffect(() => {\n if (!isOpen) {\n resetIndex()\n setActiveItemId(null)\n return\n }\n\n queueMicrotask(() => inputRef.current?.focus())\n }, [isOpen, resetIndex])\n\n useEffect(() => {\n if (activeIndex < 0 || activeIndex >= flattenedItems.length) {\n setActiveItemId(null)\n return\n }\n\n setActiveItemId(flattenedItems[activeIndex]?.id ?? null)\n }, [activeIndex, flattenedItems])\n\n function handleSearchKeyDown(event: ReactKeyboardEvent<HTMLInputElement>) {\n onKeyDown(event)\n }\n\n return (\n <>\n {trigger ?? (\n <MButton\n variant={'filled'}\n size={'sm'}\n color={'primary'}\n iconOnly\n startIcon={<MSearchIcon />}\n aria-label={typeof title === 'string' ? title : 'Open command palette'}\n onClick={() => setOpenState(true)}\n />\n )}\n\n <MSheet\n open={isOpen}\n onClose={() => setOpenState(false)}\n title={title}\n description={description}\n size={size}\n footer={footer}\n >\n <div className=\"command-palette-body\">\n <div className=\"command-palette-search\">\n <MInputSearch\n ref={inputRef}\n value={query}\n onChange={(event) => {\n setQuery(event.target.value)\n setActiveIndex(-1)\n }}\n onKeyDown={handleSearchKeyDown}\n placeholder={placeholder}\n clearable\n fullWidth\n />\n </div>\n\n <div className=\"command-palette-grid\">\n <MCard stretch={false}>\n <MCardHeader>\n <MHeading level={4}>Featured</MHeading>\n <MText size={'sm'} tone={'muted'}>\n Quick launch for the most frequent dashboard actions.\n </MText>\n </MCardHeader>\n <MCardBody>\n <MSimpleGrid columns={4}>\n {featured.map((item) => {\n const label = item.actionLabel ?? item.title\n const ariaLabel = typeof label === 'string' ? label : normalizeText(label)\n\n return (\n <MTooltip key={item.id} content={label}>\n <MButton\n variant={'ghost'}\n color={'primary'}\n component={item.component}\n to={item.to}\n href={item.href}\n target={item.target}\n rel={item.rel}\n startIcon={item.icon ?? <MLinkIcon />}\n iconOnly\n aria-label={ariaLabel || undefined}\n onClick={() => executeItem(item)}\n />\n </MTooltip>\n )\n })}\n </MSimpleGrid>\n </MCardBody>\n </MCard>\n\n <MCard stretch={false}>\n <MCardHeader>\n <MHeading level={4}>Results</MHeading>\n <MInline align={'center'} padding={'xs'}>\n <MText size={'sm'} tone={'muted'}>\n {flattenedItems.length} ready\n </MText>\n <MKbd>{shortcut.toUpperCase()}</MKbd>\n </MInline>\n </MCardHeader>\n <MCardBody>\n {groupedItems.length ? (\n <MStack padding={'xs'} className=\"command-palette-results\">\n {groupedItems.map((group) => (\n <MStack key={normalizeText(group.label) || 'general'} padding={'xs'}>\n <MText size={'sm'} tone={'muted'}>\n {group.label}\n </MText>\n {group.items.map((item) => (\n <button\n key={item.id}\n type=\"button\"\n className={cn(\n 'command-palette-item',\n activeItemId === item.id && 'active'\n )}\n onMouseEnter={() => setActiveItemId(item.id)}\n onClick={() => executeItem(item)}\n >\n <span className=\"command-palette-item-icon\">\n {item.icon ?? <MLinkIcon />}\n </span>\n <span className=\"command-palette-item-copy\">\n <span className=\"command-palette-item-title\">\n {item.title}\n </span>\n {item.description && (\n <span className=\"command-palette-item-description\">\n {item.description}\n </span>\n )}\n </span>\n {item.badge && (\n <span className=\"command-palette-item-badge\">\n <MBadge color={'primary'} size={'sm'}>\n {item.badge}\n </MBadge>\n </span>\n )}\n </button>\n ))}\n </MStack>\n ))}\n </MStack>\n ) : (\n <MText tone={'muted'}>{emptyLabel}</MText>\n )}\n </MCardBody>\n </MCard>\n </div>\n </div>\n </MSheet>\n </>\n )\n}\n","import {Children, isValidElement, useEffect, useState, useRef} from 'react'\nimport type {MouseEvent, ReactElement, ReactNode} from 'react'\nimport type {MDrawerProps, MDrawerSectionProps} from './MDrawer.types'\nimport {MPortal} from '../../primitives'\nimport {MButton} from '../../controls'\nimport {MCloseIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MDrawer.css'\n\nconst EXIT_DURATION = 600\n\ntype DrawerSlotElement = ReactElement<MDrawerSectionProps>\n\nfunction isDrawerHeader(child: ReactNode): child is DrawerSlotElement {\n return isValidElement(child) && !!(child.type as any).__drawerHeader\n}\n\nfunction isDrawerBody(child: ReactNode): child is DrawerSlotElement {\n return isValidElement(child) && !!(child.type as any).__drawerBody\n}\n\nfunction isDrawerFooter(child: ReactNode): child is DrawerSlotElement {\n return isValidElement(child) && !!(child.type as any).__drawerFooter\n}\n\nexport function MDrawerHeader({children}: MDrawerSectionProps) {\n return <>{children}</>\n}\n;(MDrawerHeader as any).__drawerHeader = true\n\nexport function MDrawerBody({children}: MDrawerSectionProps) {\n return <>{children}</>\n}\n;(MDrawerBody as any).__drawerBody = true\n\nexport function MDrawerFooter({children}: MDrawerSectionProps) {\n return <>{children}</>\n}\n;(MDrawerFooter as any).__drawerFooter = true\n\nexport function MDrawer({\n open,\n onClose,\n side = 'right',\n size = 'md',\n overlay = true,\n closeOnBackdrop = true,\n closeOnEscape = true,\n className,\n children,\n ...rest\n}: MDrawerProps) {\n const [mounted, setMounted] = useState(false)\n const [closing, setClosing] = useState(false)\n const backdropRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (open) {\n setMounted(true)\n setClosing(false)\n }\n }, [open])\n\n useEffect(() => {\n if (!open && mounted) {\n setClosing(true)\n const timer = setTimeout(() => {\n setMounted(false)\n setClosing(false)\n }, EXIT_DURATION)\n return () => clearTimeout(timer)\n }\n }, [open, mounted])\n\n useEffect(() => {\n if (!open || !closeOnEscape) return\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose()\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [open, closeOnEscape, onClose])\n\n useEffect(() => {\n if (!mounted) return\n\n const prev = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n return () => {\n document.body.style.overflow = prev\n }\n }, [mounted])\n\n if (!mounted) return null\n\n const handleBackdropClick = (e: MouseEvent<HTMLDivElement>) => {\n if (closeOnBackdrop && e.target === e.currentTarget) onClose()\n }\n\n let header: ReactNode = null\n let headerProps: MDrawerSectionProps | null = null\n let bodyProps: MDrawerSectionProps | null = null\n let footer: ReactNode = null\n let footerProps: MDrawerSectionProps | null = null\n const body: ReactNode[] = []\n\n Children.forEach(children, (child) => {\n if (isDrawerHeader(child)) {\n header = child.props.children\n headerProps = child.props\n return\n }\n\n if (isDrawerBody(child)) {\n bodyProps = child.props\n body.push(child.props.children)\n return\n }\n\n if (isDrawerFooter(child)) {\n footer = child.props.children\n footerProps = child.props\n return\n }\n\n body.push(child)\n })\n\n const headerSection = headerProps ?? ({children: undefined} as MDrawerSectionProps)\n const bodySection = bodyProps ?? ({children: undefined} as MDrawerSectionProps)\n const footerSection = footerProps ?? ({children: undefined} as MDrawerSectionProps)\n const {\n children: _headerChildren,\n className: headerClassName,\n bordered: headerBordered = false,\n ...headerRest\n } = headerSection\n const {children: _bodyChildren, className: bodyClassName, ...bodyRest} = bodySection\n const {\n children: _footerChildren,\n className: footerClassName,\n bordered: footerBordered = false,\n ...footerRest\n } = footerSection\n\n return (\n <MPortal>\n <div\n ref={backdropRef}\n className={cn('mineral-backdrop', 'drawer-backdrop', !overlay && 'no-overlay', closing && 'closing')}\n onMouseDown={handleBackdropClick}\n >\n <div className={cn('drawer', side, size, className)} role=\"dialog\" aria-modal=\"true\" {...rest}>\n {header && (\n <div\n {...headerRest}\n className={cn('drawer-header', headerBordered && 'bordered', headerClassName)}\n >\n <div className=\"drawer-title\">{header}</div>\n <MButton\n variant=\"link\"\n color=\"neutral\"\n iconOnly\n size=\"sm\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"close\"\n >\n <MCloseIcon />\n </MButton>\n </div>\n )}\n <div {...bodyRest} className={cn('drawer-body', bodyClassName)}>\n {body}\n </div>\n {footer && (\n <div\n {...footerRest}\n className={cn('drawer-footer', footerBordered && 'bordered', footerClassName)}\n >\n {footer}\n </div>\n )}\n </div>\n </div>\n </MPortal>\n )\n}\n","import {useCallback} from 'react'\nimport type {MPopconfirmProps} from './MPopconfirm.types'\nimport {MPopover} from '../../primitives'\nimport {MButton} from '../../controls'\nimport {cn} from '../../../utils/cn'\nimport './MPopconfirm.css'\n\nexport function MPopconfirm({\n title,\n description,\n onConfirm,\n onCancel,\n confirmText = 'Yes',\n cancelText = 'No',\n color = 'warning',\n icon,\n placement = 'top-start',\n open,\n onOpenChange,\n anchorRef,\n className,\n}: MPopconfirmProps) {\n const handleCancel = useCallback(() => {\n onOpenChange(false)\n onCancel?.()\n }, [onOpenChange, onCancel])\n\n const handleConfirm = useCallback(() => {\n onOpenChange(false)\n onConfirm()\n }, [onOpenChange, onConfirm])\n\n return (\n <MPopover\n open={open}\n anchorRef={anchorRef}\n onClose={handleCancel}\n placement={placement}\n className={cn('popconfirm', `color-${color}`, className)}\n >\n <div className=\"body\">\n {icon && <div className=\"icon\">{icon}</div>}\n <div className=\"content\">\n <div className=\"title\">{title}</div>\n {description && <div className=\"description\">{description}</div>}\n </div>\n </div>\n <div className=\"actions\">\n <MButton variant=\"ghost\" size=\"sm\" color=\"neutral\" onClick={handleCancel}>\n {cancelText}\n </MButton>\n <MButton variant=\"ghost\" size=\"sm\" color={color} onClick={handleConfirm}>\n {confirmText}\n </MButton>\n </div>\n </MPopover>\n )\n}\n"],"mappings":"kqBAQA,IAAM,EAAgB,IAGtB,SAAgB,EAAO,CACnB,OACA,UACA,QACA,cACA,SACA,OAAO,KACP,kBAAkB,GAClB,gBAAgB,GAChB,YACA,WACA,GAAG,GACS,CACZ,GAAM,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,GAAA,EAAA,EAAA,QAAqC,KAAK,CAmDhD,OAhDA,EAAA,EAAA,eAAgB,CACR,IACA,EAAW,GAAK,CAChB,EAAW,GAAM,GAEtB,CAAC,EAAK,CAAC,EAGV,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,EAAS,CAClB,EAAW,GAAK,CAChB,IAAM,EAAQ,eAAiB,CAC3B,EAAW,GAAM,CACjB,EAAW,GAAM,EAClB,EAAc,CACjB,UAAa,aAAa,EAAM,GAErC,CAAC,EAAM,EAAQ,CAAC,EAEnB,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,CAAC,EAAe,OAE7B,IAAM,EAAiB,GAAyB,CACxC,EAAM,MAAQ,UAAU,GAAS,EAIzC,OADA,SAAS,iBAAiB,UAAW,EAAc,KACtC,SAAS,oBAAoB,UAAW,EAAc,EACpE,CAAC,EAAe,EAAS,EAAK,CAAC,EAElC,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,EAAS,OAEd,IAAM,EAAmB,SAAS,KAAK,MAAM,SAG7C,MAFA,UAAS,KAAK,MAAM,SAAW,aAElB,CACT,SAAS,KAAK,MAAM,SAAW,IAEpC,CAAC,EAAQ,CAAC,CAER,GAQD,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,UACI,EAAA,EAAA,KAAC,MAAD,CACI,IAAK,EACL,UAAW,EAAA,EAAG,mBAAoB,iBAAkB,GAAW,UAAU,CACzE,YAViB,GAAsC,CAC1D,GACD,EAAM,SAAW,EAAM,eAAe,GAAS,YAU3C,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,wBACZ,EAAA,EAAA,MAAC,EAAA,EAAD,CACI,UAAW,EAAA,EAAG,QAAS,EAAM,EAAU,CACvC,KAAM,SACN,aAAY,OACZ,kBAAiB,EAAQ,sBAAwB,IAAA,GACjD,GAAI,WALR,EAOM,GAAS,KACP,EAAA,EAAA,MAAC,EAAA,EAAD,CAAA,SAAA,CACK,IACG,EAAA,EAAA,KAAC,MAAD,CAAK,GAAI,sBAAuB,UAAW,uBACtC,EACC,CAAA,CAET,IAAe,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,6BAAsB,EAAkB,CAAA,CAC9D,CAAA,CAAA,EAElB,EAAA,EAAA,KAAC,EAAA,EAAD,CAAY,WAAqB,CAAA,CAChC,IAAU,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,SAAc,EAAqB,CAAA,CAC1C,GACN,CAAA,CACJ,CAAA,CACA,CAAA,CArCO,KC5DzB,IAAM,EAAgB,IAChB,EAAuB,GAEvB,EAA4C,CAC9C,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,KAAM,OACT,CAED,SAAgB,EAAO,CACnB,OACA,UACA,QACA,cACA,SACA,OAAO,KACP,kBAAkB,GAClB,gBAAgB,GAChB,YACA,WACA,QACA,GAAG,GACS,CACZ,IAAM,GAAA,EAAA,EAAA,QAAiB,CACjB,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,CAAC,EAAY,IAAA,EAAA,EAAA,UAA0B,EAAE,CAEzC,GAAA,EAAA,EAAA,QAAkE,KAAK,CACvE,GAAA,EAAA,EAAA,QAAuB,EAAE,EAE/B,EAAA,EAAA,eAAgB,CACR,IACA,EAAW,GAAK,CAChB,EAAW,GAAM,CACjB,EAAc,EAAE,CAChB,EAAc,QAAU,IAE7B,CAAC,EAAK,CAAC,EAEV,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,EAAS,CAClB,EAAW,GAAK,CAChB,IAAM,EAAQ,OAAO,eAAiB,CAClC,EAAW,GAAM,CACjB,EAAW,GAAM,EAClB,EAAc,CACjB,UAAa,OAAO,aAAa,EAAM,GAE5C,CAAC,EAAM,EAAQ,CAAC,EAEnB,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,EAAS,OAEd,IAAM,EAAmB,SAAS,KAAK,MAAM,SAG7C,MAFA,UAAS,KAAK,MAAM,SAAW,aAElB,CACT,SAAS,KAAK,MAAM,SAAW,IAEpC,CAAC,EAAQ,CAAC,EAEb,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,CAAC,EAAe,OAE7B,IAAM,EAAiB,GAAyB,CACxC,EAAM,MAAQ,UAAU,GAAS,EAIzC,OADA,SAAS,iBAAiB,UAAW,EAAc,KACtC,SAAS,oBAAoB,UAAW,EAAc,EACpE,CAAC,EAAe,EAAS,EAAK,CAAC,CAElC,SAAS,EAAoB,EAAmC,CACxD,GAAmB,EAAM,SAAW,EAAM,eAC1C,GAAS,CAIjB,SAAS,EAAwB,EAA6C,CAC1E,EAAM,gBAAgB,CACtB,EAAM,cAAc,kBAAkB,EAAM,UAAU,CAEtD,EAAa,QAAU,CACnB,UAAW,EAAM,UACjB,OAAQ,EAAM,QACjB,CACD,EAAc,EAAE,CAChB,EAAc,QAAU,EAG5B,SAAS,EAAwB,EAA6C,CAC1E,IAAM,EAAY,EAAa,QAC/B,GAAI,CAAC,GAAa,EAAU,YAAc,EAAM,UAC5C,OAGJ,IAAM,EAAa,KAAK,IAAI,EAAM,QAAU,EAAU,OAAQ,EAAE,CAChE,EAAc,QAAU,EACxB,EAAc,EAAW,CAG7B,SAAS,EAAW,EAAmB,CACnC,IAAM,EAAY,EAAa,QAC3B,MAAC,GAAa,EAAU,YAAc,GAM1C,IAFA,EAAa,QAAU,KAEnB,EAAc,QAAU,EAAsB,CAC9C,EAAc,EAAE,CAChB,EAAc,QAAU,EACxB,GAAS,CACT,OAGJ,EAAc,EAAE,CAChB,EAAc,QAAU,GAG5B,GAAI,CAAC,EAAS,OAAO,KAErB,IAAM,EAAiB,EAAc,GAC/B,EAAiB,EAAa,EAAI,cAAc,EAAW,KAAO,IAAA,GAExE,OACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,UACI,EAAA,EAAA,KAAC,MAAD,CACI,UAAW,EAAA,EAAG,mBAAoB,iBAAkB,GAAW,UAAU,CACzE,YAAa,YAEb,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,cAAc,MAAO,CAAC,UAAW,EAAe,WAC3D,EAAA,EAAA,MAAC,EAAA,EAAD,CACI,UAAW,EAAA,EAAG,QAAS,QAAQ,IAAQ,EAAU,CACjD,KAAK,SACL,aAAW,OACX,kBAAiB,EAAQ,EAAU,IAAA,GACnC,MAAO,CACH,GAAG,EACH,OAAQ,IAAS,OAAS,EAAiB,IAAA,GAC3C,UAAW,EACd,CACD,GAAI,WAVR,EAYI,EAAA,EAAA,KAAC,SAAD,CACI,KAAK,SACL,UAAU,gBACV,cAAe,EACf,cAAe,EACf,YAAc,GAAU,EAAW,EAAM,UAAU,CACnD,gBAAkB,GAAU,EAAW,EAAM,UAAU,CACvD,aAAW,+BAEX,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,eAAiB,CAAA,CAC5B,CAAA,EAEP,GAAS,KACP,EAAA,EAAA,MAAC,EAAA,EAAD,CAAa,UAAU,wBAAvB,EACI,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,sBAAf,CACK,IACG,EAAA,EAAA,KAAC,MAAD,CAAK,GAAI,EAAS,UAAU,uBACvB,EACC,CAAA,CAET,IAAe,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,6BAAqB,EAAkB,CAAA,CACpE,IACN,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,QAAQ,OACR,MAAM,UACN,SAAA,GACA,KAAK,KACL,QAAS,EACT,aAAW,QACX,UAAU,wBAEV,EAAA,EAAA,KAAC,EAAA,GAAD,EAAc,CAAA,CACR,CAAA,CACA,IAGlB,EAAA,EAAA,KAAC,EAAA,EAAD,CAAW,UAAU,aAAc,WAAqB,CAAA,CAEvD,IAAU,EAAA,EAAA,KAAC,EAAA,EAAD,CAAa,UAAU,wBAAgB,EAAqB,CAAA,CACnE,GACN,CAAA,CACJ,CAAA,CACA,CAAA,CCtLlB,SAAS,EAAc,EAAkB,CAKrC,OAJI,OAAO,GAAU,UAAY,OAAO,GAAU,SACvC,EAAM,UAAU,CAGpB,GAGX,SAAS,EAAgB,EAAsB,EAAkB,CAE7D,IAAM,EADa,EAAS,aAAa,CAAC,QAAQ,OAAQ,GAAG,CACpC,MAAM,IAAI,CAC7B,EAAM,EAAM,EAAM,OAAS,GAEjC,GAAI,CAAC,EACD,MAAO,GAGX,IAAM,EAAc,EAAM,SAAS,OAAO,CACpC,EAAc,EAAM,SAAS,OAAO,EAAI,EAAM,SAAS,MAAM,CAC7D,EAAe,EAAM,SAAS,QAAQ,CACtC,EAAa,EAAM,SAAS,MAAM,EAAI,EAAM,SAAS,SAAS,CAEpE,OACI,EAAM,IAAI,aAAa,GAAK,GAC5B,CAAC,CAAC,IAAgB,EAAM,SACxB,CAAC,CAAC,IAAgB,EAAM,SACxB,CAAC,CAAC,IAAiB,EAAM,UACzB,CAAC,CAAC,IAAe,EAAM,OAI/B,SAAS,EAAY,EAA8B,EAAe,CAC9D,GAAI,CAAC,EAAM,MAAM,CACb,OAAO,EAGX,IAAM,EAAkB,EAAM,MAAM,CAAC,aAAa,CAElD,OAAO,EAAM,OAAQ,GACjB,CACI,EAAc,EAAK,MAAM,CACzB,EAAc,EAAK,YAAY,CAC/B,EAAc,EAAK,MAAM,CACzB,EAAc,EAAK,YAAY,CAC/B,GAAI,EAAK,UAAY,EAAE,CAC1B,CAAC,KAAM,GAAU,EAAM,aAAa,CAAC,SAAS,EAAgB,CAAC,CACnE,CAGL,SAAS,EAAW,EAA8B,CAC9C,IAAM,EAAS,IAAI,IASnB,OAPA,EAAM,QAAS,GAAS,CACpB,IAAM,EAAM,EAAc,EAAK,MAAM,EAAI,UACnC,EAAU,EAAO,IAAI,EAAI,EAAI,CAAC,MAAO,EAAK,OAAS,UAAW,MAAO,EAAE,CAAC,CAC9E,EAAQ,MAAM,KAAK,EAAK,CACxB,EAAO,IAAI,EAAK,EAAQ,EAC1B,CAEK,MAAM,KAAK,EAAO,QAAQ,CAAC,CAGtC,SAAgB,EAAgB,CAC5B,QACA,gBAAgB,EAAE,CAClB,OACA,cAAc,GACd,eACA,WACA,QAAQ,kBACR,cACA,UACA,WAAW,SACX,cAAc,yCACd,aAAa,uBACb,SACA,OAAO,KACP,gBAAgB,IACK,CACrB,GAAM,CAAC,EAAc,IAAA,EAAA,EAAA,UAA4B,EAAY,CACvD,CAAC,EAAO,IAAA,EAAA,EAAA,UAAqB,GAAG,CAChC,CAAC,EAAc,IAAA,EAAA,EAAA,UAA2C,KAAK,CAC/D,EAAe,IAAS,IAAA,GACxB,EAAS,EAAe,EAAO,EAC/B,GAAA,EAAA,EAAA,QAAoC,KAAK,CAE/C,SAAS,EAAa,EAAmB,CAChC,GACD,EAAgB,EAAS,CAG7B,IAAe,EAAS,CAG5B,IAAM,GAAA,EAAA,EAAA,aAA8B,EAAY,EAAO,EAAM,CAAE,CAAC,EAAO,EAAM,CAAC,CACxE,GAAA,EAAA,EAAA,aAA6B,EAAW,EAAc,CAAE,CAAC,EAAc,CAAC,CACxE,GAAA,EAAA,EAAA,aAA+B,EAAa,QAAS,GAAU,EAAM,MAAM,CAAE,CAAC,EAAa,CAAC,CAC5F,GAAA,EAAA,EAAA,aAA0B,EAAc,OAAS,EAAgB,EAAM,MAAM,EAAG,EAAE,CAAG,CAAC,EAAe,EAAM,CAAC,CAElH,SAAS,EAAY,EAA2B,CAC5C,EAAK,YAAY,CACjB,IAAW,EAAK,CAEZ,CAAC,EAAK,UAAY,EAAK,MACvB,OAAO,SAAS,OAAO,EAAK,KAAK,CAGjC,IACA,EAAa,GAAM,CACnB,EAAS,GAAG,CACZ,EAAgB,KAAK,EAI7B,GAAM,CAAC,cAAa,iBAAgB,aAAY,cAAa,EAAA,EAAe,CACxE,UAAW,EAAe,OAC1B,SACA,YAAe,EAAa,GAAM,CAClC,SAAW,GAAU,CACjB,IAAM,EAAO,EAAe,GAExB,GACA,EAAY,EAAK,EAG5B,CAAC,EAEF,EAAA,EAAA,eAAgB,CACZ,IAAM,EAAiB,GAAyB,CACxC,EAAgB,EAAO,EAAS,GAChC,EAAM,gBAAgB,CACtB,EAAa,GAAK,GAM1B,OAFA,OAAO,iBAAiB,UAAW,EAAc,KAEpC,CACT,OAAO,oBAAoB,UAAW,EAAc,GAEzD,CAAC,EAAS,CAAC,EAEd,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,EAAQ,CACT,GAAY,CACZ,EAAgB,KAAK,CACrB,OAGJ,mBAAqB,EAAS,SAAS,OAAO,CAAC,EAChD,CAAC,EAAQ,EAAW,CAAC,EAExB,EAAA,EAAA,eAAgB,CACZ,GAAI,EAAc,GAAK,GAAe,EAAe,OAAQ,CACzD,EAAgB,KAAK,CACrB,OAGJ,EAAgB,EAAe,IAAc,IAAM,KAAK,EACzD,CAAC,EAAa,EAAe,CAAC,CAEjC,SAAS,GAAoB,EAA6C,CACtE,GAAU,EAAM,CAGpB,OACI,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACK,IACG,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,QAAS,SACT,KAAM,KACN,MAAO,UACP,SAAA,GACA,WAAW,EAAA,EAAA,KAAC,EAAA,GAAD,EAAe,CAAA,CAC1B,aAAY,OAAO,GAAU,SAAW,EAAQ,uBAChD,YAAe,EAAa,GAAK,CACnC,CAAA,EAGN,EAAA,EAAA,KAAC,EAAD,CACI,KAAM,EACN,YAAe,EAAa,GAAM,CAC3B,QACM,cACP,OACE,mBAER,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,gCAAf,EACI,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,mCACX,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,IAAK,EACL,MAAO,EACP,SAAW,GAAU,CACjB,EAAS,EAAM,OAAO,MAAM,CAC5B,EAAe,GAAG,EAEtB,UAAW,GACE,cACb,UAAA,GACA,UAAA,GACF,CAAA,CACA,CAAA,EAEN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,gCAAf,EACI,EAAA,EAAA,MAAC,EAAA,EAAD,CAAO,QAAS,YAAhB,EACI,EAAA,EAAA,MAAC,EAAA,EAAD,CAAA,SAAA,EACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAU,MAAO,WAAG,WAAmB,CAAA,EACvC,EAAA,EAAA,KAAC,EAAA,EAAD,CAAO,KAAM,KAAM,KAAM,iBAAS,wDAE1B,CAAA,CACE,CAAA,CAAA,EACd,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,UACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAa,QAAS,WACjB,EAAS,IAAK,GAAS,CACpB,IAAM,EAAQ,EAAK,aAAe,EAAK,MACjC,EAAY,OAAO,GAAU,SAAW,EAAQ,EAAc,EAAM,CAE1E,OACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAwB,QAAS,YAC7B,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,QAAS,QACT,MAAO,UACP,UAAW,EAAK,UAChB,GAAI,EAAK,GACT,KAAM,EAAK,KACX,OAAQ,EAAK,OACb,IAAK,EAAK,IACV,UAAW,EAAK,OAAQ,EAAA,EAAA,KAAC,EAAA,GAAD,EAAa,CAAA,CACrC,SAAA,GACA,aAAY,GAAa,IAAA,GACzB,YAAe,EAAY,EAAK,CAClC,CAAA,CACK,CAdI,EAAK,GAcT,EAEjB,CACQ,CAAA,CACN,CAAA,CACR,IAER,EAAA,EAAA,MAAC,EAAA,EAAD,CAAO,QAAS,YAAhB,EACI,EAAA,EAAA,MAAC,EAAA,EAAD,CAAA,SAAA,EACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAU,MAAO,WAAG,UAAkB,CAAA,EACtC,EAAA,EAAA,MAAC,EAAA,EAAD,CAAS,MAAO,SAAU,QAAS,cAAnC,EACI,EAAA,EAAA,MAAC,EAAA,EAAD,CAAO,KAAM,KAAM,KAAM,iBAAzB,CACK,EAAe,OAAO,SACnB,IACR,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,SAAO,EAAS,aAAa,CAAQ,CAAA,CAC/B,GACA,CAAA,CAAA,EACd,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,SACK,EAAa,QACV,EAAA,EAAA,KAAC,EAAA,EAAD,CAAQ,QAAS,KAAM,UAAU,mCAC5B,EAAa,IAAK,IACf,EAAA,EAAA,MAAC,EAAA,EAAD,CAAsD,QAAS,cAA/D,EACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAO,KAAM,KAAM,KAAM,iBACpB,EAAM,MACH,CAAA,CACP,EAAM,MAAM,IAAK,IACd,EAAA,EAAA,MAAC,SAAD,CAEI,KAAK,SACL,UAAW,EAAA,EACP,uBACA,IAAiB,EAAK,IAAM,SAC/B,CACD,iBAAoB,EAAgB,EAAK,GAAG,CAC5C,YAAe,EAAY,EAAK,UARpC,EAUI,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,qCACX,EAAK,OAAQ,EAAA,EAAA,KAAC,EAAA,GAAD,EAAa,CAAA,CACxB,CAAA,EACP,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,qCAAhB,EACI,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,sCACX,EAAK,MACH,CAAA,CACN,EAAK,cACF,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,4CACX,EAAK,YACH,CAAA,CAER,GACN,EAAK,QACF,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,uCACZ,EAAA,EAAA,KAAC,EAAA,EAAD,CAAQ,MAAO,UAAW,KAAM,cAC3B,EAAK,MACD,CAAA,CACN,CAAA,CAEN,EA7BA,EAAK,GA6BL,CACX,CACG,EArCI,EAAc,EAAM,MAAM,EAAI,UAqClC,CACX,CACG,CAAA,EAET,EAAA,EAAA,KAAC,EAAA,EAAD,CAAO,KAAM,iBAAU,EAAmB,CAAA,CAEtC,CAAA,CACR,GACN,GACJ,GACD,CAAA,CACV,CAAA,CAAA,CCpTX,IAAM,EAAgB,IAItB,SAAS,EAAe,EAA8C,CAClE,OAAA,EAAA,EAAA,gBAAsB,EAAM,EAAI,CAAC,CAAE,EAAM,KAAa,eAG1D,SAAS,EAAa,EAA8C,CAChE,OAAA,EAAA,EAAA,gBAAsB,EAAM,EAAI,CAAC,CAAE,EAAM,KAAa,aAG1D,SAAS,EAAe,EAA8C,CAClE,OAAA,EAAA,EAAA,gBAAsB,EAAM,EAAI,CAAC,CAAE,EAAM,KAAa,eAG1D,SAAgB,EAAc,CAAC,YAAgC,CAC3D,OAAO,EAAA,EAAA,KAAA,EAAA,SAAA,CAAG,WAAY,CAAA,CAEzB,EAAuB,eAAiB,GAEzC,SAAgB,EAAY,CAAC,YAAgC,CACzD,OAAO,EAAA,EAAA,KAAA,EAAA,SAAA,CAAG,WAAY,CAAA,CAEzB,EAAqB,aAAe,GAErC,SAAgB,EAAc,CAAC,YAAgC,CAC3D,OAAO,EAAA,EAAA,KAAA,EAAA,SAAA,CAAG,WAAY,CAAA,CAEzB,EAAuB,eAAiB,GAEzC,SAAgB,EAAQ,CACpB,OACA,UACA,OAAO,QACP,OAAO,KACP,UAAU,GACV,kBAAkB,GAClB,gBAAgB,GAChB,YACA,WACA,GAAG,GACU,CACb,GAAM,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,GAAA,EAAA,EAAA,QAAqC,KAAK,CAyChD,IAvCA,EAAA,EAAA,eAAgB,CACR,IACA,EAAW,GAAK,CAChB,EAAW,GAAM,GAEtB,CAAC,EAAK,CAAC,EAEV,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,EAAS,CAClB,EAAW,GAAK,CAChB,IAAM,EAAQ,eAAiB,CAC3B,EAAW,GAAM,CACjB,EAAW,GAAM,EAClB,EAAc,CACjB,UAAa,aAAa,EAAM,GAErC,CAAC,EAAM,EAAQ,CAAC,EAEnB,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,CAAC,EAAe,OAE7B,IAAM,EAAiB,GAAqB,CACpC,EAAE,MAAQ,UAAU,GAAS,EAIrC,OADA,SAAS,iBAAiB,UAAW,EAAc,KACtC,SAAS,oBAAoB,UAAW,EAAc,EACpE,CAAC,EAAM,EAAe,EAAQ,CAAC,EAElC,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,EAAS,OAEd,IAAM,EAAO,SAAS,KAAK,MAAM,SAEjC,MADA,UAAS,KAAK,MAAM,SAAW,aAClB,CACT,SAAS,KAAK,MAAM,SAAW,IAEpC,CAAC,EAAQ,CAAC,CAET,CAAC,EAAS,OAAO,KAErB,IAAM,EAAuB,GAAkC,CACvD,GAAmB,EAAE,SAAW,EAAE,eAAe,GAAS,EAG9D,EAAoB,KACpB,EAA0C,KAC1C,EAAwC,KACxC,EAAoB,KACpB,EAA0C,KACxC,EAAoB,EAAE,CAE5B,EAAA,SAAS,QAAQ,EAAW,GAAU,CAClC,GAAI,EAAe,EAAM,CAAE,CACvB,EAAS,EAAM,MAAM,SACrB,EAAc,EAAM,MACpB,OAGJ,GAAI,EAAa,EAAM,CAAE,CACrB,EAAY,EAAM,MAClB,EAAK,KAAK,EAAM,MAAM,SAAS,CAC/B,OAGJ,GAAI,EAAe,EAAM,CAAE,CACvB,EAAS,EAAM,MAAM,SACrB,EAAc,EAAM,MACpB,OAGJ,EAAK,KAAK,EAAM,EAClB,CAEF,IAAM,EAAgB,GAAgB,CAAC,SAAU,IAAA,GAAU,CACrD,EAAc,GAAc,CAAC,SAAU,IAAA,GAAU,CACjD,EAAgB,GAAgB,CAAC,SAAU,IAAA,GAAU,CACrD,CACF,SAAU,EACV,UAAW,EACX,SAAU,EAAiB,GAC3B,GAAG,GACH,EACE,CAAC,SAAU,EAAe,UAAW,EAAe,GAAG,GAAY,EACnE,CACF,SAAU,EACV,UAAW,EACX,SAAU,EAAiB,GAC3B,GAAG,GACH,EAEJ,OACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,UACI,EAAA,EAAA,KAAC,MAAD,CACI,IAAK,EACL,UAAW,EAAA,EAAG,mBAAoB,kBAAmB,CAAC,GAAW,aAAc,GAAW,UAAU,CACpG,YAAa,YAEb,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAA,EAAG,SAAU,EAAM,EAAM,EAAU,CAAE,KAAK,SAAS,aAAW,OAAO,GAAI,WAAzF,CACK,IACG,EAAA,EAAA,MAAC,MAAD,CACI,GAAI,EACJ,UAAW,EAAA,EAAG,gBAAiB,GAAkB,WAAY,EAAgB,UAFjF,EAII,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,wBAAgB,EAAa,CAAA,EAC5C,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,QAAQ,OACR,MAAM,UACN,SAAA,GACA,KAAK,KACL,QAAS,EACT,aAAW,QACX,UAAU,kBAEV,EAAA,EAAA,KAAC,EAAA,GAAD,EAAc,CAAA,CACR,CAAA,CACR,IAEV,EAAA,EAAA,KAAC,MAAD,CAAK,GAAI,EAAU,UAAW,EAAA,EAAG,cAAe,EAAc,UACzD,EACC,CAAA,CACL,IACG,EAAA,EAAA,KAAC,MAAD,CACI,GAAI,EACJ,UAAW,EAAA,EAAG,gBAAiB,GAAkB,WAAY,EAAgB,UAE5E,EACC,CAAA,CAER,GACJ,CAAA,CACA,CAAA,CCpLlB,SAAgB,EAAY,CACxB,QACA,cACA,YACA,WACA,cAAc,MACd,aAAa,KACb,QAAQ,UACR,OACA,YAAY,YACZ,OACA,eACA,YACA,aACiB,CACjB,IAAM,GAAA,EAAA,EAAA,iBAAiC,CACnC,EAAa,GAAM,CACnB,KAAY,EACb,CAAC,EAAc,EAAS,CAAC,CAEtB,GAAA,EAAA,EAAA,iBAAkC,CACpC,EAAa,GAAM,CACnB,GAAW,EACZ,CAAC,EAAc,EAAU,CAAC,CAE7B,OACI,EAAA,EAAA,MAAC,EAAA,EAAD,CACU,OACK,YACX,QAAS,EACE,YACX,UAAW,EAAA,EAAG,aAAc,SAAS,IAAS,EAAU,UAL5D,EAOI,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,gBAAf,CACK,IAAQ,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gBAAQ,EAAW,CAAA,EAC3C,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mBAAf,EACI,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,iBAAS,EAAY,CAAA,CACnC,IAAe,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,uBAAe,EAAkB,CAAA,CAC9D,GACJ,IACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mBAAf,EACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAS,QAAQ,QAAQ,KAAK,KAAK,MAAM,UAAU,QAAS,WACvD,EACK,CAAA,EACV,EAAA,EAAA,KAAC,EAAA,EAAD,CAAS,QAAQ,QAAQ,KAAK,KAAY,QAAO,QAAS,WACrD,EACK,CAAA,CACR,GACC"}
1
+ {"version":3,"file":"overlays-BUZEaZaJ.cjs","names":[],"sources":["../src/components/overlays/MModal/MModal.tsx","../src/components/overlays/MSheet/MSheet.tsx","../src/components/overlays/MCommandPalette/MCommandPalette.tsx","../src/components/overlays/MDrawer/MDrawer.tsx","../src/components/overlays/MPopconfirm/MPopconfirm.tsx"],"sourcesContent":["import {useEffect, useState, useCallback, useRef} from 'react'\nimport type {MouseEvent} from 'react'\nimport type {MModalProps} from './MModal.types'\nimport {MCard, MCardBody, MCardFooter, MCardHeader} from '../../cards'\nimport {MPortal} from '../../primitives'\nimport {cn} from '../../../utils/cn'\nimport './MModal.css'\n\nconst EXIT_DURATION = 540\n\n// Render blocking overlay content for dense details and mobile-friendly dialogs.\nexport function MModal({\n open,\n onClose,\n title,\n description,\n footer,\n size = 'md',\n closeOnBackdrop = true,\n closeOnEscape = true,\n className,\n children,\n ...rest\n}: MModalProps) {\n const [mounted, setMounted] = useState(false)\n const [closing, setClosing] = useState(false)\n const backdropRef = useRef<HTMLDivElement>(null)\n\n // Open → mount immediately\n useEffect(() => {\n if (open) {\n setMounted(true)\n setClosing(false)\n }\n }, [open])\n\n // Close → animate out, then unmount\n useEffect(() => {\n if (!open && mounted) {\n setClosing(true)\n const timer = setTimeout(() => {\n setMounted(false)\n setClosing(false)\n }, EXIT_DURATION)\n return () => clearTimeout(timer)\n }\n }, [open, mounted])\n\n useEffect(() => {\n if (!open || !closeOnEscape) return\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') onClose()\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [closeOnEscape, onClose, open])\n\n useEffect(() => {\n if (!mounted) return\n\n const previousOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n\n return () => {\n document.body.style.overflow = previousOverflow\n }\n }, [mounted])\n\n if (!mounted) return null\n\n const handleBackdropClick = (event: MouseEvent<HTMLDivElement>) => {\n if (!closeOnBackdrop) return\n if (event.target === event.currentTarget) onClose()\n }\n\n return (\n <MPortal>\n <div\n ref={backdropRef}\n className={cn('mineral-backdrop', 'modal-backdrop', closing && 'closing')}\n onMouseDown={handleBackdropClick}\n >\n <div className={'modal-shell'}>\n <MCard\n className={cn('modal', size, className)}\n role={'dialog'}\n aria-modal={'true'}\n aria-labelledby={title ? 'mineral-modal-title' : undefined}\n {...rest}\n >\n {(title || description) && (\n <MCardHeader>\n {title && (\n <div id={'mineral-modal-title'} className={'modal-title'}>\n {title}\n </div>\n )}\n {description && <div className={'modal-description'}>{description}</div>}\n </MCardHeader>\n )}\n <MCardBody>{children}</MCardBody>\n {footer && <MCardFooter>{footer}</MCardFooter>}\n </MCard>\n </div>\n </div>\n </MPortal>\n )\n}\n","import {useEffect, useId, useRef, useState} from 'react'\nimport type {PointerEvent as ReactPointerEvent, MouseEvent} from 'react'\nimport type {MSheetProps, MSheetSize} from './MSheet.types'\nimport {MCard, MCardBody, MCardFooter, MCardHeader} from '../../cards'\nimport {MButton} from '../../controls'\nimport {MPortal} from '../../primitives'\nimport {MCloseIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MSheet.css'\n\nconst EXIT_DURATION = 540\nconst CLOSE_DRAG_THRESHOLD = 72\n\nconst SHEET_HEIGHTS: Record<MSheetSize, string> = {\n sm: '32vh',\n md: '52vh',\n lg: '72vh',\n full: '92vh',\n}\n\nexport function MSheet({\n open,\n onClose,\n title,\n description,\n footer,\n size = 'md',\n closeOnBackdrop = true,\n closeOnEscape = true,\n className,\n children,\n style,\n ...rest\n}: MSheetProps) {\n const titleId = useId()\n const [mounted, setMounted] = useState(false)\n const [closing, setClosing] = useState(false)\n const [dragOffset, setDragOffset] = useState(0)\n\n const dragStateRef = useRef<{pointerId: number; startY: number} | null>(null)\n const dragOffsetRef = useRef(0)\n\n useEffect(() => {\n if (open) {\n setMounted(true)\n setClosing(false)\n setDragOffset(0)\n dragOffsetRef.current = 0\n }\n }, [open])\n\n useEffect(() => {\n if (!open && mounted) {\n setClosing(true)\n const timer = window.setTimeout(() => {\n setMounted(false)\n setClosing(false)\n }, EXIT_DURATION)\n return () => window.clearTimeout(timer)\n }\n }, [open, mounted])\n\n useEffect(() => {\n if (!mounted) return\n\n const previousOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n\n return () => {\n document.body.style.overflow = previousOverflow\n }\n }, [mounted])\n\n useEffect(() => {\n if (!open || !closeOnEscape) return\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') onClose()\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [closeOnEscape, onClose, open])\n\n function handleBackdropClick(event: MouseEvent<HTMLDivElement>) {\n if (closeOnBackdrop && event.target === event.currentTarget) {\n onClose()\n }\n }\n\n function handleHandlePointerDown(event: ReactPointerEvent<HTMLButtonElement>) {\n event.preventDefault()\n event.currentTarget.setPointerCapture(event.pointerId)\n\n dragStateRef.current = {\n pointerId: event.pointerId,\n startY: event.clientY,\n }\n setDragOffset(0)\n dragOffsetRef.current = 0\n }\n\n function handleHandlePointerMove(event: ReactPointerEvent<HTMLButtonElement>) {\n const dragState = dragStateRef.current\n if (!dragState || dragState.pointerId !== event.pointerId) {\n return\n }\n\n const nextOffset = Math.max(event.clientY - dragState.startY, 0)\n dragOffsetRef.current = nextOffset\n setDragOffset(nextOffset)\n }\n\n function finishDrag(pointerId: number) {\n const dragState = dragStateRef.current\n if (!dragState || dragState.pointerId !== pointerId) {\n return\n }\n\n dragStateRef.current = null\n\n if (dragOffsetRef.current > CLOSE_DRAG_THRESHOLD) {\n setDragOffset(0)\n dragOffsetRef.current = 0\n onClose()\n return\n }\n\n setDragOffset(0)\n dragOffsetRef.current = 0\n }\n\n if (!mounted) return null\n\n const resolvedHeight = SHEET_HEIGHTS[size]\n const transformStyle = dragOffset > 0 ? `translateY(${dragOffset}px)` : undefined\n\n return (\n <MPortal>\n <div\n className={cn('mineral-backdrop', 'sheet-backdrop', closing && 'closing')}\n onMouseDown={handleBackdropClick}\n >\n <div className=\"sheet-shell\" style={{transform: transformStyle}}>\n <MCard\n className={cn('sheet', `size-${size}`, className)}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? titleId : undefined}\n style={{\n ...style,\n height: size === 'full' ? resolvedHeight : undefined,\n maxHeight: resolvedHeight,\n }}\n {...rest}\n >\n <button\n type=\"button\"\n className=\"sheet-grabber\"\n onPointerDown={handleHandlePointerDown}\n onPointerMove={handleHandlePointerMove}\n onPointerUp={(event) => finishDrag(event.pointerId)}\n onPointerCancel={(event) => finishDrag(event.pointerId)}\n aria-label=\"Drag down to close\"\n >\n <span className=\"sheet-handle\" />\n </button>\n\n {(title || description) && (\n <MCardHeader className=\"sheet-header\">\n <div className=\"sheet-copy\">\n {title && (\n <div id={titleId} className=\"sheet-title\">\n {title}\n </div>\n )}\n {description && <div className=\"sheet-description\">{description}</div>}\n </div>\n <MButton\n variant=\"link\"\n color=\"neutral\"\n iconOnly\n size=\"sm\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"sheet-close\"\n >\n <MCloseIcon />\n </MButton>\n </MCardHeader>\n )}\n\n <MCardBody className=\"sheet-body\">{children}</MCardBody>\n\n {footer && <MCardFooter className=\"sheet-footer\">{footer}</MCardFooter>}\n </MCard>\n </div>\n </div>\n </MPortal>\n )\n}\n","import {useEffect, useMemo, useRef, useState} from 'react'\nimport type {KeyboardEvent as ReactKeyboardEvent, ReactNode} from 'react'\nimport type {MCommandPaletteItem, MCommandPaletteProps} from './MCommandPalette.types'\nimport {MButton} from '../../controls'\nimport {MInputSearch} from '../../inputs'\nimport {MCard, MCardBody, MCardHeader} from '../../cards'\nimport {MInline, MSimpleGrid, MStack} from '../../layout'\nimport {MSheet} from '../MSheet'\nimport {MTooltip} from '../MTooltip'\nimport {MBadge} from '../../feedback'\nimport {MLinkIcon, MSearchIcon} from '../../../icons'\nimport {MKbd, MHeading, MText} from '../../typography'\nimport {cn} from '../../../utils/cn'\nimport {useKeyboardNav} from '../../../utils/useKeyboardNav'\nimport './MCommandPalette.css'\n\nfunction normalizeText(value: ReactNode) {\n if (typeof value === 'string' || typeof value === 'number') {\n return value.toString()\n }\n\n return ''\n}\n\nfunction matchesShortcut(event: KeyboardEvent, shortcut: string) {\n const normalized = shortcut.toLowerCase().replace(/\\s+/g, '')\n const parts = normalized.split('+')\n const key = parts[parts.length - 1]\n\n if (!key) {\n return false\n }\n\n const expectsCtrl = parts.includes('ctrl')\n const expectsMeta = parts.includes('meta') || parts.includes('cmd')\n const expectsShift = parts.includes('shift')\n const expectsAlt = parts.includes('alt') || parts.includes('option')\n\n return (\n event.key.toLowerCase() === key &&\n !!expectsCtrl === event.ctrlKey &&\n !!expectsMeta === event.metaKey &&\n !!expectsShift === event.shiftKey &&\n !!expectsAlt === event.altKey\n )\n}\n\nfunction filterItems(items: MCommandPaletteItem[], query: string) {\n if (!query.trim()) {\n return items\n }\n\n const normalizedQuery = query.trim().toLowerCase()\n\n return items.filter((item) =>\n [\n normalizeText(item.title),\n normalizeText(item.description),\n normalizeText(item.group),\n normalizeText(item.actionLabel),\n ...(item.keywords ?? []),\n ].some((value) => value.toLowerCase().includes(normalizedQuery))\n )\n}\n\nfunction groupItems(items: MCommandPaletteItem[]) {\n const groups = new Map<string, {label: ReactNode; items: MCommandPaletteItem[]}>()\n\n items.forEach((item) => {\n const key = normalizeText(item.group) || 'General'\n const current = groups.get(key) ?? {label: item.group ?? 'General', items: []}\n current.items.push(item)\n groups.set(key, current)\n })\n\n return Array.from(groups.values())\n}\n\nexport function MCommandPalette({\n items,\n featuredItems = [],\n open,\n defaultOpen = false,\n onOpenChange,\n onSelect,\n title = 'Command palette',\n description,\n trigger,\n shortcut = 'ctrl+k',\n placeholder = 'Search modules, records and actions...',\n emptyLabel = 'No matching results.',\n footer,\n size = 'lg',\n closeOnSelect = true,\n}: MCommandPaletteProps) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen)\n const [query, setQuery] = useState('')\n const [activeItemId, setActiveItemId] = useState<string | null>(null)\n const isControlled = open !== undefined\n const isOpen = isControlled ? open : internalOpen\n const inputRef = useRef<HTMLInputElement>(null)\n\n function setOpenState(nextOpen: boolean) {\n if (!isControlled) {\n setInternalOpen(nextOpen)\n }\n\n onOpenChange?.(nextOpen)\n }\n\n const filteredItems = useMemo(() => filterItems(items, query), [items, query])\n const groupedItems = useMemo(() => groupItems(filteredItems), [filteredItems])\n const flattenedItems = useMemo(() => groupedItems.flatMap((group) => group.items), [groupedItems])\n const featured = useMemo(() => (featuredItems.length ? featuredItems : items.slice(0, 6)), [featuredItems, items])\n\n function executeItem(item: MCommandPaletteItem) {\n item.onSelect?.()\n onSelect?.(item)\n\n if (!item.onSelect && item.href) {\n window.location.assign(item.href)\n }\n\n if (closeOnSelect) {\n setOpenState(false)\n setQuery('')\n setActiveItemId(null)\n }\n }\n\n const {activeIndex, setActiveIndex, resetIndex, onKeyDown} = useKeyboardNav({\n itemCount: flattenedItems.length,\n isOpen,\n onClose: () => setOpenState(false),\n onSelect: (index) => {\n const item = flattenedItems[index]\n\n if (item) {\n executeItem(item)\n }\n },\n })\n\n useEffect(() => {\n const handleKeydown = (event: KeyboardEvent) => {\n if (matchesShortcut(event, shortcut)) {\n event.preventDefault()\n setOpenState(true)\n }\n }\n\n window.addEventListener('keydown', handleKeydown)\n\n return () => {\n window.removeEventListener('keydown', handleKeydown)\n }\n }, [shortcut])\n\n useEffect(() => {\n if (!isOpen) {\n resetIndex()\n setActiveItemId(null)\n return\n }\n\n queueMicrotask(() => inputRef.current?.focus())\n }, [isOpen, resetIndex])\n\n useEffect(() => {\n if (activeIndex < 0 || activeIndex >= flattenedItems.length) {\n setActiveItemId(null)\n return\n }\n\n setActiveItemId(flattenedItems[activeIndex]?.id ?? null)\n }, [activeIndex, flattenedItems])\n\n function handleSearchKeyDown(event: ReactKeyboardEvent<HTMLInputElement>) {\n onKeyDown(event)\n }\n\n return (\n <>\n {trigger ?? (\n <MButton\n variant={'filled'}\n size={'sm'}\n color={'primary'}\n iconOnly\n startIcon={<MSearchIcon />}\n aria-label={typeof title === 'string' ? title : 'Open command palette'}\n onClick={() => setOpenState(true)}\n />\n )}\n\n <MSheet\n open={isOpen}\n onClose={() => setOpenState(false)}\n title={title}\n description={description}\n size={size}\n footer={footer}\n >\n <div className=\"command-palette-body\">\n <div className=\"command-palette-search\">\n <MInputSearch\n ref={inputRef}\n value={query}\n onChange={(event) => {\n setQuery(event.target.value)\n setActiveIndex(-1)\n }}\n onKeyDown={handleSearchKeyDown}\n placeholder={placeholder}\n clearable\n fullWidth\n />\n </div>\n\n <div className=\"command-palette-grid\">\n <MCard stretch={false}>\n <MCardHeader>\n <MHeading level={4}>Featured</MHeading>\n <MText size={'sm'} tone={'muted'}>\n Quick launch for the most frequent dashboard actions.\n </MText>\n </MCardHeader>\n <MCardBody>\n <MSimpleGrid columns={4}>\n {featured.map((item) => {\n const label = item.actionLabel ?? item.title\n const ariaLabel = typeof label === 'string' ? label : normalizeText(label)\n\n return (\n <MTooltip key={item.id} content={label}>\n <MButton\n variant={'ghost'}\n color={'primary'}\n component={item.component}\n to={item.to}\n href={item.href}\n target={item.target}\n rel={item.rel}\n startIcon={item.icon ?? <MLinkIcon />}\n iconOnly\n aria-label={ariaLabel || undefined}\n onClick={() => executeItem(item)}\n />\n </MTooltip>\n )\n })}\n </MSimpleGrid>\n </MCardBody>\n </MCard>\n\n <MCard stretch={false}>\n <MCardHeader>\n <MHeading level={4}>Results</MHeading>\n <MInline align={'center'} padding={'xs'}>\n <MText size={'sm'} tone={'muted'}>\n {flattenedItems.length} ready\n </MText>\n <MKbd>{shortcut.toUpperCase()}</MKbd>\n </MInline>\n </MCardHeader>\n <MCardBody>\n {groupedItems.length ? (\n <MStack padding={'xs'} className=\"command-palette-results\">\n {groupedItems.map((group) => (\n <MStack key={normalizeText(group.label) || 'general'} padding={'xs'}>\n <MText size={'sm'} tone={'muted'}>\n {group.label}\n </MText>\n {group.items.map((item) => (\n <button\n key={item.id}\n type=\"button\"\n className={cn(\n 'command-palette-item',\n activeItemId === item.id && 'active'\n )}\n onMouseEnter={() => setActiveItemId(item.id)}\n onClick={() => executeItem(item)}\n >\n <span className=\"command-palette-item-icon\">\n {item.icon ?? <MLinkIcon />}\n </span>\n <span className=\"command-palette-item-copy\">\n <span className=\"command-palette-item-title\">\n {item.title}\n </span>\n {item.description && (\n <span className=\"command-palette-item-description\">\n {item.description}\n </span>\n )}\n </span>\n {item.badge && (\n <span className=\"command-palette-item-badge\">\n <MBadge color={'primary'} size={'sm'}>\n {item.badge}\n </MBadge>\n </span>\n )}\n </button>\n ))}\n </MStack>\n ))}\n </MStack>\n ) : (\n <MText tone={'muted'}>{emptyLabel}</MText>\n )}\n </MCardBody>\n </MCard>\n </div>\n </div>\n </MSheet>\n </>\n )\n}\n","import {Children, isValidElement, useEffect, useState, useRef} from 'react'\nimport type {MouseEvent, ReactElement, ReactNode} from 'react'\nimport type {MDrawerProps, MDrawerSectionProps} from './MDrawer.types'\nimport {MPortal} from '../../primitives'\nimport {MButton} from '../../controls'\nimport {MCloseIcon} from '../../../icons'\nimport {cn} from '../../../utils/cn'\nimport './MDrawer.css'\n\nconst EXIT_DURATION = 600\n\ntype DrawerSlotElement = ReactElement<MDrawerSectionProps>\n\nfunction isDrawerHeader(child: ReactNode): child is DrawerSlotElement {\n return isValidElement(child) && !!(child.type as any).__drawerHeader\n}\n\nfunction isDrawerBody(child: ReactNode): child is DrawerSlotElement {\n return isValidElement(child) && !!(child.type as any).__drawerBody\n}\n\nfunction isDrawerFooter(child: ReactNode): child is DrawerSlotElement {\n return isValidElement(child) && !!(child.type as any).__drawerFooter\n}\n\nexport function MDrawerHeader({children}: MDrawerSectionProps) {\n return <>{children}</>\n}\n;(MDrawerHeader as any).__drawerHeader = true\n\nexport function MDrawerBody({children}: MDrawerSectionProps) {\n return <>{children}</>\n}\n;(MDrawerBody as any).__drawerBody = true\n\nexport function MDrawerFooter({children}: MDrawerSectionProps) {\n return <>{children}</>\n}\n;(MDrawerFooter as any).__drawerFooter = true\n\nexport function MDrawer({\n open,\n onClose,\n side = 'right',\n size = 'md',\n overlay = true,\n closeOnBackdrop = true,\n closeOnEscape = true,\n className,\n children,\n ...rest\n}: MDrawerProps) {\n const [mounted, setMounted] = useState(false)\n const [closing, setClosing] = useState(false)\n const backdropRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (open) {\n setMounted(true)\n setClosing(false)\n }\n }, [open])\n\n useEffect(() => {\n if (!open && mounted) {\n setClosing(true)\n const timer = setTimeout(() => {\n setMounted(false)\n setClosing(false)\n }, EXIT_DURATION)\n return () => clearTimeout(timer)\n }\n }, [open, mounted])\n\n useEffect(() => {\n if (!open || !closeOnEscape) return\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose()\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [open, closeOnEscape, onClose])\n\n useEffect(() => {\n if (!mounted) return\n\n const prev = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n return () => {\n document.body.style.overflow = prev\n }\n }, [mounted])\n\n if (!mounted) return null\n\n const handleBackdropClick = (e: MouseEvent<HTMLDivElement>) => {\n if (closeOnBackdrop && e.target === e.currentTarget) onClose()\n }\n\n let header: ReactNode = null\n let headerProps: MDrawerSectionProps | null = null\n let bodyProps: MDrawerSectionProps | null = null\n let footer: ReactNode = null\n let footerProps: MDrawerSectionProps | null = null\n const body: ReactNode[] = []\n\n Children.forEach(children, (child) => {\n if (isDrawerHeader(child)) {\n header = child.props.children\n headerProps = child.props\n return\n }\n\n if (isDrawerBody(child)) {\n bodyProps = child.props\n body.push(child.props.children)\n return\n }\n\n if (isDrawerFooter(child)) {\n footer = child.props.children\n footerProps = child.props\n return\n }\n\n body.push(child)\n })\n\n const headerSection = headerProps ?? ({children: undefined} as MDrawerSectionProps)\n const bodySection = bodyProps ?? ({children: undefined} as MDrawerSectionProps)\n const footerSection = footerProps ?? ({children: undefined} as MDrawerSectionProps)\n const {\n children: _headerChildren,\n className: headerClassName,\n bordered: headerBordered = false,\n ...headerRest\n } = headerSection\n const {children: _bodyChildren, className: bodyClassName, ...bodyRest} = bodySection\n const {\n children: _footerChildren,\n className: footerClassName,\n bordered: footerBordered = false,\n ...footerRest\n } = footerSection\n\n return (\n <MPortal>\n <div\n ref={backdropRef}\n className={cn('mineral-backdrop', 'drawer-backdrop', !overlay && 'no-overlay', closing && 'closing')}\n onMouseDown={handleBackdropClick}\n >\n <div className={cn('drawer', side, size, className)} role=\"dialog\" aria-modal=\"true\" {...rest}>\n {header && (\n <div\n {...headerRest}\n className={cn('drawer-header', headerBordered && 'bordered', headerClassName)}\n >\n <div className=\"drawer-title\">{header}</div>\n <MButton\n variant=\"link\"\n color=\"neutral\"\n iconOnly\n size=\"sm\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"close\"\n >\n <MCloseIcon />\n </MButton>\n </div>\n )}\n <div {...bodyRest} className={cn('drawer-body', bodyClassName)}>\n {body}\n </div>\n {footer && (\n <div\n {...footerRest}\n className={cn('drawer-footer', footerBordered && 'bordered', footerClassName)}\n >\n {footer}\n </div>\n )}\n </div>\n </div>\n </MPortal>\n )\n}\n","import {useCallback} from 'react'\nimport type {MPopconfirmProps} from './MPopconfirm.types'\nimport {MPopover} from '../../primitives'\nimport {MButton} from '../../controls'\nimport {cn} from '../../../utils/cn'\nimport './MPopconfirm.css'\n\nexport function MPopconfirm({\n title,\n description,\n onConfirm,\n onCancel,\n confirmText = 'Yes',\n cancelText = 'No',\n color = 'warning',\n icon,\n placement = 'top-start',\n open,\n onOpenChange,\n anchorRef,\n className,\n}: MPopconfirmProps) {\n const handleCancel = useCallback(() => {\n onOpenChange(false)\n onCancel?.()\n }, [onOpenChange, onCancel])\n\n const handleConfirm = useCallback(() => {\n onOpenChange(false)\n onConfirm()\n }, [onOpenChange, onConfirm])\n\n return (\n <MPopover\n open={open}\n anchorRef={anchorRef}\n onClose={handleCancel}\n placement={placement}\n className={cn('popconfirm', `color-${color}`, className)}\n >\n <div className=\"body\">\n {icon && <div className=\"icon\">{icon}</div>}\n <div className=\"content\">\n <div className=\"title\">{title}</div>\n {description && <div className=\"description\">{description}</div>}\n </div>\n </div>\n <div className=\"actions\">\n <MButton variant=\"ghost\" size=\"sm\" color=\"neutral\" onClick={handleCancel}>\n {cancelText}\n </MButton>\n <MButton variant=\"ghost\" size=\"sm\" color={color} onClick={handleConfirm}>\n {confirmText}\n </MButton>\n </div>\n </MPopover>\n )\n}\n"],"mappings":"kqBAQA,IAAM,EAAgB,IAGtB,SAAgB,EAAO,CACnB,OACA,UACA,QACA,cACA,SACA,OAAO,KACP,kBAAkB,GAClB,gBAAgB,GAChB,YACA,WACA,GAAG,GACS,CACZ,GAAM,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,GAAA,EAAA,EAAA,QAAqC,KAAK,CAmDhD,OAhDA,EAAA,EAAA,eAAgB,CACR,IACA,EAAW,GAAK,CAChB,EAAW,GAAM,GAEtB,CAAC,EAAK,CAAC,EAGV,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,EAAS,CAClB,EAAW,GAAK,CAChB,IAAM,EAAQ,eAAiB,CAC3B,EAAW,GAAM,CACjB,EAAW,GAAM,EAClB,EAAc,CACjB,UAAa,aAAa,EAAM,GAErC,CAAC,EAAM,EAAQ,CAAC,EAEnB,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,CAAC,EAAe,OAE7B,IAAM,EAAiB,GAAyB,CACxC,EAAM,MAAQ,UAAU,GAAS,EAIzC,OADA,SAAS,iBAAiB,UAAW,EAAc,KACtC,SAAS,oBAAoB,UAAW,EAAc,EACpE,CAAC,EAAe,EAAS,EAAK,CAAC,EAElC,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,EAAS,OAEd,IAAM,EAAmB,SAAS,KAAK,MAAM,SAG7C,MAFA,UAAS,KAAK,MAAM,SAAW,aAElB,CACT,SAAS,KAAK,MAAM,SAAW,IAEpC,CAAC,EAAQ,CAAC,CAER,GAQD,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,UACI,EAAA,EAAA,KAAC,MAAD,CACI,IAAK,EACL,UAAW,EAAA,EAAG,mBAAoB,iBAAkB,GAAW,UAAU,CACzE,YAViB,GAAsC,CAC1D,GACD,EAAM,SAAW,EAAM,eAAe,GAAS,YAU3C,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,wBACZ,EAAA,EAAA,MAAC,EAAA,EAAD,CACI,UAAW,EAAA,EAAG,QAAS,EAAM,EAAU,CACvC,KAAM,SACN,aAAY,OACZ,kBAAiB,EAAQ,sBAAwB,IAAA,GACjD,GAAI,WALR,EAOM,GAAS,KACP,EAAA,EAAA,MAAC,EAAA,EAAD,CAAA,SAAA,CACK,IACG,EAAA,EAAA,KAAC,MAAD,CAAK,GAAI,sBAAuB,UAAW,uBACtC,EACC,CAAA,CAET,IAAe,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,6BAAsB,EAAkB,CAAA,CAC9D,CAAA,CAAA,EAElB,EAAA,EAAA,KAAC,EAAA,EAAD,CAAY,WAAqB,CAAA,CAChC,IAAU,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,SAAc,EAAqB,CAAA,CAC1C,GACN,CAAA,CACJ,CAAA,CACA,CAAA,CArCO,KC5DzB,IAAM,EAAgB,IAChB,EAAuB,GAEvB,EAA4C,CAC9C,GAAI,OACJ,GAAI,OACJ,GAAI,OACJ,KAAM,OACT,CAED,SAAgB,EAAO,CACnB,OACA,UACA,QACA,cACA,SACA,OAAO,KACP,kBAAkB,GAClB,gBAAgB,GAChB,YACA,WACA,QACA,GAAG,GACS,CACZ,IAAM,GAAA,EAAA,EAAA,QAAiB,CACjB,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,CAAC,EAAY,IAAA,EAAA,EAAA,UAA0B,EAAE,CAEzC,GAAA,EAAA,EAAA,QAAkE,KAAK,CACvE,GAAA,EAAA,EAAA,QAAuB,EAAE,EAE/B,EAAA,EAAA,eAAgB,CACR,IACA,EAAW,GAAK,CAChB,EAAW,GAAM,CACjB,EAAc,EAAE,CAChB,EAAc,QAAU,IAE7B,CAAC,EAAK,CAAC,EAEV,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,EAAS,CAClB,EAAW,GAAK,CAChB,IAAM,EAAQ,OAAO,eAAiB,CAClC,EAAW,GAAM,CACjB,EAAW,GAAM,EAClB,EAAc,CACjB,UAAa,OAAO,aAAa,EAAM,GAE5C,CAAC,EAAM,EAAQ,CAAC,EAEnB,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,EAAS,OAEd,IAAM,EAAmB,SAAS,KAAK,MAAM,SAG7C,MAFA,UAAS,KAAK,MAAM,SAAW,aAElB,CACT,SAAS,KAAK,MAAM,SAAW,IAEpC,CAAC,EAAQ,CAAC,EAEb,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,CAAC,EAAe,OAE7B,IAAM,EAAiB,GAAyB,CACxC,EAAM,MAAQ,UAAU,GAAS,EAIzC,OADA,SAAS,iBAAiB,UAAW,EAAc,KACtC,SAAS,oBAAoB,UAAW,EAAc,EACpE,CAAC,EAAe,EAAS,EAAK,CAAC,CAElC,SAAS,EAAoB,EAAmC,CACxD,GAAmB,EAAM,SAAW,EAAM,eAC1C,GAAS,CAIjB,SAAS,EAAwB,EAA6C,CAC1E,EAAM,gBAAgB,CACtB,EAAM,cAAc,kBAAkB,EAAM,UAAU,CAEtD,EAAa,QAAU,CACnB,UAAW,EAAM,UACjB,OAAQ,EAAM,QACjB,CACD,EAAc,EAAE,CAChB,EAAc,QAAU,EAG5B,SAAS,EAAwB,EAA6C,CAC1E,IAAM,EAAY,EAAa,QAC/B,GAAI,CAAC,GAAa,EAAU,YAAc,EAAM,UAC5C,OAGJ,IAAM,EAAa,KAAK,IAAI,EAAM,QAAU,EAAU,OAAQ,EAAE,CAChE,EAAc,QAAU,EACxB,EAAc,EAAW,CAG7B,SAAS,EAAW,EAAmB,CACnC,IAAM,EAAY,EAAa,QAC3B,MAAC,GAAa,EAAU,YAAc,GAM1C,IAFA,EAAa,QAAU,KAEnB,EAAc,QAAU,EAAsB,CAC9C,EAAc,EAAE,CAChB,EAAc,QAAU,EACxB,GAAS,CACT,OAGJ,EAAc,EAAE,CAChB,EAAc,QAAU,GAG5B,GAAI,CAAC,EAAS,OAAO,KAErB,IAAM,EAAiB,EAAc,GAC/B,EAAiB,EAAa,EAAI,cAAc,EAAW,KAAO,IAAA,GAExE,OACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,UACI,EAAA,EAAA,KAAC,MAAD,CACI,UAAW,EAAA,EAAG,mBAAoB,iBAAkB,GAAW,UAAU,CACzE,YAAa,YAEb,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,cAAc,MAAO,CAAC,UAAW,EAAe,WAC3D,EAAA,EAAA,MAAC,EAAA,EAAD,CACI,UAAW,EAAA,EAAG,QAAS,QAAQ,IAAQ,EAAU,CACjD,KAAK,SACL,aAAW,OACX,kBAAiB,EAAQ,EAAU,IAAA,GACnC,MAAO,CACH,GAAG,EACH,OAAQ,IAAS,OAAS,EAAiB,IAAA,GAC3C,UAAW,EACd,CACD,GAAI,WAVR,EAYI,EAAA,EAAA,KAAC,SAAD,CACI,KAAK,SACL,UAAU,gBACV,cAAe,EACf,cAAe,EACf,YAAc,GAAU,EAAW,EAAM,UAAU,CACnD,gBAAkB,GAAU,EAAW,EAAM,UAAU,CACvD,aAAW,+BAEX,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,eAAiB,CAAA,CAC5B,CAAA,EAEP,GAAS,KACP,EAAA,EAAA,MAAC,EAAA,EAAD,CAAa,UAAU,wBAAvB,EACI,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,sBAAf,CACK,IACG,EAAA,EAAA,KAAC,MAAD,CAAK,GAAI,EAAS,UAAU,uBACvB,EACC,CAAA,CAET,IAAe,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,6BAAqB,EAAkB,CAAA,CACpE,IACN,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,QAAQ,OACR,MAAM,UACN,SAAA,GACA,KAAK,KACL,QAAS,EACT,aAAW,QACX,UAAU,wBAEV,EAAA,EAAA,KAAC,EAAA,GAAD,EAAc,CAAA,CACR,CAAA,CACA,IAGlB,EAAA,EAAA,KAAC,EAAA,EAAD,CAAW,UAAU,aAAc,WAAqB,CAAA,CAEvD,IAAU,EAAA,EAAA,KAAC,EAAA,EAAD,CAAa,UAAU,wBAAgB,EAAqB,CAAA,CACnE,GACN,CAAA,CACJ,CAAA,CACA,CAAA,CCtLlB,SAAS,EAAc,EAAkB,CAKrC,OAJI,OAAO,GAAU,UAAY,OAAO,GAAU,SACvC,EAAM,UAAU,CAGpB,GAGX,SAAS,EAAgB,EAAsB,EAAkB,CAE7D,IAAM,EADa,EAAS,aAAa,CAAC,QAAQ,OAAQ,GAAG,CACpC,MAAM,IAAI,CAC7B,EAAM,EAAM,EAAM,OAAS,GAEjC,GAAI,CAAC,EACD,MAAO,GAGX,IAAM,EAAc,EAAM,SAAS,OAAO,CACpC,EAAc,EAAM,SAAS,OAAO,EAAI,EAAM,SAAS,MAAM,CAC7D,EAAe,EAAM,SAAS,QAAQ,CACtC,EAAa,EAAM,SAAS,MAAM,EAAI,EAAM,SAAS,SAAS,CAEpE,OACI,EAAM,IAAI,aAAa,GAAK,GAC5B,CAAC,CAAC,IAAgB,EAAM,SACxB,CAAC,CAAC,IAAgB,EAAM,SACxB,CAAC,CAAC,IAAiB,EAAM,UACzB,CAAC,CAAC,IAAe,EAAM,OAI/B,SAAS,EAAY,EAA8B,EAAe,CAC9D,GAAI,CAAC,EAAM,MAAM,CACb,OAAO,EAGX,IAAM,EAAkB,EAAM,MAAM,CAAC,aAAa,CAElD,OAAO,EAAM,OAAQ,GACjB,CACI,EAAc,EAAK,MAAM,CACzB,EAAc,EAAK,YAAY,CAC/B,EAAc,EAAK,MAAM,CACzB,EAAc,EAAK,YAAY,CAC/B,GAAI,EAAK,UAAY,EAAE,CAC1B,CAAC,KAAM,GAAU,EAAM,aAAa,CAAC,SAAS,EAAgB,CAAC,CACnE,CAGL,SAAS,EAAW,EAA8B,CAC9C,IAAM,EAAS,IAAI,IASnB,OAPA,EAAM,QAAS,GAAS,CACpB,IAAM,EAAM,EAAc,EAAK,MAAM,EAAI,UACnC,EAAU,EAAO,IAAI,EAAI,EAAI,CAAC,MAAO,EAAK,OAAS,UAAW,MAAO,EAAE,CAAC,CAC9E,EAAQ,MAAM,KAAK,EAAK,CACxB,EAAO,IAAI,EAAK,EAAQ,EAC1B,CAEK,MAAM,KAAK,EAAO,QAAQ,CAAC,CAGtC,SAAgB,EAAgB,CAC5B,QACA,gBAAgB,EAAE,CAClB,OACA,cAAc,GACd,eACA,WACA,QAAQ,kBACR,cACA,UACA,WAAW,SACX,cAAc,yCACd,aAAa,uBACb,SACA,OAAO,KACP,gBAAgB,IACK,CACrB,GAAM,CAAC,EAAc,IAAA,EAAA,EAAA,UAA4B,EAAY,CACvD,CAAC,EAAO,IAAA,EAAA,EAAA,UAAqB,GAAG,CAChC,CAAC,EAAc,IAAA,EAAA,EAAA,UAA2C,KAAK,CAC/D,EAAe,IAAS,IAAA,GACxB,EAAS,EAAe,EAAO,EAC/B,GAAA,EAAA,EAAA,QAAoC,KAAK,CAE/C,SAAS,EAAa,EAAmB,CAChC,GACD,EAAgB,EAAS,CAG7B,IAAe,EAAS,CAG5B,IAAM,GAAA,EAAA,EAAA,aAA8B,EAAY,EAAO,EAAM,CAAE,CAAC,EAAO,EAAM,CAAC,CACxE,GAAA,EAAA,EAAA,aAA6B,EAAW,EAAc,CAAE,CAAC,EAAc,CAAC,CACxE,GAAA,EAAA,EAAA,aAA+B,EAAa,QAAS,GAAU,EAAM,MAAM,CAAE,CAAC,EAAa,CAAC,CAC5F,GAAA,EAAA,EAAA,aAA0B,EAAc,OAAS,EAAgB,EAAM,MAAM,EAAG,EAAE,CAAG,CAAC,EAAe,EAAM,CAAC,CAElH,SAAS,EAAY,EAA2B,CAC5C,EAAK,YAAY,CACjB,IAAW,EAAK,CAEZ,CAAC,EAAK,UAAY,EAAK,MACvB,OAAO,SAAS,OAAO,EAAK,KAAK,CAGjC,IACA,EAAa,GAAM,CACnB,EAAS,GAAG,CACZ,EAAgB,KAAK,EAI7B,GAAM,CAAC,cAAa,iBAAgB,aAAY,cAAa,EAAA,EAAe,CACxE,UAAW,EAAe,OAC1B,SACA,YAAe,EAAa,GAAM,CAClC,SAAW,GAAU,CACjB,IAAM,EAAO,EAAe,GAExB,GACA,EAAY,EAAK,EAG5B,CAAC,EAEF,EAAA,EAAA,eAAgB,CACZ,IAAM,EAAiB,GAAyB,CACxC,EAAgB,EAAO,EAAS,GAChC,EAAM,gBAAgB,CACtB,EAAa,GAAK,GAM1B,OAFA,OAAO,iBAAiB,UAAW,EAAc,KAEpC,CACT,OAAO,oBAAoB,UAAW,EAAc,GAEzD,CAAC,EAAS,CAAC,EAEd,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,EAAQ,CACT,GAAY,CACZ,EAAgB,KAAK,CACrB,OAGJ,mBAAqB,EAAS,SAAS,OAAO,CAAC,EAChD,CAAC,EAAQ,EAAW,CAAC,EAExB,EAAA,EAAA,eAAgB,CACZ,GAAI,EAAc,GAAK,GAAe,EAAe,OAAQ,CACzD,EAAgB,KAAK,CACrB,OAGJ,EAAgB,EAAe,IAAc,IAAM,KAAK,EACzD,CAAC,EAAa,EAAe,CAAC,CAEjC,SAAS,GAAoB,EAA6C,CACtE,GAAU,EAAM,CAGpB,OACI,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACK,IACG,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,QAAS,SACT,KAAM,KACN,MAAO,UACP,SAAA,GACA,WAAW,EAAA,EAAA,KAAC,EAAA,GAAD,EAAe,CAAA,CAC1B,aAAY,OAAO,GAAU,SAAW,EAAQ,uBAChD,YAAe,EAAa,GAAK,CACnC,CAAA,EAGN,EAAA,EAAA,KAAC,EAAD,CACI,KAAM,EACN,YAAe,EAAa,GAAM,CAC3B,QACM,cACP,OACE,mBAER,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,gCAAf,EACI,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,mCACX,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,IAAK,EACL,MAAO,EACP,SAAW,GAAU,CACjB,EAAS,EAAM,OAAO,MAAM,CAC5B,EAAe,GAAG,EAEtB,UAAW,GACE,cACb,UAAA,GACA,UAAA,GACF,CAAA,CACA,CAAA,EAEN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,gCAAf,EACI,EAAA,EAAA,MAAC,EAAA,EAAD,CAAO,QAAS,YAAhB,EACI,EAAA,EAAA,MAAC,EAAA,EAAD,CAAA,SAAA,EACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAU,MAAO,WAAG,WAAmB,CAAA,EACvC,EAAA,EAAA,KAAC,EAAA,EAAD,CAAO,KAAM,KAAM,KAAM,iBAAS,wDAE1B,CAAA,CACE,CAAA,CAAA,EACd,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,UACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAa,QAAS,WACjB,EAAS,IAAK,GAAS,CACpB,IAAM,EAAQ,EAAK,aAAe,EAAK,MACjC,EAAY,OAAO,GAAU,SAAW,EAAQ,EAAc,EAAM,CAE1E,OACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAwB,QAAS,YAC7B,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,QAAS,QACT,MAAO,UACP,UAAW,EAAK,UAChB,GAAI,EAAK,GACT,KAAM,EAAK,KACX,OAAQ,EAAK,OACb,IAAK,EAAK,IACV,UAAW,EAAK,OAAQ,EAAA,EAAA,KAAC,EAAA,GAAD,EAAa,CAAA,CACrC,SAAA,GACA,aAAY,GAAa,IAAA,GACzB,YAAe,EAAY,EAAK,CAClC,CAAA,CACK,CAdI,EAAK,GAcT,EAEjB,CACQ,CAAA,CACN,CAAA,CACR,IAER,EAAA,EAAA,MAAC,EAAA,EAAD,CAAO,QAAS,YAAhB,EACI,EAAA,EAAA,MAAC,EAAA,EAAD,CAAA,SAAA,EACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAU,MAAO,WAAG,UAAkB,CAAA,EACtC,EAAA,EAAA,MAAC,EAAA,EAAD,CAAS,MAAO,SAAU,QAAS,cAAnC,EACI,EAAA,EAAA,MAAC,EAAA,EAAD,CAAO,KAAM,KAAM,KAAM,iBAAzB,CACK,EAAe,OAAO,SACnB,IACR,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,SAAO,EAAS,aAAa,CAAQ,CAAA,CAC/B,GACA,CAAA,CAAA,EACd,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,SACK,EAAa,QACV,EAAA,EAAA,KAAC,EAAA,EAAD,CAAQ,QAAS,KAAM,UAAU,mCAC5B,EAAa,IAAK,IACf,EAAA,EAAA,MAAC,EAAA,EAAD,CAAsD,QAAS,cAA/D,EACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAO,KAAM,KAAM,KAAM,iBACpB,EAAM,MACH,CAAA,CACP,EAAM,MAAM,IAAK,IACd,EAAA,EAAA,MAAC,SAAD,CAEI,KAAK,SACL,UAAW,EAAA,EACP,uBACA,IAAiB,EAAK,IAAM,SAC/B,CACD,iBAAoB,EAAgB,EAAK,GAAG,CAC5C,YAAe,EAAY,EAAK,UARpC,EAUI,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,qCACX,EAAK,OAAQ,EAAA,EAAA,KAAC,EAAA,GAAD,EAAa,CAAA,CACxB,CAAA,EACP,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,qCAAhB,EACI,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,sCACX,EAAK,MACH,CAAA,CACN,EAAK,cACF,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,4CACX,EAAK,YACH,CAAA,CAER,GACN,EAAK,QACF,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,uCACZ,EAAA,EAAA,KAAC,EAAA,EAAD,CAAQ,MAAO,UAAW,KAAM,cAC3B,EAAK,MACD,CAAA,CACN,CAAA,CAEN,EA7BA,EAAK,GA6BL,CACX,CACG,EArCI,EAAc,EAAM,MAAM,EAAI,UAqClC,CACX,CACG,CAAA,EAET,EAAA,EAAA,KAAC,EAAA,EAAD,CAAO,KAAM,iBAAU,EAAmB,CAAA,CAEtC,CAAA,CACR,GACN,GACJ,GACD,CAAA,CACV,CAAA,CAAA,CCpTX,IAAM,EAAgB,IAItB,SAAS,EAAe,EAA8C,CAClE,OAAA,EAAA,EAAA,gBAAsB,EAAM,EAAI,CAAC,CAAE,EAAM,KAAa,eAG1D,SAAS,EAAa,EAA8C,CAChE,OAAA,EAAA,EAAA,gBAAsB,EAAM,EAAI,CAAC,CAAE,EAAM,KAAa,aAG1D,SAAS,EAAe,EAA8C,CAClE,OAAA,EAAA,EAAA,gBAAsB,EAAM,EAAI,CAAC,CAAE,EAAM,KAAa,eAG1D,SAAgB,EAAc,CAAC,YAAgC,CAC3D,OAAO,EAAA,EAAA,KAAA,EAAA,SAAA,CAAG,WAAY,CAAA,CAEzB,EAAuB,eAAiB,GAEzC,SAAgB,EAAY,CAAC,YAAgC,CACzD,OAAO,EAAA,EAAA,KAAA,EAAA,SAAA,CAAG,WAAY,CAAA,CAEzB,EAAqB,aAAe,GAErC,SAAgB,EAAc,CAAC,YAAgC,CAC3D,OAAO,EAAA,EAAA,KAAA,EAAA,SAAA,CAAG,WAAY,CAAA,CAEzB,EAAuB,eAAiB,GAEzC,SAAgB,EAAQ,CACpB,OACA,UACA,OAAO,QACP,OAAO,KACP,UAAU,GACV,kBAAkB,GAClB,gBAAgB,GAChB,YACA,WACA,GAAG,GACU,CACb,GAAM,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,CAAC,EAAS,IAAA,EAAA,EAAA,UAAuB,GAAM,CACvC,GAAA,EAAA,EAAA,QAAqC,KAAK,CAyChD,IAvCA,EAAA,EAAA,eAAgB,CACR,IACA,EAAW,GAAK,CAChB,EAAW,GAAM,GAEtB,CAAC,EAAK,CAAC,EAEV,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,EAAS,CAClB,EAAW,GAAK,CAChB,IAAM,EAAQ,eAAiB,CAC3B,EAAW,GAAM,CACjB,EAAW,GAAM,EAClB,EAAc,CACjB,UAAa,aAAa,EAAM,GAErC,CAAC,EAAM,EAAQ,CAAC,EAEnB,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,GAAQ,CAAC,EAAe,OAE7B,IAAM,EAAiB,GAAqB,CACpC,EAAE,MAAQ,UAAU,GAAS,EAIrC,OADA,SAAS,iBAAiB,UAAW,EAAc,KACtC,SAAS,oBAAoB,UAAW,EAAc,EACpE,CAAC,EAAM,EAAe,EAAQ,CAAC,EAElC,EAAA,EAAA,eAAgB,CACZ,GAAI,CAAC,EAAS,OAEd,IAAM,EAAO,SAAS,KAAK,MAAM,SAEjC,MADA,UAAS,KAAK,MAAM,SAAW,aAClB,CACT,SAAS,KAAK,MAAM,SAAW,IAEpC,CAAC,EAAQ,CAAC,CAET,CAAC,EAAS,OAAO,KAErB,IAAM,EAAuB,GAAkC,CACvD,GAAmB,EAAE,SAAW,EAAE,eAAe,GAAS,EAG9D,EAAoB,KACpB,EAA0C,KAC1C,EAAwC,KACxC,EAAoB,KACpB,EAA0C,KACxC,EAAoB,EAAE,CAE5B,EAAA,SAAS,QAAQ,EAAW,GAAU,CAClC,GAAI,EAAe,EAAM,CAAE,CACvB,EAAS,EAAM,MAAM,SACrB,EAAc,EAAM,MACpB,OAGJ,GAAI,EAAa,EAAM,CAAE,CACrB,EAAY,EAAM,MAClB,EAAK,KAAK,EAAM,MAAM,SAAS,CAC/B,OAGJ,GAAI,EAAe,EAAM,CAAE,CACvB,EAAS,EAAM,MAAM,SACrB,EAAc,EAAM,MACpB,OAGJ,EAAK,KAAK,EAAM,EAClB,CAEF,IAAM,EAAgB,GAAgB,CAAC,SAAU,IAAA,GAAU,CACrD,EAAc,GAAc,CAAC,SAAU,IAAA,GAAU,CACjD,EAAgB,GAAgB,CAAC,SAAU,IAAA,GAAU,CACrD,CACF,SAAU,EACV,UAAW,EACX,SAAU,EAAiB,GAC3B,GAAG,GACH,EACE,CAAC,SAAU,EAAe,UAAW,EAAe,GAAG,GAAY,EACnE,CACF,SAAU,EACV,UAAW,EACX,SAAU,EAAiB,GAC3B,GAAG,GACH,EAEJ,OACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAA,UACI,EAAA,EAAA,KAAC,MAAD,CACI,IAAK,EACL,UAAW,EAAA,EAAG,mBAAoB,kBAAmB,CAAC,GAAW,aAAc,GAAW,UAAU,CACpG,YAAa,YAEb,EAAA,EAAA,MAAC,MAAD,CAAK,UAAW,EAAA,EAAG,SAAU,EAAM,EAAM,EAAU,CAAE,KAAK,SAAS,aAAW,OAAO,GAAI,WAAzF,CACK,IACG,EAAA,EAAA,MAAC,MAAD,CACI,GAAI,EACJ,UAAW,EAAA,EAAG,gBAAiB,GAAkB,WAAY,EAAgB,UAFjF,EAII,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,wBAAgB,EAAa,CAAA,EAC5C,EAAA,EAAA,KAAC,EAAA,EAAD,CACI,QAAQ,OACR,MAAM,UACN,SAAA,GACA,KAAK,KACL,QAAS,EACT,aAAW,QACX,UAAU,kBAEV,EAAA,EAAA,KAAC,EAAA,GAAD,EAAc,CAAA,CACR,CAAA,CACR,IAEV,EAAA,EAAA,KAAC,MAAD,CAAK,GAAI,EAAU,UAAW,EAAA,EAAG,cAAe,EAAc,UACzD,EACC,CAAA,CACL,IACG,EAAA,EAAA,KAAC,MAAD,CACI,GAAI,EACJ,UAAW,EAAA,EAAG,gBAAiB,GAAkB,WAAY,EAAgB,UAE5E,EACC,CAAA,CAER,GACJ,CAAA,CACA,CAAA,CCpLlB,SAAgB,EAAY,CACxB,QACA,cACA,YACA,WACA,cAAc,MACd,aAAa,KACb,QAAQ,UACR,OACA,YAAY,YACZ,OACA,eACA,YACA,aACiB,CACjB,IAAM,GAAA,EAAA,EAAA,iBAAiC,CACnC,EAAa,GAAM,CACnB,KAAY,EACb,CAAC,EAAc,EAAS,CAAC,CAEtB,GAAA,EAAA,EAAA,iBAAkC,CACpC,EAAa,GAAM,CACnB,GAAW,EACZ,CAAC,EAAc,EAAU,CAAC,CAE7B,OACI,EAAA,EAAA,MAAC,EAAA,EAAD,CACU,OACK,YACX,QAAS,EACE,YACX,UAAW,EAAA,EAAG,aAAc,SAAS,IAAS,EAAU,UAL5D,EAOI,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,gBAAf,CACK,IAAQ,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,gBAAQ,EAAW,CAAA,EAC3C,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mBAAf,EACI,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,iBAAS,EAAY,CAAA,CACnC,IAAe,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,uBAAe,EAAkB,CAAA,CAC9D,GACJ,IACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,mBAAf,EACI,EAAA,EAAA,KAAC,EAAA,EAAD,CAAS,QAAQ,QAAQ,KAAK,KAAK,MAAM,UAAU,QAAS,WACvD,EACK,CAAA,EACV,EAAA,EAAA,KAAC,EAAA,EAAD,CAAS,QAAQ,QAAQ,KAAK,KAAY,QAAO,QAAS,WACrD,EACK,CAAA,CACR,GACC"}
@@ -1,8 +1,8 @@
1
- import { Ki as e, On as t, qi as n } from "./icons-DLP-Rs6z.js";
1
+ import { On as e, Xi as t, Zi as n } from "./icons-CBMl-kOM.js";
2
2
  import { t as r } from "./cn-YER3QsV1.js";
3
3
  import { t as i } from "./useKeyboardNav-iEXOdEMB.js";
4
4
  import { t as a } from "./MPortal-Ba2Sxset.js";
5
- import { t as o } from "./MPopover-BRuwva-c.js";
5
+ import { t as o } from "./MPopover-C5aaGhma.js";
6
6
  import { n as s } from "./MSurface-B-sjyczH.js";
7
7
  import { t as c } from "./MText-CL-LPcXi.js";
8
8
  import { t as l } from "./MHeading-B7KgSP4T.js";
@@ -12,7 +12,7 @@ import { n as f } from "./MSkeleton-C5uD4Axo.js";
12
12
  import { t as p } from "./MStack-CSCw6to2.js";
13
13
  import { t as m } from "./MSimpleGrid-BWKurW6H.js";
14
14
  import { i as h, n as g, r as _, t as v } from "./MCard-azpp4YVD.js";
15
- import { t as y } from "./MInputSearch-DEr5HBgw.js";
15
+ import { t as y } from "./MInputSearch-BM8gLlJ1.js";
16
16
  import { t as b } from "./MTooltip-BTJkzOah.js";
17
17
  import { Children as x, isValidElement as S, useCallback as C, useEffect as w, useId as T, useMemo as E, useRef as D, useState as O } from "react";
18
18
  import { Fragment as k, jsx as A, jsxs as j } from "react/jsx-runtime";
@@ -84,34 +84,34 @@ var P = 540, F = 72, I = {
84
84
  lg: "72vh",
85
85
  full: "92vh"
86
86
  };
87
- function L({ open: t, onClose: n, title: i, description: o, footer: s, size: c = "md", closeOnBackdrop: l = !0, closeOnEscape: u = !0, className: f, children: p, style: m, ...y }) {
87
+ function L({ open: e, onClose: n, title: i, description: o, footer: s, size: c = "md", closeOnBackdrop: l = !0, closeOnEscape: u = !0, className: f, children: p, style: m, ...y }) {
88
88
  let b = T(), [x, S] = O(!1), [C, E] = O(!1), [k, M] = O(0), N = D(null), L = D(0);
89
89
  w(() => {
90
- t && (S(!0), E(!1), M(0), L.current = 0);
91
- }, [t]), w(() => {
92
- if (!t && x) {
90
+ e && (S(!0), E(!1), M(0), L.current = 0);
91
+ }, [e]), w(() => {
92
+ if (!e && x) {
93
93
  E(!0);
94
94
  let e = window.setTimeout(() => {
95
95
  S(!1), E(!1);
96
96
  }, P);
97
97
  return () => window.clearTimeout(e);
98
98
  }
99
- }, [t, x]), w(() => {
99
+ }, [e, x]), w(() => {
100
100
  if (!x) return;
101
101
  let e = document.body.style.overflow;
102
102
  return document.body.style.overflow = "hidden", () => {
103
103
  document.body.style.overflow = e;
104
104
  };
105
105
  }, [x]), w(() => {
106
- if (!t || !u) return;
107
- let e = (e) => {
106
+ if (!e || !u) return;
107
+ let t = (e) => {
108
108
  e.key === "Escape" && n();
109
109
  };
110
- return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
110
+ return document.addEventListener("keydown", t), () => document.removeEventListener("keydown", t);
111
111
  }, [
112
112
  u,
113
113
  n,
114
- t
114
+ e
115
115
  ]);
116
116
  function R(e) {
117
117
  l && e.target === e.currentTarget && n();
@@ -188,7 +188,7 @@ function L({ open: t, onClose: n, title: i, description: o, footer: s, size: c =
188
188
  onClick: n,
189
189
  "aria-label": "Close",
190
190
  className: "sheet-close",
191
- children: /* @__PURE__ */ A(e, {})
191
+ children: /* @__PURE__ */ A(t, {})
192
192
  })]
193
193
  }),
194
194
  /* @__PURE__ */ A(g, {
@@ -236,12 +236,12 @@ function B(e) {
236
236
  r.items.push(e), t.set(n, r);
237
237
  }), Array.from(t.values());
238
238
  }
239
- function V({ items: e, featuredItems: a = [], open: o, defaultOpen: _ = !1, onOpenChange: x, onSelect: S, title: C = "Command palette", description: T, trigger: M, shortcut: N = "ctrl+k", placeholder: P = "Search modules, records and actions...", emptyLabel: F = "No matching results.", footer: I, size: V = "lg", closeOnSelect: H = !0 }) {
239
+ function V({ items: t, featuredItems: a = [], open: o, defaultOpen: _ = !1, onOpenChange: x, onSelect: S, title: C = "Command palette", description: T, trigger: M, shortcut: N = "ctrl+k", placeholder: P = "Search modules, records and actions...", emptyLabel: F = "No matching results.", footer: I, size: V = "lg", closeOnSelect: H = !0 }) {
240
240
  let [te, ne] = O(_), [U, W] = O(""), [G, K] = O(null), q = o !== void 0, J = q ? o : te, re = D(null);
241
241
  function Y(e) {
242
242
  q || ne(e), x?.(e);
243
243
  }
244
- let ie = E(() => z(e, U), [e, U]), X = E(() => B(ie), [ie]), Z = E(() => X.flatMap((e) => e.items), [X]), ae = E(() => a.length ? a : e.slice(0, 6), [a, e]);
244
+ let ie = E(() => z(t, U), [t, U]), X = E(() => B(ie), [ie]), Z = E(() => X.flatMap((e) => e.items), [X]), ae = E(() => a.length ? a : t.slice(0, 6), [a, t]);
245
245
  function Q(e) {
246
246
  e.onSelect?.(), S?.(e), !e.onSelect && e.href && window.location.assign(e.href), H && (Y(!1), W(""), K(null));
247
247
  }
@@ -320,24 +320,24 @@ function V({ items: e, featuredItems: a = [], open: o, defaultOpen: _ = !1, onOp
320
320
  children: "Quick launch for the most frequent dashboard actions."
321
321
  })] }), /* @__PURE__ */ A(g, { children: /* @__PURE__ */ A(m, {
322
322
  columns: 4,
323
- children: ae.map((e) => {
324
- let n = e.actionLabel ?? e.title, r = typeof n == "string" ? n : R(n);
323
+ children: ae.map((t) => {
324
+ let n = t.actionLabel ?? t.title, r = typeof n == "string" ? n : R(n);
325
325
  return /* @__PURE__ */ A(b, {
326
326
  content: n,
327
327
  children: /* @__PURE__ */ A(d, {
328
328
  variant: "ghost",
329
329
  color: "primary",
330
- component: e.component,
331
- to: e.to,
332
- href: e.href,
333
- target: e.target,
334
- rel: e.rel,
335
- startIcon: e.icon ?? /* @__PURE__ */ A(t, {}),
330
+ component: t.component,
331
+ to: t.to,
332
+ href: t.href,
333
+ target: t.target,
334
+ rel: t.rel,
335
+ startIcon: t.icon ?? /* @__PURE__ */ A(e, {}),
336
336
  iconOnly: !0,
337
337
  "aria-label": r || void 0,
338
- onClick: () => Q(e)
338
+ onClick: () => Q(t)
339
339
  })
340
- }, e.id);
340
+ }, t.id);
341
341
  })
342
342
  }) })]
343
343
  }), /* @__PURE__ */ j(v, {
@@ -356,43 +356,43 @@ function V({ items: e, featuredItems: a = [], open: o, defaultOpen: _ = !1, onOp
356
356
  })] }), /* @__PURE__ */ A(g, { children: X.length ? /* @__PURE__ */ A(p, {
357
357
  padding: "xs",
358
358
  className: "command-palette-results",
359
- children: X.map((e) => /* @__PURE__ */ j(p, {
359
+ children: X.map((t) => /* @__PURE__ */ j(p, {
360
360
  padding: "xs",
361
361
  children: [/* @__PURE__ */ A(c, {
362
362
  size: "sm",
363
363
  tone: "muted",
364
- children: e.label
365
- }), e.items.map((e) => /* @__PURE__ */ j("button", {
364
+ children: t.label
365
+ }), t.items.map((t) => /* @__PURE__ */ j("button", {
366
366
  type: "button",
367
- className: r("command-palette-item", G === e.id && "active"),
368
- onMouseEnter: () => K(e.id),
369
- onClick: () => Q(e),
367
+ className: r("command-palette-item", G === t.id && "active"),
368
+ onMouseEnter: () => K(t.id),
369
+ onClick: () => Q(t),
370
370
  children: [
371
371
  /* @__PURE__ */ A("span", {
372
372
  className: "command-palette-item-icon",
373
- children: e.icon ?? /* @__PURE__ */ A(t, {})
373
+ children: t.icon ?? /* @__PURE__ */ A(e, {})
374
374
  }),
375
375
  /* @__PURE__ */ j("span", {
376
376
  className: "command-palette-item-copy",
377
377
  children: [/* @__PURE__ */ A("span", {
378
378
  className: "command-palette-item-title",
379
- children: e.title
380
- }), e.description && /* @__PURE__ */ A("span", {
379
+ children: t.title
380
+ }), t.description && /* @__PURE__ */ A("span", {
381
381
  className: "command-palette-item-description",
382
- children: e.description
382
+ children: t.description
383
383
  })]
384
384
  }),
385
- e.badge && /* @__PURE__ */ A("span", {
385
+ t.badge && /* @__PURE__ */ A("span", {
386
386
  className: "command-palette-item-badge",
387
387
  children: /* @__PURE__ */ A(f, {
388
388
  color: "primary",
389
389
  size: "sm",
390
- children: e.badge
390
+ children: t.badge
391
391
  })
392
392
  })
393
393
  ]
394
- }, e.id))]
395
- }, R(e.label) || "general"))
394
+ }, t.id))]
395
+ }, R(t.label) || "general"))
396
396
  }) : /* @__PURE__ */ A(c, {
397
397
  tone: "muted",
398
398
  children: F
@@ -426,26 +426,26 @@ function K({ children: e }) {
426
426
  return /* @__PURE__ */ A(k, { children: e });
427
427
  }
428
428
  K.__drawerFooter = !0;
429
- function q({ open: t, onClose: n, side: i = "right", size: o = "md", overlay: s = !0, closeOnBackdrop: c = !0, closeOnEscape: l = !0, className: u, children: f, ...p }) {
429
+ function q({ open: e, onClose: n, side: i = "right", size: o = "md", overlay: s = !0, closeOnBackdrop: c = !0, closeOnEscape: l = !0, className: u, children: f, ...p }) {
430
430
  let [m, h] = O(!1), [g, _] = O(!1), v = D(null);
431
431
  if (w(() => {
432
- t && (h(!0), _(!1));
433
- }, [t]), w(() => {
434
- if (!t && m) {
432
+ e && (h(!0), _(!1));
433
+ }, [e]), w(() => {
434
+ if (!e && m) {
435
435
  _(!0);
436
436
  let e = setTimeout(() => {
437
437
  h(!1), _(!1);
438
438
  }, H);
439
439
  return () => clearTimeout(e);
440
440
  }
441
- }, [t, m]), w(() => {
442
- if (!t || !l) return;
443
- let e = (e) => {
441
+ }, [e, m]), w(() => {
442
+ if (!e || !l) return;
443
+ let t = (e) => {
444
444
  e.key === "Escape" && n();
445
445
  };
446
- return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
446
+ return document.addEventListener("keydown", t), () => document.removeEventListener("keydown", t);
447
447
  }, [
448
- t,
448
+ e,
449
449
  l,
450
450
  n
451
451
  ]), w(() => {
@@ -498,7 +498,7 @@ function q({ open: t, onClose: n, side: i = "right", size: o = "md", overlay: s
498
498
  onClick: n,
499
499
  "aria-label": "Close",
500
500
  className: "close",
501
- children: /* @__PURE__ */ A(e, {})
501
+ children: /* @__PURE__ */ A(t, {})
502
502
  })]
503
503
  }),
504
504
  /* @__PURE__ */ A("div", {
@@ -565,4 +565,4 @@ function J({ title: e, description: t, onConfirm: n, onCancel: i, confirmText: a
565
565
  //#endregion
566
566
  export { W as a, N as c, K as i, q as n, V as o, G as r, L as s, J as t };
567
567
 
568
- //# sourceMappingURL=overlays-WA3jnWTG.js.map
568
+ //# sourceMappingURL=overlays-C1vO_A2I.js.map