efficient-shell 4.145.0 → 4.148.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +85 -3
  2. package/dist/{Browser-24YNRTKT.js → Browser-7R3TZSJ6.js} +14 -14
  3. package/dist/{Calculator-LER6KUQC.js → Calculator-4CLXMBA4.js} +22 -22
  4. package/dist/{ConfirmDialog-GAYETRMG.js → ConfirmDialog-DUYZA2FE.js} +1 -1
  5. package/dist/{CurrencyConverter-Y35GFDFF.js → CurrencyConverter-KWNYRYOZ.js} +6 -6
  6. package/dist/{Documents-7FYX2CGT.js → Documents-ZWKLVUOC.js} +9 -9
  7. package/dist/{Files-RZOML2N6.js → Files-SLJIS2FX.js} +24 -24
  8. package/dist/{Notepad-VVDCBDUA.js → Notepad-CBP2PUQD.js} +11 -11
  9. package/dist/{PomodoroTimer-VAM3AJOX.js → PomodoroTimer-EOQDA5J7.js} +24 -24
  10. package/dist/{Preview-HZ37D7QJ.js → Preview-PFJ6NPDF.js} +14 -14
  11. package/dist/{Spreadsheet-6WX3P6AB.js → Spreadsheet-IWXGGDMT.js} +14 -14
  12. package/dist/{Stock-AUWI3TUX.js → Stock-VVM7GK4C.js} +3 -3
  13. package/dist/{Weather-HU75TH7T.js → Weather-4LJTQLDL.js} +13 -13
  14. package/dist/{WorldClock-T64MDRMJ.js → WorldClock-AHTVTAI7.js} +7 -7
  15. package/dist/apps/index.js +1 -1
  16. package/dist/brand.css +1 -1
  17. package/dist/chunk-ADTQ55CV.js +954 -0
  18. package/dist/{chunk-7DAQ3WVP.js → chunk-ET5HXDOR.js} +16 -16
  19. package/dist/{chunk-RJ4LACFH.js → chunk-JIUJNTJA.js} +1 -1
  20. package/dist/{chunk-GDSGXDET.js → chunk-L2ZO76TC.js} +1 -1
  21. package/dist/chunk-QOXIUJTN.js +29 -0
  22. package/dist/chunk-VUXPSUWI.js +1 -0
  23. package/dist/{chunk-2RHMSFZV.js → chunk-ZBIWNVJS.js} +7 -7
  24. package/dist/{index-NhR7frRu.d.ts → index-Cek0S3MH.d.ts} +101 -4
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.js +71 -71
  27. package/dist/page-tabs/index.js +13 -13
  28. package/dist/ui/index.d.ts +1 -1
  29. package/dist/ui/index.js +1 -1
  30. package/package.json +1 -1
  31. package/dist/chunk-LVFMK5OQ.js +0 -29
  32. package/dist/chunk-NBBOFQPL.js +0 -947
  33. package/dist/chunk-TWV42Q3K.js +0 -1
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import{subscribePomo as e,getPomoSnapshot as t}from"./chunk-MU5H2CDL.js";export{setShellTodoProvider}from"./chunk-MU5H2CDL.js";export{ImageAnnotator_default as ImageAnnotator}from"./chunk-L7TEFXIS.js";import{PREVIEW_OPENED_EVENT as r,openPreviewFile as n}from"./chunk-4FS742BM.js";import{formatDate as o,Markdown as a,useTheme as l,GlobalSearch as i,resolveTheme as s,useClickOutside as c,ListLoadError as d,Checkbox_default as u,ListFooter as m,copyToClipboard as h,firstEnabledIndex as p,FormField as g,Input_default as f,applyThemePrefs as y,selectionAt as b,lastEnabledIndex as x,nextEnabledIndex as w,matchTypeahead as v}from"./chunk-NBBOFQPL.js";export{APP_UPDATE_POLL_MS,Accordion,AppUpdateBanner,AttachButton,AttachmentDropZone,AttachmentList,AuthScreen,Avatar,AvatarGroup,Banner,BarChart,BoxPlotChart,BrandAssetEditor,BudgetBar,CHART_INK,Calendar,CandlestickChart,Card,CartesianPlot,ChartBrush,ChartDefs,ChartDot,ChartFrame,ChartHighlightProvider,ChartSkeleton,ChartTooltip,ChatTemplate,Checkbox_default as Checkbox,CheckoutTemplate,ChordChart,ColoredBadge,ColumnChart,ComposerAttachments,ContainerFillChart,CountBadge,DAY_MS,DashboardTemplate,DataTable,DataTablePage,DatePicker_default as DatePicker,DateRangePicker,DateTimePicker_default as DateTimePicker,DescriptionList,Divider,DonutChart,Drawer,DropdownMenu,EmailTemplate,EmptyState,ErrorBoundary,ErrorPage,FilePicker_default as FilePicker,FormErrorSummary,FormField,FormLayoutPage,FunnelChart,GROUP_COLORS,GROUP_COLORS_SOLID,GalleryTemplate,GlobalSearch,Grid,HeatmapChart,HelpCenter,HistogramChart,INPUT_BASE,INPUT_SIZES,IconButton_default as IconButton,Inline,Input_default as Input,InputNumber_default as InputNumber,Kanban,Label,LineChart,ListFooter,ListLoadError,MAX_FRACTION_DIGITS,MENU_MAX_HEIGHT,MOTION,Markdown,Markdown as MarkdownLite,MediaUploadField,MediaUploadGrid,Meter,MetricBar,MilestoneTimeline,NativeSelect,NumericKeypad,POPUP_MAX_WIDTH,POST_PRODUCTION_STATUSES,PageHeader,Pagination,PaperclipGlyph,Paragraph,PieChart,PortalBrandingProvider,ProductionTimeline,RADAR_SERIES_CAP,RadarChart,RadialBarChart,Radio_default as Radio,RadioGroup,RangeChart,RankedBars,SCATTER_SERIES_CAP,SERIES_SLOT_COUNT,SERIES_VARS,STAGES,STATUS_VARS,SankeyChart,ScatterChart,SearchableSelect,Segmented,Select_default as Select,SettingRow,SidebarActionButton,SidebarGroupLabel,SidebarNavItem,Skeleton,Snippet,Sparkline,Stack,StatCard,StatTile,Statistic,StatusBadge,StatusBadgeProvider,Stepper,SunburstChart,Switch_default as Switch,Tabs,TagInput,Text,Textarea_default as Textarea,TileButton_default as TileButton,TimePicker_default as TimePicker,TimeSeriesChart,TimelineTrack,Title,Tooltip,TopNav,TreemapChart,WaterfallChart,angleScale,appendKey,applyThemePrefs,arcPath,areaBetween,areaFrom,autoHighlightIndex,backspace,bandScale,binValues,budgetState,bumpPath,calcOverall,calcReportOverall,copyToClipboard,curvePath,dashFor,fillFor,fillId,firstDayOfWeek,fmtSliderDate,formatDate,fromKey as fromDateKey,glowId,groundId,groupColors,highlightOpacity,inputClasses,isSeverityTone,ladderScale,linearPath,linearScale,logScale,maskId,mediaFileName,monotonePath,niceMax,polygonPoints,popupBounds,radiusScale,resolvePortalBrandAsset,resolveSeriesColor,resolveTheme,seriesColor,severityOf,splinePath,squarify,stagger,stepPath,tabButtonId,tabPanelId,toKey as toDateKey,toDayMs,toISODate,useAppUpdate,useClickOutside,useDropdownPosition,useHighlight,usePlotWidth,usePortalBranding,useProductionTimeline,useTheme}from"./chunk-NBBOFQPL.js";export{Breadcrumbs}from"./chunk-I55UMU3R.js";import{SidebarLayout as k}from"./chunk-SLCR26NK.js";export{SidebarLayout}from"./chunk-SLCR26NK.js";import{playNotification as N,playStartup as C,soundsEnabled as M,getSoundConfig as S,SOUND_PACK_KEYS as _,SOUND_PACKS as L,SOUND_TYPES as E,SOUND_TYPE_LABELS as P,setSoundForType as T,previewSound as $,setAllSounds as I,playLogout as D}from"./chunk-BUTSU7FO.js";import{useAuth as A}from"./chunk-LVDRBRYU.js";export{setShellAuthBridge}from"./chunk-LVDRBRYU.js";import{BrandMark as j}from"./chunk-OCSOMMY2.js";export{BrandMark,resolveBrandMarkTreatment}from"./chunk-OCSOMMY2.js";import{withSpareRow as B,EditableGrid as R}from"./chunk-TFKB2WEB.js";export{EditableGrid}from"./chunk-TFKB2WEB.js";import{escapeHtml as W}from"./chunk-BR22X7E5.js";import{publishDesktopFolders as F,requestFilesTrashView as z,FolderGlyph as O,requestFilesDesktopFolderView as H,FileIconTile as V}from"./chunk-NPJH5MD7.js";import{setPdfPreview as K}from"./chunk-ESL5TDNA.js";import{toast_default as U}from"./chunk-KKOHUQPF.js";export{toast_default as toast}from"./chunk-KKOHUQPF.js";import"./chunk-VTVSMRFX.js";import{APP_VERSION as Y,VERSION as X}from"./chunk-TWV42Q3K.js";export{VERSION}from"./chunk-TWV42Q3K.js";import{cancelWindowFront as q,requestWindowFront as G,useWindowManager as J,WINDOW_REGISTRY as Q,isPageEntry as Z,Modal as ee,setPerfCollecting as te,drainPerfEvents as re,markMenuOpen as ne,SIDEBAR_STRIP_W as oe,forgetMaximizedWindowBoxes as ae,ModalActions as le,useModalActive as ie,LoadingSpinner as se,useEnclosingModalId as ce,client_default as de,isDraftEntityId as ue,isShellApiClientConfigured as me,CancelButton as he,setWindowPosition as pe,isDraftEntityWindow as ge}from"./chunk-7DAQ3WVP.js";export{CancelButton,CopyButton,DocFavStar,EntityWindowFallback,EntityWindowLoading,EntityWindowState,MODAL_SUBMIT_SELECTOR,Modal,ModalActions,UndoControls,UndoProvider,WindowCrashedFallback,WindowErrorBoundary,WindowManagerProvider,WindowTitle,beginWindowGesture,commitExposeHighlight,exitExposeMode,getActiveWindowRoute,getExposeHighlight,getWindowPosition,isEntityEntry,isPageEntry,markMenuOpen,requestWindowFront,setExposeHighlight,setShellApiClient,setShellWindowRegistry,setWindowDefaultPosition,setWindowPosition,subscribeExposeHighlight,toggleExposeMode,useEnclosingModalId,useIsActiveWindow,useModalActive,useUndo,useUndoCanEdit,useUndoable,useUndoableState,useWidgetSettings,useWindowDirty,useWindowManager,useWindowMenuItem,useWindowTitle}from"./chunk-7DAQ3WVP.js";import{CMD_K as fe,CMD_DOT as ye,SHIFT as be,MOD as xe,ENTER as we,CMD_A as ve,ALT_SHIFT_N as ke,ALT_SHIFT_E as Ne,CMD_ENTER as Ce,CMD_S as Me,ALT_SHIFT_D as Se,CMD_Z as _e,CMD_SHIFT_Z as Le,useShellPrefs as Ee,useIsMobile as Pe,useShellPrefsAdapter as Te}from"./chunk-V453E4KU.js";export{ALT,ALT_SHIFT_D,ALT_SHIFT_E,ALT_SHIFT_N,CMD_A,CMD_DOT,CMD_ENTER,CMD_K,CMD_S,ENTER,Kbd,LoadingSpinner,MOD,NEXT_CHUNK_PATH_PREFIX,Result,SHIFT,STALE_CHUNK_RELOAD_COOLDOWN_MS,STALE_CHUNK_RELOAD_KEY,ShellPrefsProvider,VITE_PRELOAD_ERROR_EVENT,installStaleChunkReload,isMac,isStaleChunkError,useIsMobile,useLocalStoragePrefs,useShellPrefs}from"./chunk-V453E4KU.js";import{startMenuCategories as $e,navVisible as Ie,navSections as De,isSection as Ae,navIcons as je,isReachable as Be,sectionIcons as Re,useShellAuth as We,visibleChildren as Fe}from"./chunk-UB4JIOLD.js";export{ShellAuthProvider,setShellNavIcons,useShellAuth}from"./chunk-UB4JIOLD.js";import{useFileIntake as ze,FileIntakeAlert as Oe}from"./chunk-UB22J6EF.js";export{FileIntakeAlert,acceptsFile,useFileIntake}from"./chunk-UB22J6EF.js";import{Button_default as He}from"./chunk-PH3PRIFP.js";export{Button_default as Button,buttonClasses,iconButtonClasses}from"./chunk-PH3PRIFP.js";import{PopupMenu as Ve,PopupMenuDivider as Ke,PopupMenuLabel as Ue,PopupMenuItem as Ye,resolveMenuLevels as Xe,keepsNativeMenu as qe,describeContextTarget as Ge,MenuIcon as Je,openMenuLevel as Qe,closeMenuBelow as Ze,clampMenuTop as et,menuPanelLeft as tt}from"./chunk-2RHMSFZV.js";export{NATIVE_MENU_ATTR,PopupMenu,PopupMenuDivider,PopupMenuItem,PopupMenuLabel,PopupSubmenu,describeContextTarget,keepsNativeMenu}from"./chunk-2RHMSFZV.js";import{useDismissPopupsOnOpen as rt,Z_LAYERS as nt,registerModalEscapeInterceptor as ot,onOverlayOpen as at}from"./chunk-LVFMK5OQ.js";export{ConfirmProvider,Dialog,OVERLAY_OPEN_EVENT,Z_LAYERS,confirm,confirmDestructive,dismissPopups,prompt,registerModalEscapeInterceptor,useConfirm,useFocusTrap,useScrollLock}from"./chunk-LVFMK5OQ.js";import{GLASS_INPUT_BG as lt,glassStyle as it}from"./chunk-57MIENLJ.js";export{GLASS_DIVIDER,GLASS_INPUT_BG,glassStyle}from"./chunk-57MIENLJ.js";import"./chunk-MAIHBBWT.js";import{useShellStrings as st}from"./chunk-TR6PLN7W.js";export{DEFAULT_SHELL_STRINGS,ShellStringsProvider,useShellLocale,useShellStrings}from"./chunk-TR6PLN7W.js";import"./chunk-D65T4H6J.js";import{createContext as ct,lazy as dt,useSyncExternalStore as ut,useState as mt,useEffect as ht,useRef as pt,useCallback as gt,useLayoutEffect as ft,useMemo as yt,useContext as bt,isValidElement as xt,cloneElement as wt,Suspense as vt,useId as kt}from"react";import{Dialog as Nt,DialogBackdrop as Ct,DialogPanel as Mt}from"@headlessui/react";import{jsxs as St,jsx as _t,Fragment as Lt}from"react/jsx-runtime";import{createPortal as Et}from"react-dom";import{useQueryClient as Pt,useQuery as Tt,useInfiniteQuery as $t,QueryClientContext as It,QueryClient as Dt}from"@tanstack/react-query";import"react-router-dom";import{XMarkIcon as At}from"@heroicons/react/20/solid";function jt(...e){return Object.assign({},...e)}function Bt(e){let t=null,r=0;const n=/* @__PURE__ */new Set,o=()=>{n.forEach(e=>e())};return{windowKey:e,set(n,a){if(null===n)return t=null,q(e),void o();t={...n,nav:++r},o(),!1!==a?.raise&&G(e)},get:()=>t,subscribe:e=>(n.add(e),()=>{n.delete(e)})}}function Rt(e){return ut(e.subscribe,e.get,e.get)}var Wt=[{title:"Global",shortcuts:[{keys:fe,description:"Search"},{keys:ye,description:"Toggle sidebar"},{keys:"Ctrl F11",description:"Toggle fullscreen"},{keys:"ESC",description:"Exit fullscreen (when no windows open)"},{keys:"?",description:"Show keyboard shortcuts"}]},{title:"Windows (title bar focused)",shortcuts:[{keys:"←↑→↓",description:"Move window"},{keys:`${be} Arrows`,description:"Resize window"},{keys:`${xe} ←/→`,description:"Snap to left / right half"},{keys:`${xe} ↑`,description:"Maximize"},{keys:`${xe} ↓`,description:"Restore / minimize"},{keys:we,description:"Toggle maximize"}]},{title:"Lists",shortcuts:[{keys:"J / ↓",description:"Next row"},{keys:"K / ↑",description:"Previous row"},{keys:"⏎",description:"Open selected row"},{keys:"⇧J / ⇧K",description:"Move and select"},{keys:"⇧ Click",description:"Range select"},{keys:"Space",description:"Toggle row checkbox"},{keys:ve,description:"Select / deselect all"},{keys:ke,description:"Create new item"},{keys:Ne,description:"Edit selected item"}]},{title:"Modals / Forms",shortcuts:[{keys:Ce,description:"Submit"},{keys:Me,description:"Save"},{keys:Se,description:"Save as new (duplicate)"},{keys:_e,description:"Undo the last change to the form"},{keys:Le,description:"Redo it"},{keys:"ESC",description:"Close modal"}]}];function Ft(){const[e,t]=mt(!1);return ht(()=>{const e=()=>t(e=>!e);return document.addEventListener("toggle-shortcut-help",e),()=>document.removeEventListener("toggle-shortcut-help",e)},[]),ht(()=>{const e=e=>{if("?"===e.key&&!e.metaKey&&!e.ctrlKey&&!e.altKey){const r=e.target?.tagName;if("INPUT"===r||"TEXTAREA"===r||"SELECT"===r)return;if(e.target?.isContentEditable)return;e.preventDefault(),t(e=>!e)}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[]),rt(e),/* @__PURE__ */St(Nt,{open:e,onClose:()=>t(!1),className:"relative",style:{zIndex:nt.overlay},children:[
2
+ import{subscribePomo as e,getPomoSnapshot as t}from"./chunk-MU5H2CDL.js";export{setShellTodoProvider}from"./chunk-MU5H2CDL.js";export{ImageAnnotator_default as ImageAnnotator}from"./chunk-L7TEFXIS.js";import{PREVIEW_OPENED_EVENT as r,openPreviewFile as n}from"./chunk-4FS742BM.js";import{formatDate as o,Markdown as a,useTheme as l,GlobalSearch as i,resolveTheme as s,useClickOutside as c,ListLoadError as d,Checkbox_default as u,ListFooter as m,copyToClipboard as h,firstEnabledIndex as p,FormField as g,Input_default as f,applyThemePrefs as y,selectionAt as b,lastEnabledIndex as x,nextEnabledIndex as w,matchTypeahead as v}from"./chunk-ADTQ55CV.js";export{APP_UPDATE_POLL_MS,Accordion,AppUpdateBanner,AttachButton,AttachmentDropZone,AttachmentList,AuthScreen,Avatar,AvatarGroup,Banner,BarChart,BoxPlotChart,BrandAssetEditor,BudgetBar,CHART_INK,Calendar,CandlestickChart,Card,CartesianPlot,ChartBrush,ChartDefs,ChartDot,ChartFrame,ChartHighlightProvider,ChartSkeleton,ChartTooltip,ChatTemplate,Checkbox_default as Checkbox,CheckoutTemplate,ChordChart,ColoredBadge,ColumnChart,ComposerAttachments,ContainerFillChart,CountBadge,DAY_MS,DashboardTemplate,DataTable,DataTablePage,DatePicker_default as DatePicker,DateRangePicker,DateTimePicker_default as DateTimePicker,DescriptionList,Divider,DonutChart,Drawer,DropdownMenu,EmailTemplate,EmptyState,ErrorBoundary,ErrorPage,FilePicker_default as FilePicker,FormErrorSummary,FormField,FormLayoutPage,FunnelChart,GROUP_COLORS,GROUP_COLORS_SOLID,GalleryTemplate,GlobalSearch,Grid,HeatmapChart,HelpCenter,HistogramChart,INPUT_BASE,INPUT_SIZES,IconButton_default as IconButton,Inline,Input_default as Input,InputNumber_default as InputNumber,Kanban,Label,LineChart,ListFooter,ListLoadError,MAX_FRACTION_DIGITS,MENU_MAX_HEIGHT,MOTION,Markdown,Markdown as MarkdownLite,MediaUploadField,MediaUploadGrid,Meter,MetricBar,MilestoneTimeline,NativeSelect,NumericKeypad,POPUP_MAX_WIDTH,POST_PRODUCTION_STATUSES,PageHeader,Pagination,PaperclipGlyph,Paragraph,PieChart,Popover,PortalBrandingProvider,ProductionTimeline,RADAR_SERIES_CAP,RadarChart,RadialBarChart,Radio_default as Radio,RadioGroup,RangeChart,RankedBars,SCATTER_SERIES_CAP,SERIES_SLOT_COUNT,SERIES_VARS,STAGES,STATUS_VARS,SankeyChart,ScatterChart,SearchableSelect,Segmented,Select_default as Select,SettingRow,SidebarActionButton,SidebarGroupLabel,SidebarNavItem,Skeleton,Snippet,Sparkline,Stack,StatCard,StatTile,Statistic,StatusBadge,StatusBadgeProvider,Stepper,SunburstChart,Switch_default as Switch,Tabs,TagInput,Text,Textarea_default as Textarea,TileButton_default as TileButton,TimePicker_default as TimePicker,TimeSeriesChart,TimelineTrack,Title,Tooltip,TopNav,TreemapChart,WaterfallChart,angleScale,appendKey,applyThemePrefs,arcPath,areaBetween,areaFrom,autoHighlightIndex,backspace,bandScale,binValues,budgetState,bumpPath,calcOverall,calcReportOverall,copyToClipboard,curvePath,dashFor,fillFor,fillId,firstDayOfWeek,fmtSliderDate,formatDate,fromKey as fromDateKey,glowId,groundId,groupColors,highlightOpacity,inputClasses,isSeverityTone,ladderScale,linearPath,linearScale,logScale,maskId,mediaFileName,monotonePath,niceMax,polygonPoints,popupBounds,radiusScale,resolvePortalBrandAsset,resolveSeriesColor,resolveTheme,seriesColor,severityOf,splinePath,squarify,stagger,stepPath,tabButtonId,tabPanelId,toKey as toDateKey,toDayMs,toISODate,useAppUpdate,useClickOutside,useDropdownPosition,useHighlight,usePlotWidth,usePortalBranding,useProductionTimeline,useTheme}from"./chunk-ADTQ55CV.js";export{Breadcrumbs}from"./chunk-I55UMU3R.js";import{SidebarLayout as k}from"./chunk-SLCR26NK.js";export{SidebarLayout}from"./chunk-SLCR26NK.js";import{playNotification as N,playStartup as C,soundsEnabled as M,getSoundConfig as S,SOUND_PACK_KEYS as _,SOUND_PACKS as L,SOUND_TYPES as E,SOUND_TYPE_LABELS as P,setSoundForType as T,previewSound as $,setAllSounds as I,playLogout as D}from"./chunk-BUTSU7FO.js";import{useAuth as A}from"./chunk-LVDRBRYU.js";export{setShellAuthBridge}from"./chunk-LVDRBRYU.js";import{BrandMark as j}from"./chunk-OCSOMMY2.js";export{BrandMark,resolveBrandMarkTreatment}from"./chunk-OCSOMMY2.js";import{withSpareRow as B,EditableGrid as R}from"./chunk-TFKB2WEB.js";export{EditableGrid}from"./chunk-TFKB2WEB.js";import{escapeHtml as W}from"./chunk-BR22X7E5.js";import{publishDesktopFolders as F,requestFilesTrashView as z,FolderGlyph as O,requestFilesDesktopFolderView as H,FileIconTile as V}from"./chunk-NPJH5MD7.js";import{setPdfPreview as K}from"./chunk-ESL5TDNA.js";import{toast_default as U}from"./chunk-KKOHUQPF.js";export{toast_default as toast}from"./chunk-KKOHUQPF.js";import"./chunk-VTVSMRFX.js";import{APP_VERSION as X,VERSION as Y}from"./chunk-VUXPSUWI.js";export{VERSION}from"./chunk-VUXPSUWI.js";import{cancelWindowFront as q,requestWindowFront as G,useWindowManager as J,WINDOW_REGISTRY as Q,isPageEntry as Z,Modal as ee,setPerfCollecting as te,drainPerfEvents as re,markMenuOpen as ne,SIDEBAR_STRIP_W as oe,forgetMaximizedWindowBoxes as ae,ModalActions as le,useModalActive as ie,LoadingSpinner as se,useEnclosingModalId as ce,client_default as de,isDraftEntityId as ue,isShellApiClientConfigured as me,CancelButton as he,setWindowPosition as pe,isDraftEntityWindow as ge}from"./chunk-ET5HXDOR.js";export{CancelButton,CopyButton,DocFavStar,EntityWindowFallback,EntityWindowLoading,EntityWindowState,MODAL_SUBMIT_SELECTOR,Modal,ModalActions,UndoControls,UndoProvider,WindowCrashedFallback,WindowErrorBoundary,WindowManagerProvider,WindowTitle,beginWindowGesture,commitExposeHighlight,exitExposeMode,getActiveWindowRoute,getExposeHighlight,getWindowPosition,isEntityEntry,isPageEntry,markMenuOpen,requestWindowFront,setExposeHighlight,setShellApiClient,setShellWindowRegistry,setWindowDefaultPosition,setWindowPosition,subscribeExposeHighlight,toggleExposeMode,useEnclosingModalId,useIsActiveWindow,useModalActive,useUndo,useUndoCanEdit,useUndoable,useUndoableState,useWidgetSettings,useWindowDirty,useWindowManager,useWindowMenuItem,useWindowTitle}from"./chunk-ET5HXDOR.js";import{CMD_K as fe,CMD_DOT as ye,SHIFT as be,MOD as xe,ENTER as we,CMD_A as ve,ALT_SHIFT_N as ke,ALT_SHIFT_E as Ne,CMD_ENTER as Ce,CMD_S as Me,ALT_SHIFT_D as Se,CMD_Z as _e,CMD_SHIFT_Z as Le,useShellPrefs as Ee,useIsMobile as Pe,useShellPrefsAdapter as Te}from"./chunk-V453E4KU.js";export{ALT,ALT_SHIFT_D,ALT_SHIFT_E,ALT_SHIFT_N,CMD_A,CMD_DOT,CMD_ENTER,CMD_K,CMD_S,ENTER,Kbd,LoadingSpinner,MOD,NEXT_CHUNK_PATH_PREFIX,Result,SHIFT,STALE_CHUNK_RELOAD_COOLDOWN_MS,STALE_CHUNK_RELOAD_KEY,ShellPrefsProvider,VITE_PRELOAD_ERROR_EVENT,installStaleChunkReload,isMac,isStaleChunkError,useIsMobile,useLocalStoragePrefs,useShellPrefs}from"./chunk-V453E4KU.js";import{startMenuCategories as $e,navVisible as Ie,navSections as De,isSection as Ae,navIcons as je,isReachable as Be,sectionIcons as Re,useShellAuth as We,visibleChildren as Fe}from"./chunk-UB4JIOLD.js";export{ShellAuthProvider,setShellNavIcons,useShellAuth}from"./chunk-UB4JIOLD.js";import{useFileIntake as ze,FileIntakeAlert as Oe}from"./chunk-UB22J6EF.js";export{FileIntakeAlert,acceptsFile,useFileIntake}from"./chunk-UB22J6EF.js";import{Button_default as He}from"./chunk-PH3PRIFP.js";export{Button_default as Button,buttonClasses,iconButtonClasses}from"./chunk-PH3PRIFP.js";import{PopupMenu as Ve,PopupMenuDivider as Ke,PopupMenuLabel as Ue,PopupMenuItem as Xe,resolveMenuLevels as Ye,keepsNativeMenu as qe,describeContextTarget as Ge,MenuIcon as Je,openMenuLevel as Qe,closeMenuBelow as Ze,clampMenuTop as et,menuPanelLeft as tt}from"./chunk-ZBIWNVJS.js";export{NATIVE_MENU_ATTR,PopupMenu,PopupMenuDivider,PopupMenuItem,PopupMenuLabel,PopupSubmenu,describeContextTarget,keepsNativeMenu}from"./chunk-ZBIWNVJS.js";import{useDismissPopupsOnOpen as rt,Z_LAYERS as nt,registerModalEscapeInterceptor as ot,onOverlayOpen as at}from"./chunk-QOXIUJTN.js";export{ConfirmProvider,Dialog,OVERLAY_OPEN_EVENT,Z_LAYERS,confirm,confirmDestructive,dismissPopups,prompt,registerModalEscapeInterceptor,useConfirm,useFocusTrap,useScrollLock}from"./chunk-QOXIUJTN.js";import{GLASS_INPUT_BG as lt,glassStyle as it}from"./chunk-57MIENLJ.js";export{GLASS_DIVIDER,GLASS_INPUT_BG,glassStyle}from"./chunk-57MIENLJ.js";import"./chunk-MAIHBBWT.js";import{useShellStrings as st}from"./chunk-TR6PLN7W.js";export{DEFAULT_SHELL_STRINGS,ShellStringsProvider,useShellLocale,useShellStrings}from"./chunk-TR6PLN7W.js";import"./chunk-D65T4H6J.js";import{createContext as ct,lazy as dt,useSyncExternalStore as ut,useState as mt,useEffect as ht,useRef as pt,useCallback as gt,useLayoutEffect as ft,useMemo as yt,useContext as bt,isValidElement as xt,cloneElement as wt,Suspense as vt,useId as kt}from"react";import{Dialog as Nt,DialogBackdrop as Ct,DialogPanel as Mt}from"@headlessui/react";import{jsxs as St,jsx as _t,Fragment as Lt}from"react/jsx-runtime";import{createPortal as Et}from"react-dom";import{useQueryClient as Pt,useQuery as Tt,useInfiniteQuery as $t,QueryClientContext as It,QueryClient as Dt}from"@tanstack/react-query";import"react-router-dom";import{XMarkIcon as At}from"@heroicons/react/20/solid";function jt(...e){return Object.assign({},...e)}function Bt(e){let t=null,r=0;const n=/* @__PURE__ */new Set,o=()=>{n.forEach(e=>e())};return{windowKey:e,set(n,a){if(null===n)return t=null,q(e),void o();t={...n,nav:++r},o(),!1!==a?.raise&&G(e)},get:()=>t,subscribe:e=>(n.add(e),()=>{n.delete(e)})}}function Rt(e){return ut(e.subscribe,e.get,e.get)}var Wt=[{title:"Global",shortcuts:[{keys:fe,description:"Search"},{keys:ye,description:"Toggle sidebar"},{keys:"Ctrl F11",description:"Toggle fullscreen"},{keys:"ESC",description:"Exit fullscreen (when no windows open)"},{keys:"?",description:"Show keyboard shortcuts"}]},{title:"Windows (title bar focused)",shortcuts:[{keys:"←↑→↓",description:"Move window"},{keys:`${be} Arrows`,description:"Resize window"},{keys:`${xe} ←/→`,description:"Snap to left / right half"},{keys:`${xe} ↑`,description:"Maximize"},{keys:`${xe} ↓`,description:"Restore / minimize"},{keys:we,description:"Toggle maximize"}]},{title:"Lists",shortcuts:[{keys:"J / ↓",description:"Next row"},{keys:"K / ↑",description:"Previous row"},{keys:"⏎",description:"Open selected row"},{keys:"⇧J / ⇧K",description:"Move and select"},{keys:"⇧ Click",description:"Range select"},{keys:"Space",description:"Toggle row checkbox"},{keys:ve,description:"Select / deselect all"},{keys:ke,description:"Create new item"},{keys:Ne,description:"Edit selected item"}]},{title:"Modals / Forms",shortcuts:[{keys:Ce,description:"Submit"},{keys:Me,description:"Save"},{keys:Se,description:"Save as new (duplicate)"},{keys:_e,description:"Undo the last change to the form"},{keys:Le,description:"Redo it"},{keys:"ESC",description:"Close modal"}]}];function Ft(){const[e,t]=mt(!1);return ht(()=>{const e=()=>t(e=>!e);return document.addEventListener("toggle-shortcut-help",e),()=>document.removeEventListener("toggle-shortcut-help",e)},[]),ht(()=>{const e=e=>{if("?"===e.key&&!e.metaKey&&!e.ctrlKey&&!e.altKey){const r=e.target?.tagName;if("INPUT"===r||"TEXTAREA"===r||"SELECT"===r)return;if(e.target?.isContentEditable)return;e.preventDefault(),t(e=>!e)}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[]),rt(e),/* @__PURE__ */St(Nt,{open:e,onClose:()=>t(!1),className:"relative",style:{zIndex:nt.overlay},children:[
3
3
  /* @__PURE__ */_t(Ct,{className:"fixed inset-0 bg-black/30 transition-opacity"}),
4
4
  /* @__PURE__ */_t("div",{className:"fixed inset-0 flex items-center justify-center p-6",children:/* @__PURE__ */St(Mt,{className:"w-full max-w-md rounded-lg bg-white shadow-xl",children:[
5
5
  /* @__PURE__ */St("div",{className:"flex items-center justify-between px-5 pt-5 pb-3 border-b border-gray-200",children:[
@@ -11,21 +11,21 @@ import{subscribePomo as e,getPomoSnapshot as t}from"./chunk-MU5H2CDL.js";export{
11
11
  /* @__PURE__ */_t("span",{className:"text-sm text-gray-700",children:e.description}),
12
12
  /* @__PURE__ */_t("kbd",{className:"inline-flex items-center rounded border border-gray-300 bg-gray-50 px-2 py-0.5 text-xs font-medium text-gray-600 font-mono",children:e.keys})]},e.keys+e.description))})]},e.title))}),
13
13
  /* @__PURE__ */_t("div",{className:"px-5 py-3 border-t border-gray-100 text-center",children:/* @__PURE__ */St("span",{className:"text-xs text-gray-400",children:["Press ",
14
- /* @__PURE__ */_t("kbd",{className:"rounded border border-gray-300 bg-gray-50 px-1.5 py-0.5 text-[10px] font-medium text-gray-500",children:"?"})," to toggle"]})})]})})]})}var zt="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 01-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 011.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 00-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 01-1.125-1.125v-9.25m0 0H5.625",Ot="M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25",Ht="M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18",Vt="M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3",Kt="M16.023 9.348h4.992V4.356m-4.993 4.992l3.181-3.183a8.25 8.25 0 00-13.803 3.7M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7",Ut="M13.19 8.688a4.5 4.5 0 011.242 7.244l-4.5 4.5a4.5 4.5 0 01-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 00-6.364-6.364l-4.5 4.5a4.5 4.5 0 001.242 7.244";function Yt({disabled:e}={}){const[t,r]=mt(null);if(ht(()=>{if(e)return;const t=e=>{if(e.defaultPrevented)return;if(e.shiftKey)return;if("touch"===e.pointerType)return;const t=("function"==typeof e.composedPath?e.composedPath()[0]:void 0)??e.target;if(qe(t))return;e.preventDefault();const n=b(t);r({x:e.clientX,y:e.clientY,target:Ge(t,n?.text),selected:n})};return document.addEventListener("contextmenu",t),()=>{document.removeEventListener("contextmenu",t)}},[e]),ht(()=>{if(!t)return;const e=()=>r(null);return window.addEventListener("resize",e),window.addEventListener("blur",e),window.addEventListener("scroll",e,!0),()=>{window.removeEventListener("resize",e),window.removeEventListener("blur",e),window.removeEventListener("scroll",e,!0)}},[t]),!t)return null;const{linkUrl:n}=t.target,{selected:o}=t,a=()=>r(null),l=e=>()=>{e(),a()},i=[];return o&&i.push([
15
- /* @__PURE__ */St(Ye,{onClick:l(()=>{h("Text",o.text,o.html)}),children:[
14
+ /* @__PURE__ */_t("kbd",{className:"rounded border border-gray-300 bg-gray-50 px-1.5 py-0.5 text-[10px] font-medium text-gray-500",children:"?"})," to toggle"]})})]})})]})}var zt="M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 01-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 011.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 00-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 01-1.125-1.125v-9.25m0 0H5.625",Ot="M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25",Ht="M10.5 19.5L3 12m0 0l7.5-7.5M3 12h18",Vt="M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3",Kt="M16.023 9.348h4.992V4.356m-4.993 4.992l3.181-3.183a8.25 8.25 0 00-13.803 3.7M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7",Ut="M13.19 8.688a4.5 4.5 0 011.242 7.244l-4.5 4.5a4.5 4.5 0 01-6.364-6.364l1.757-1.757m13.35-.622l1.757-1.757a4.5 4.5 0 00-6.364-6.364l-4.5 4.5a4.5 4.5 0 001.242 7.244";function Xt({disabled:e}={}){const[t,r]=mt(null);if(ht(()=>{if(e)return;const t=e=>{if(e.defaultPrevented)return;if(e.shiftKey)return;if("touch"===e.pointerType)return;const t=("function"==typeof e.composedPath?e.composedPath()[0]:void 0)??e.target;if(qe(t))return;e.preventDefault();const n=b(t);r({x:e.clientX,y:e.clientY,target:Ge(t,n?.text),selected:n})};return document.addEventListener("contextmenu",t),()=>{document.removeEventListener("contextmenu",t)}},[e]),ht(()=>{if(!t)return;const e=()=>r(null);return window.addEventListener("resize",e),window.addEventListener("blur",e),window.addEventListener("scroll",e,!0),()=>{window.removeEventListener("resize",e),window.removeEventListener("blur",e),window.removeEventListener("scroll",e,!0)}},[t]),!t)return null;const{linkUrl:n}=t.target,{selected:o}=t,a=()=>r(null),l=e=>()=>{e(),a()},i=[];return o&&i.push([
15
+ /* @__PURE__ */St(Xe,{onClick:l(()=>{h("Text",o.text,o.html)}),children:[
16
16
  /* @__PURE__ */_t(Je,{d:zt}),"Copy"]},"copy")]),n&&i.push([
17
- /* @__PURE__ */St(Ye,{onClick:l(()=>{return e=n,void window.open(e,"_blank","noopener,noreferrer");var e}),children:[
17
+ /* @__PURE__ */St(Xe,{onClick:l(()=>{return e=n,void window.open(e,"_blank","noopener,noreferrer");var e}),children:[
18
18
  /* @__PURE__ */_t(Je,{d:Ot}),"Open link in new tab"]},"open-link"),
19
- /* @__PURE__ */St(Ye,{onClick:l(()=>{h("Link address",n)}),children:[
19
+ /* @__PURE__ */St(Xe,{onClick:l(()=>{h("Link address",n)}),children:[
20
20
  /* @__PURE__ */_t(Je,{d:Ut}),"Copy link address"]},"copy-link")]),i.push([
21
- /* @__PURE__ */St(Ye,{onClick:l(()=>window.history.back()),children:[
21
+ /* @__PURE__ */St(Xe,{onClick:l(()=>window.history.back()),children:[
22
22
  /* @__PURE__ */_t(Je,{d:Ht}),"Back"]},"back"),
23
- /* @__PURE__ */St(Ye,{onClick:l(()=>window.history.forward()),children:[
23
+ /* @__PURE__ */St(Xe,{onClick:l(()=>window.history.forward()),children:[
24
24
  /* @__PURE__ */_t(Je,{d:Vt}),"Forward"]},"forward"),
25
- /* @__PURE__ */St(Ye,{onClick:l(()=>window.location.reload()),children:[
25
+ /* @__PURE__ */St(Xe,{onClick:l(()=>window.location.reload()),children:[
26
26
  /* @__PURE__ */_t(Je,{d:Kt}),"Reload"]},"reload"),
27
- /* @__PURE__ */St(Ye,{onClick:l(()=>{h("Page address",window.location.href)}),children:[
28
- /* @__PURE__ */_t(Je,{d:Ut}),"Copy page address"]},"copy-page")]),/* @__PURE__ */_t(Ve,{portal:!0,minWidth:200,style:{left:t.x,top:t.y},onClose:a,className:"shell-context-menu",children:/* @__PURE__ */_t("div",{"data-shell-context-menu":t.target.kind,children:i.map((e,t)=>/* @__PURE__ */St("div",{children:[t>0&&/* @__PURE__ */_t(Ke,{}),e]},t))})})}function Xt(e){const t=Date.now()-new Date(e).getTime(),r=Math.floor(t/6e4);if(r<1)return"just now";if(r<60)return`${r}m ago`;const n=Math.floor(r/60);if(n<24)return`${n}h ago`;const a=Math.floor(n/24);return a<7?`${a}d ago`:o(e)}function qt({useUnreadCount:e,list:t,markRead:r,markAllRead:n,onItemClick:o,onViewAll:a,popDirection:l}){const[i,s]=mt(!1),c=st().notifications,{prefs:d,save:u}=Ee(),m=!0===d.notifications_dnd,h=pt(null),p=pt(null),g=Pt(),f=e();ht(()=>{"Notification"in window&&"default"===Notification.permission&&Notification.requestPermission()},[]);const y=gt(e=>{e.is_read||(g.setQueryData(["notification-unread-count"],e=>e?{...e,count:Math.max(0,(e.count||0)-1)}:e),g.setQueryData(["notifications-dropdown"],t=>t?.results?{...t,results:t.results.map(t=>t.id===e.id?{...t,is_read:!0}:t)}:t),r(e.id).catch(()=>{g.invalidateQueries({queryKey:["notification-unread-count"]}),g.invalidateQueries({queryKey:["notifications-dropdown"]})})),s(!1),o(e)},[g,r,o]),[b,x]=mt(null),w=pt(null),v=gt(()=>{w.current&&(clearTimeout(w.current),w.current=null),x(null)},[]),k=gt((e,t=function(e){const t=(e.title?.length??0)+(e.message?.length??0);return Math.min(12e3,Math.max(5e3,1e3*Math.round(t/15)))}(e))=>{x(e),N(),w.current&&clearTimeout(w.current),w.current=setTimeout(()=>x(null),t)},[]);ht(()=>()=>{w.current&&clearTimeout(w.current)},[]);const C=pt(null);ht(()=>{null!==C.current?(f>C.current&&!m&&t({page_size:1}).then(e=>{const t=e?.results?.[0];if(!t)return;const r=t.title||"New Notification",n=t.message||t.entity_label||"";if(document.hidden){if("Notification"in window&&"granted"===Notification.permission){const e=new Notification(r,{body:n,icon:"/favicon.svg",tag:`notif-${t.id}`});e.onclick=()=>{window.focus(),y(t),e.close()}}}else k(t)}).catch(()=>{}),C.current=f):C.current=f},[f,t,k,m]);const{data:M}=Tt({queryKey:["notifications-dropdown"],queryFn:()=>t({page_size:30}),staleTime:3e4,refetchInterval:3e4}),S=M?.results??[],[_,L]=mt({}),E=gt(()=>{const e=getComputedStyle(document.documentElement).getPropertyValue("--taskbar-position")?.trim()||"bottom",t=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--taskbar-height"))||56,r=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--taskbar-width"))||0,n=`calc(100vh - ${"top"===e||"bottom"===e?t+16:16}px)`;L("right"===l?{left:r+8,bottom:8,maxHeight:n}:"left"===l?{right:r+8,bottom:8,maxHeight:n}:"top"===e?{right:8,top:t+8,maxHeight:n}:{right:8,bottom:t+8,maxHeight:n})},[l]);return ft(()=>{i&&E()},[i,E]),ht(()=>{if(i)return window.addEventListener("resize",E),()=>window.removeEventListener("resize",E)},[i,E]),/* @__PURE__ */St("div",{ref:h,className:"relative",children:[
27
+ /* @__PURE__ */St(Xe,{onClick:l(()=>{h("Page address",window.location.href)}),children:[
28
+ /* @__PURE__ */_t(Je,{d:Ut}),"Copy page address"]},"copy-page")]),/* @__PURE__ */_t(Ve,{portal:!0,minWidth:200,style:{left:t.x,top:t.y},onClose:a,className:"shell-context-menu",children:/* @__PURE__ */_t("div",{"data-shell-context-menu":t.target.kind,children:i.map((e,t)=>/* @__PURE__ */St("div",{children:[t>0&&/* @__PURE__ */_t(Ke,{}),e]},t))})})}function Yt(e){const t=Date.now()-new Date(e).getTime(),r=Math.floor(t/6e4);if(r<1)return"just now";if(r<60)return`${r}m ago`;const n=Math.floor(r/60);if(n<24)return`${n}h ago`;const a=Math.floor(n/24);return a<7?`${a}d ago`:o(e)}function qt({useUnreadCount:e,list:t,markRead:r,markAllRead:n,onItemClick:o,onViewAll:a,popDirection:l}){const[i,s]=mt(!1),c=st().notifications,{prefs:d,save:u}=Ee(),m=!0===d.notifications_dnd,h=pt(null),p=pt(null),g=Pt(),f=e();ht(()=>{"Notification"in window&&"default"===Notification.permission&&Notification.requestPermission()},[]);const y=gt(e=>{e.is_read||(g.setQueryData(["notification-unread-count"],e=>e?{...e,count:Math.max(0,(e.count||0)-1)}:e),g.setQueryData(["notifications-dropdown"],t=>t?.results?{...t,results:t.results.map(t=>t.id===e.id?{...t,is_read:!0}:t)}:t),r(e.id).catch(()=>{g.invalidateQueries({queryKey:["notification-unread-count"]}),g.invalidateQueries({queryKey:["notifications-dropdown"]})})),s(!1),o(e)},[g,r,o]),[b,x]=mt(null),w=pt(null),v=gt(()=>{w.current&&(clearTimeout(w.current),w.current=null),x(null)},[]),k=gt((e,t=function(e){const t=(e.title?.length??0)+(e.message?.length??0);return Math.min(12e3,Math.max(5e3,1e3*Math.round(t/15)))}(e))=>{x(e),N(),w.current&&clearTimeout(w.current),w.current=setTimeout(()=>x(null),t)},[]);ht(()=>()=>{w.current&&clearTimeout(w.current)},[]);const C=pt(null);ht(()=>{null!==C.current?(f>C.current&&!m&&t({page_size:1}).then(e=>{const t=e?.results?.[0];if(!t)return;const r=t.title||"New Notification",n=t.message||t.entity_label||"";if(document.hidden){if("Notification"in window&&"granted"===Notification.permission){const e=new Notification(r,{body:n,icon:"/favicon.svg",tag:`notif-${t.id}`});e.onclick=()=>{window.focus(),y(t),e.close()}}}else k(t)}).catch(()=>{}),C.current=f):C.current=f},[f,t,k,m]);const{data:M}=Tt({queryKey:["notifications-dropdown"],queryFn:()=>t({page_size:30}),staleTime:3e4,refetchInterval:3e4}),S=M?.results??[],[_,L]=mt({}),E=gt(()=>{const e=getComputedStyle(document.documentElement).getPropertyValue("--taskbar-position")?.trim()||"bottom",t=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--taskbar-height"))||56,r=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--taskbar-width"))||0,n=`calc(100vh - ${"top"===e||"bottom"===e?t+16:16}px)`;L("right"===l?{left:r+8,bottom:8,maxHeight:n}:"left"===l?{right:r+8,bottom:8,maxHeight:n}:"top"===e?{right:8,top:t+8,maxHeight:n}:{right:8,bottom:t+8,maxHeight:n})},[l]);return ft(()=>{i&&E()},[i,E]),ht(()=>{if(i)return window.addEventListener("resize",E),()=>window.removeEventListener("resize",E)},[i,E]),/* @__PURE__ */St("div",{ref:h,className:"relative",children:[
29
29
  /* @__PURE__ */St("button",{ref:p,"data-menu-toggle":!0,onMouseEnter:()=>g.prefetchQuery({queryKey:["notifications-dropdown"],queryFn:()=>t({page_size:30})}),onClick:()=>s(e=>!e),title:m?c.dndOn:c.title,className:"relative shrink-0 rounded-md p-2 text-gray-900 hover:text-black hover:bg-white/20 transition-colors",children:[
30
30
  /* @__PURE__ */_t("svg",{className:"h-5 w-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M14.857 17.082a23.848 23.848 0 005.454-1.31A8.967 8.967 0 0118 9.75v-.7V9A6 6 0 006 9v.75a8.967 8.967 0 01-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 01-5.714 0m5.714 0a3 3 0 11-5.714 0"})}),f>0&&/* @__PURE__ */_t("span",{className:"absolute top-0.5 right-0.5 flex h-4 min-w-[16px] items-center justify-center rounded-full bg-red-500 px-1 text-[10px] font-bold text-white",children:f>99?"99+":f}),m&&
31
31
  /* @__PURE__ */_t("span",{"aria-hidden":"true",className:"absolute bottom-0.5 right-0.5 flex h-3 w-3 items-center justify-center rounded-full bg-indigo-500 text-white",children:/* @__PURE__ */_t("svg",{className:"h-2 w-2",fill:"currentColor",viewBox:"0 0 24 24",children:/* @__PURE__ */_t("path",{d:"M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z"})})})]}),i&&Et(
@@ -38,14 +38,14 @@ import{subscribePomo as e,getPomoSnapshot as t}from"./chunk-MU5H2CDL.js";export{
38
38
  /* @__PURE__ */_t("div",{className:"overflow-y-auto overflow-x-hidden",style:{flex:"1 1 auto",minHeight:0},children:0===S.length?/* @__PURE__ */St("div",{className:"flex flex-col items-center justify-center py-8 px-4 text-center",children:[
39
39
  /* @__PURE__ */_t("svg",{className:"h-8 w-8 text-gray-300 mb-2",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M14.857 17.082a23.848 23.848 0 005.454-1.31A8.967 8.967 0 0118 9.75v-.7V9A6 6 0 006 9v.75a8.967 8.967 0 01-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 01-5.714 0m5.714 0a3 3 0 11-5.714 0"})}),
40
40
  /* @__PURE__ */_t("p",{className:"text-sm text-gray-600 font-medium",children:c.caughtUp}),
41
- /* @__PURE__ */_t("p",{className:"text-xs text-gray-400 mt-0.5",children:c.empty})]}):S.map(e=>/* @__PURE__ */St(Ye,{onClick:()=>y(e),children:[
41
+ /* @__PURE__ */_t("p",{className:"text-xs text-gray-400 mt-0.5",children:c.empty})]}):S.map(e=>/* @__PURE__ */St(Xe,{onClick:()=>y(e),children:[
42
42
  /* @__PURE__ */_t("div",{className:"pt-0.5 shrink-0",children:e.is_read?/* @__PURE__ */_t("div",{className:"h-2 w-2"}):/* @__PURE__ */_t("div",{className:"h-2 w-2 rounded-full bg-blue-500"})}),
43
43
  /* @__PURE__ */St("div",{className:"min-w-0 flex-1",children:[
44
44
  /* @__PURE__ */_t("p",{className:"text-sm leading-tight break-words "+(e.is_read?"":"font-medium"),children:e.title}),e.message&&/* @__PURE__ */_t("p",{className:"text-xs text-gray-500 mt-0.5 truncate",children:e.message}),
45
45
  /* @__PURE__ */St("div",{className:"flex items-center gap-2 mt-1",children:[
46
- /* @__PURE__ */_t("span",{className:"text-[10px] text-gray-400",children:Xt(e.created_at)}),e.actor_name&&/* @__PURE__ */St("span",{className:"text-[10px] text-gray-400",children:["by ",e.actor_name]})]})]})]},e.id))}),a&&/* @__PURE__ */St(Lt,{children:[
46
+ /* @__PURE__ */_t("span",{className:"text-[10px] text-gray-400",children:Yt(e.created_at)}),e.actor_name&&/* @__PURE__ */St("span",{className:"text-[10px] text-gray-400",children:["by ",e.actor_name]})]})]})]},e.id))}),a&&/* @__PURE__ */St(Lt,{children:[
47
47
  /* @__PURE__ */_t(Ke,{}),
48
- /* @__PURE__ */_t(Ye,{onClick:()=>{s(!1),a()},children:/* @__PURE__ */_t("span",{className:"w-full text-center text-xs text-blue-600 font-medium",children:c.viewAll})})]})]}),document.body),b&&Et(
48
+ /* @__PURE__ */_t(Xe,{onClick:()=>{s(!1),a()},children:/* @__PURE__ */_t("span",{className:"w-full text-center text-xs text-blue-600 font-medium",children:c.viewAll})})]})]}),document.body),b&&Et(
49
49
  /* @__PURE__ */St(Lt,{children:[
50
50
  /* @__PURE__ */_t("style",{children:"@keyframes notif-in { from { opacity: 0; transform: translateX(30px) scale(0.95); } to { opacity: 1; transform: translateX(0) scale(1); } }"}),
51
51
  /* @__PURE__ */St("div",{onClick:()=>{y(b),v()},className:"fixed top-4 right-4 z-[9999] w-[320px] max-w-[calc(100vw-2rem)] cursor-pointer rounded-2xl bg-white/85 backdrop-blur-md border border-white/40 shadow-2xl flex items-start gap-3 px-4 py-3",style:{animation:"notif-in 300ms cubic-bezier(0.4,0,0.2,1)"},children:[
@@ -115,7 +115,7 @@ return St("div",{className:"flex items-baseline justify-between gap-2",children:
115
115
  /* @__PURE__ */_t("dt",{className:"text-white/40",children:e}),
116
116
  /* @__PURE__ */_t("dd",{className:"tabular-nums text-white/70",children:t})]})}var Ir=[],Dr="documents",Ar="Recent Documents",jr=90;var Br=ct({});function Rr({value:e,children:t}){/* @__PURE__ */
117
117
  return _t(Br.Provider,{value:e,children:t})}function Wr(){return bt(Br)}function Fr(){const e="undefined"!=typeof document?getComputedStyle(document.documentElement):null,t=(e?.getPropertyValue("--taskbar-position")||"bottom").trim();return{position:t,vertical:"left"===t||"right"===t,height:parseInt(e?.getPropertyValue("--taskbar-height")||"0")||0,width:parseInt(e?.getPropertyValue("--taskbar-width")||"0")||0}}function zr({profile:e}){const t=st();Pt();const{openEntity:l,openPage:i}=J(),s=pt(null),{prefs:c,save:d}=Ee(),u={...e?.preferences||{},...c},m=u.favorite_documents||[],h=u.desktop_folders||[],p=h.some(e=>e.id===Dr)?h.map(e=>e.id===Dr?{...e,name:Ar}:e):[...h,{id:Dr,name:Ar}],g=u.desktop_snap??!1,f=u.notepad_notes||[],y=f.filter(e=>e.sticky),b=Wr(),x=b.hiddenContextMenuItems??[],w=async(e,t)=>{const r=`${e}#${t}`;if(b.stickyResolver)try{const n=await b.stickyResolver(e,t);n?l(n.entityType,n.entityId,n.snapshot,n.label??r):U.error(`${r} not found`)}catch{U.error(`Failed to open ${r}`)}else U.error(`Unknown reference: ${r}`)},v=(e,t)=>{const r=f.find(t=>t.id===e);if(!r)return;const n=r.content,o=n.slice(t).match(/^\[([ xX]?)\]/);if(!o)return;const a="x"===o[1]||"X"===o[1]?"[ ]":"[x]",l=n.slice(0,t)+a+n.slice(t+o[0].length);Ce(f.map(t=>t.id===e?{...t,content:l,updated_at:/* @__PURE__ */(new Date).toISOString()}:t))},k=(e,t)=>{if(!t)return[];const r=t.split("\n");let n=0;return r.map((t,r)=>{const o=n;n+=t.length+1;const a=[],l=/([A-Z]{2,4})#(\d{4,6})/g;let i;for(;null!==(i=l.exec(t));)if(b.stickyResolver){const e=i[1],t=i[2],n=i.index,o=i[0];a.push({idx:n,len:o.length,render:()=>/* @__PURE__ */_t("button",{onClick:r=>{r.stopPropagation(),w(e,t)},className:"text-blue-700 hover:underline font-medium cursor-pointer",children:o},`r-${r}-${n}`)})}const s=/\[([ xX]?)\]/g;for(;null!==(i=s.exec(t));){const t="x"===i[1]||"X"===i[1],n=i.index,l=o+n;a.push({idx:n,len:i[0].length,render:()=>/* @__PURE__ */_t("button",{onClick:t=>{t.stopPropagation(),v(e,l)},className:`inline-flex items-center justify-center w-3.5 h-3.5 rounded border ${t?"bg-blue-500 border-blue-500 text-white":"border-gray-500 bg-white/50 hover:border-blue-400"} cursor-pointer align-text-bottom mr-0.5`,children:t&&/* @__PURE__ */_t("svg",{className:"w-2.5 h-2.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:3,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4.5 12.75l6 6 9-13.5"})})},`c-${r}-${n}`)})}a.sort((e,t)=>e.idx-t.idx);const c=[];let d=0;for(const e of a)e.idx>d&&c.push(/* @__PURE__ */_t("span",{children:t.slice(d,e.idx)},`t-${r}-${d}`)),c.push(e.render()),d=e.idx+e.len;d<t.length&&c.push(/* @__PURE__ */_t("span",{children:t.slice(d)},`t-${r}-${d}`)),0===c.length&&c.push(/* @__PURE__ */_t("span",{children:"​"},`e-${r}`));const u=/^\[x\]/i.test(t.trimStart());/* @__PURE__ */
118
- return _t("div",{className:u?"line-through opacity-50":"",children:c},r)})},[N,C]=mt(null),[M,S]=mt(null),[_,L]=mt(/* @__PURE__ */new Set),[E,P]=mt(null),[T,$]=mt(!1),[I,D]=mt(!1),[A,j]=mt(!1),[B,R]=mt(null),[W,K]=mt(""),[X,q]=mt(null),[G,Q]=mt(null),[Z,te]=mt(null),[re,ne]=mt(null),oe=pt(null),ae=gt(e=>{b.saveShortcuts?b.saveShortcuts(e):d({favorite_documents:e})},[b,d]),le=gt(e=>{b.saveFolders?b.saveFolders(e):d({desktop_folders:e})},[b,d]);gt(e=>{b.saveSnap?b.saveSnap(e):d({desktop_snap:e})},[b,d]);const ie=pt({folders:p,favDocs:m,saveFolders:le,saveDocs:ae});ie.current={folders:p,favDocs:m,saveFolders:le,saveDocs:ae},ht(()=>{const e=e=>{const t=e.detail;if(!t?.filePath)return;const{favDocs:r,saveDocs:n}=ie.current,o=r.filter(e=>!("preview-file"===e.entityType&&e.filePath===t.filePath));n([{entityType:"preview-file",entityId:t.filePath,label:t.filename,filePath:t.filePath,fileKind:t.kind,folderId:Dr},...o])};return window.addEventListener(r,e),()=>window.removeEventListener(r,e)},[]);const se=e=>({right:20+Math.floor(e/8)*jr,top:20+e%8*jr}),ce=(e,t)=>null!=e.x&&null!=e.y?{right:e.x,top:e.y}:se(t),de=(e,t)=>null!=e.x&&null!=e.y?{right:e.x,top:e.y}:se(m.filter(e=>!e.folderId).length+t),ue=m.filter(e=>!e.folderId),me=e=>{"preview-file"===e.entityType&&e.filePath&&e.fileKind?n({filePath:e.filePath,filename:e.label,kind:e.fileKind,onStaged:e=>i(e)}):"page"===e.entityType?i(e.entityId):l(e.entityType,e.entityId,null,e.label)},he=e=>{H(e),i("/files")},pe=gt(e=>{const{favDocs:t,saveDocs:r}=ie.current,n=new Set(e.map(e=>`${e.entityType}|${e.entityId}`));r(t.map(e=>e.folderId&&n.has(`${e.entityType}|${e.entityId}`)?{...e,folderId:void 0,folderX:void 0,folderY:void 0}:e))},[]),ge=gt(e=>{const{favDocs:t,saveDocs:r}=ie.current,n=new Set(e.map(e=>`${e.entityType}|${e.entityId}`));r(t.filter(e=>!(e.folderId&&n.has(`${e.entityType}|${e.entityId}`))))},[]),[fe,ye]=mt({}),be=pt([]),xe=(e,t,r)=>{if(0!==r.button)return;const n="trash"===e?"trash":`${e}-${t}`,o=_.has(n)&&_.size>1?Array.from(_):[n],a=[];for(const e of o)if(e.startsWith("item-")){const t=parseInt(e.slice(5),10),r=ue[t];if(!r)continue;const n=ce(r,t),o=document.querySelector(`[data-desktop-icon="${e}"]`);a.push({key:e,type:"item",idx:t,origX:n.right,origY:n.top,el:o})}else if(e.startsWith("folder-")){const t=parseInt(e.slice(7),10),r=p[t];if(!r)continue;const n=de(r,t),o=document.querySelector(`[data-desktop-icon="${e}"]`);a.push({key:e,type:"folder",idx:t,origX:n.right,origY:n.top,el:o})}else if("trash"===e){const t=document.querySelector('[data-desktop-icon="trash"]');if(!t)continue;const r=parseFloat(t.style.right||"0")||0,n=parseFloat(t.style.bottom||"0")||0;a.push({key:e,type:"trash",idx:0,origX:r,origY:n,el:t})}be.current=a;const l=a.find(e=>e.key===n)??a[0];l&&(C({type:e,idx:t,startX:r.clientX,startY:r.clientY,origX:l.origX,origY:l.origY}),r.preventDefault())};ht(()=>{if(!N)return;const e=be.current,t=1===e.length&&"item"===e[0].type,r=()=>{if(!t)return null;const r=ue[e[0].idx];return"page"===r?.entityType?r.entityId:null},n=()=>document.querySelector("[data-taskbar-dropzone]"),o=(e,t)=>{const r=n();if(!r)return!1;const o=r.getBoundingClientRect();return e>=o.left&&e<=o.right&&t>=o.top&&t<=o.bottom},a=e=>{const t=n();t&&(t.style.outline=e?"2px solid var(--accent-600, #7c3aed)":"",t.style.outlineOffset=e?"-2px":"")},l=n=>{const l=n.clientX-N.startX,i=n.clientY-N.startY;for(const t of e)t.el&&(t.el.style.right=t.origX-l+"px","trash"===t.type?t.el.style.bottom=t.origY-i+"px":(t.el.style.top=`${t.origY+i}px`,t.el.style.left="auto"),t.el.style.zIndex="100",t.el.style.opacity="0.7");if(t){const e=document.elementsFromPoint(n.clientX,n.clientY);let t=null;for(const r of e){const e=r.closest?.('[data-desktop-icon^="folder-"]');if(e){const r=e.getAttribute("data-desktop-icon");r&&(t=parseInt(r.slice(7),10));break}}oe.current=t,ne(e=>e===t?e:t),a(null!=r()&&o(n.clientX,n.clientY))}},i=t=>{const n=t.clientX-N.startX,l=t.clientY-N.startY;for(const t of e)t.el&&(t.el.style.zIndex="",t.el.style.opacity="");const i=r();if(i&&o(t.clientX,t.clientY)){a(!1);for(const t of e)t.el&&(t.el.style.left="auto",t.el.style.right=`${t.origX}px`,t.el.style.top=`${t.origY}px`);const t=Array.isArray(c.favorite_pages)?c.favorite_pages:[];return t.includes(i)||d({favorite_pages:[...t,i]}),oe.current=null,ne(null),C(null),void(be.current=[])}a(!1);const s=oe.current,u=null!=s?p[s]:null;oe.current=null,ne(null);const h=e.filter(e=>"trash"!==e.type).map(e=>{let t=e.origX-n,r=Math.max(0,e.origY+l);if(g){const e=(o=t,a=r,{x:Math.round(o/jr)*jr,y:Math.round(a/jr)*jr});t=e.x,r=e.y}var o,a;return t=Math.max(0,t),{entry:e,finalRight:t,finalTop:r}}),f=e.find(e=>"trash"===e.type);f&&d({desktop_trash_position:{right:Math.max(0,f.origX-n),bottom:Math.max(0,f.origY-l)}});const y=h.filter(e=>"item"===e.entry.type);if(y.length>0){const t=[...m],r={},n=1===y.length&&1===e.length?y[0]:null,o=n?u??p.find((e,t)=>{const r=de(e,t);return Math.abs(n.finalRight-r.right)<40&&Math.abs(n.finalTop-r.top)<40}):void 0;if(o&&n?.entry.el){const e=n.entry.el,t=p.indexOf(o),r=document.querySelector(`[data-desktop-icon="folder-${t}"]`);if(r){const t=e.getBoundingClientRect(),n=r.getBoundingClientRect(),o=n.left+n.width/2-(t.left+t.width/2),a=n.top+n.height/2-(t.top+t.height/2);e.style.transition="transform 220ms ease-out, opacity 220ms ease-out",e.style.transform=`translate(${o}px, ${a}px) scale(0.2)`,e.style.opacity="0"}r?.animate([{transform:"scale(1)"},{transform:"scale(1.15)"},{transform:"scale(1)"}],{duration:280,easing:"ease-out"})}for(const e of y){const n=m.indexOf(ue[e.entry.idx]);-1!==n&&(o?t[n]={...t[n],folderId:o.id,x:void 0,y:void 0,folderX:void 0,folderY:void 0}:(t[n]={...t[n],x:e.finalRight,y:e.finalTop,folderId:void 0},r[`item-${n}`]={right:e.finalRight,top:e.finalTop}))}const a=()=>{ae(t),Object.keys(r).length>0&&ye(e=>({...e,...r}))};o?setTimeout(a,220):a()}const b=h.filter(e=>"folder"===e.entry.type);if(b.length>0){const e=[...p],t={};for(const r of b)e[r.entry.idx]={...e[r.entry.idx],x:r.finalRight,y:r.finalTop},t[`folder-${r.entry.idx}`]={right:r.finalRight,top:r.finalTop};le(e),ye(e=>({...e,...t}))}C(null),be.current=[]};return window.addEventListener("pointermove",l),window.addEventListener("pointerup",i),()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",i)}},[N,g,m,p,ue,c]);const we=JSON.stringify(m.map(e=>`${e.entityId}:${e.x??""}:${e.y??""}:${e.folderId??""}`)),ve=JSON.stringify(p.map(e=>`${e.id}:${e.x??""}:${e.y??""}`));ht(()=>{ye({})},[we,ve]),ht(()=>{const{folders:e,favDocs:t}=ie.current,r={};for(const t of e)r[t.id]=[];for(const e of t)e.folderId&&r[e.folderId]&&r[e.folderId].push(e);F({folders:e.map(e=>({id:e.id,name:e.name,itemCount:r[e.id]?.length??0})),itemsByFolder:r,moveToDesktop:pe,removeShortcuts:ge})},[we,ve,pe,ge]),ht(()=>()=>F(null),[]);const ke=pt(!1);ht(()=>{if(!E)return;const e=e=>{const t=s.current?.getBoundingClientRect();if(!t)return;const r=e.clientX-t.left,n=e.clientY-t.top,o=r-E.startX,a=n-E.startY;if(o*o+a*a>16&&(ke.current=!0),P(e=>e?{...e,endX:r,endY:n}:null),ke.current){const e=Math.min(E.startX,r),t=Math.max(E.startX,r),o=Math.min(E.startY,n),a=Math.max(E.startY,n);L(((e,t,r,n)=>{const o=/* @__PURE__ */new Set,a=s.current?.clientWidth||800;ue.forEach((l,i)=>{const s=ce(l,i),c=a-s.right-80;c+40>e&&c<t&&s.top+40>r&&s.top<n&&o.add(`item-${i}`)}),p.forEach((l,i)=>{const s=de(l,i),c=a-s.right-80;c+40>e&&c<t&&s.top+40>r&&s.top<n&&o.add(`folder-${i}`)});const l=s.current?.querySelector('[data-desktop-icon="trash"]'),i=s.current?.getBoundingClientRect();if(l&&i){const a=l.getBoundingClientRect(),s=a.left-i.left,c=a.top-i.top;s+a.width>e&&s<t&&c+a.height>r&&c<n&&o.add("trash")}return o})(e,t,o,a))}},t=()=>{P(null)};return window.addEventListener("pointermove",e),window.addEventListener("pointerup",t),()=>{window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",t)}},[E]);ht(()=>{if(!M)return;const e=()=>S(null);return window.addEventListener("click",e),()=>window.removeEventListener("click",e)},[M]);const Ne=(e,t)=>{le(p.map(r=>r.id===e?{...r,name:t}:r)),R(null)},Ce=gt(e=>{b.saveNotes?b.saveNotes(e):d({notepad_notes:e})},[b,d]),Me=(e,t)=>{Ce(f.map(r=>r.id===e?{...r,content:t,updated_at:/* @__PURE__ */(new Date).toISOString()}:r))};ht(()=>{if(!G)return;const e=e=>{const t=document.querySelector(`[data-sticky-id="${G.id}"]`);t&&(t.style.left=G.origX+e.clientX-G.startX+"px",t.style.right="auto",t.style.top=G.origY+e.clientY-G.startY+"px")},t=e=>{const t=G.origX+e.clientX-G.startX,r=Math.max(0,G.origY+e.clientY-G.startY),n=document.querySelector(`[data-sticky-id="${G.id}"]`),o=n?.offsetWidth??192,a=t+o/2>window.innerWidth/2?"right":"left",l="right"===a?window.innerWidth-t-o:t;Ce(f.map(e=>e.id===G.id?{...e,sticky_x:l,sticky_y:r,sticky_anchor:a}:e)),n&&(n.style.left="",n.style.right=""),Q(null)};return window.addEventListener("pointermove",e),window.addEventListener("pointerup",t),()=>{window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",t)}},[G,f]),ht(()=>{if(!Z)return;const e=e=>{const t=document.querySelector(`[data-sticky-id="${Z.id}"]`);t&&(t.style.width=`${Math.max(140,Z.origW+e.clientX-Z.startX)}px`,t.style.height=`${Math.max(100,Z.origH+e.clientY-Z.startY)}px`)},t=e=>{const t=Math.max(140,Z.origW+e.clientX-Z.startX),r=Math.max(100,Z.origH+e.clientY-Z.startY);Ce(f.map(e=>e.id===Z.id?{...e,sticky_w:t,sticky_h:r}:e)),te(null)};return window.addEventListener("pointermove",e),window.addEventListener("pointerup",t),()=>{window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",t)}},[Z,f]);const Se={yellow:"bg-yellow-100 border-yellow-300",blue:"bg-blue-100 border-blue-300",green:"bg-green-100 border-green-300",pink:"bg-pink-100 border-pink-300",purple:"bg-purple-100 border-purple-300",orange:"bg-orange-100 border-orange-300"},_e=(e,t,r,n,o)=>/* @__PURE__ */St("div",{className:"flex flex-col items-center gap-1 w-20 p-2",children:[
118
+ return _t("div",{className:u?"line-through opacity-50":"",children:c},r)})},[N,C]=mt(null),[M,S]=mt(null),[_,L]=mt(/* @__PURE__ */new Set),[E,P]=mt(null),[T,$]=mt(!1),[I,D]=mt(!1),[A,j]=mt(!1),[B,R]=mt(null),[W,K]=mt(""),[Y,q]=mt(null),[G,Q]=mt(null),[Z,te]=mt(null),[re,ne]=mt(null),oe=pt(null),ae=gt(e=>{b.saveShortcuts?b.saveShortcuts(e):d({favorite_documents:e})},[b,d]),le=gt(e=>{b.saveFolders?b.saveFolders(e):d({desktop_folders:e})},[b,d]);gt(e=>{b.saveSnap?b.saveSnap(e):d({desktop_snap:e})},[b,d]);const ie=pt({folders:p,favDocs:m,saveFolders:le,saveDocs:ae});ie.current={folders:p,favDocs:m,saveFolders:le,saveDocs:ae},ht(()=>{const e=e=>{const t=e.detail;if(!t?.filePath)return;const{favDocs:r,saveDocs:n}=ie.current,o=r.filter(e=>!("preview-file"===e.entityType&&e.filePath===t.filePath));n([{entityType:"preview-file",entityId:t.filePath,label:t.filename,filePath:t.filePath,fileKind:t.kind,folderId:Dr},...o])};return window.addEventListener(r,e),()=>window.removeEventListener(r,e)},[]);const se=e=>({right:20+Math.floor(e/8)*jr,top:20+e%8*jr}),ce=(e,t)=>null!=e.x&&null!=e.y?{right:e.x,top:e.y}:se(t),de=(e,t)=>null!=e.x&&null!=e.y?{right:e.x,top:e.y}:se(m.filter(e=>!e.folderId).length+t),ue=m.filter(e=>!e.folderId),me=e=>{"preview-file"===e.entityType&&e.filePath&&e.fileKind?n({filePath:e.filePath,filename:e.label,kind:e.fileKind,onStaged:e=>i(e)}):"page"===e.entityType?i(e.entityId):l(e.entityType,e.entityId,null,e.label)},he=e=>{H(e),i("/files")},pe=gt(e=>{const{favDocs:t,saveDocs:r}=ie.current,n=new Set(e.map(e=>`${e.entityType}|${e.entityId}`));r(t.map(e=>e.folderId&&n.has(`${e.entityType}|${e.entityId}`)?{...e,folderId:void 0,folderX:void 0,folderY:void 0}:e))},[]),ge=gt(e=>{const{favDocs:t,saveDocs:r}=ie.current,n=new Set(e.map(e=>`${e.entityType}|${e.entityId}`));r(t.filter(e=>!(e.folderId&&n.has(`${e.entityType}|${e.entityId}`))))},[]),[fe,ye]=mt({}),be=pt([]),xe=(e,t,r)=>{if(0!==r.button)return;const n="trash"===e?"trash":`${e}-${t}`,o=_.has(n)&&_.size>1?Array.from(_):[n],a=[];for(const e of o)if(e.startsWith("item-")){const t=parseInt(e.slice(5),10),r=ue[t];if(!r)continue;const n=ce(r,t),o=document.querySelector(`[data-desktop-icon="${e}"]`);a.push({key:e,type:"item",idx:t,origX:n.right,origY:n.top,el:o})}else if(e.startsWith("folder-")){const t=parseInt(e.slice(7),10),r=p[t];if(!r)continue;const n=de(r,t),o=document.querySelector(`[data-desktop-icon="${e}"]`);a.push({key:e,type:"folder",idx:t,origX:n.right,origY:n.top,el:o})}else if("trash"===e){const t=document.querySelector('[data-desktop-icon="trash"]');if(!t)continue;const r=parseFloat(t.style.right||"0")||0,n=parseFloat(t.style.bottom||"0")||0;a.push({key:e,type:"trash",idx:0,origX:r,origY:n,el:t})}be.current=a;const l=a.find(e=>e.key===n)??a[0];l&&(C({type:e,idx:t,startX:r.clientX,startY:r.clientY,origX:l.origX,origY:l.origY}),r.preventDefault())};ht(()=>{if(!N)return;const e=be.current,t=1===e.length&&"item"===e[0].type,r=()=>{if(!t)return null;const r=ue[e[0].idx];return"page"===r?.entityType?r.entityId:null},n=()=>document.querySelector("[data-taskbar-dropzone]"),o=(e,t)=>{const r=n();if(!r)return!1;const o=r.getBoundingClientRect();return e>=o.left&&e<=o.right&&t>=o.top&&t<=o.bottom},a=e=>{const t=n();t&&(t.style.outline=e?"2px solid var(--accent-600, #7c3aed)":"",t.style.outlineOffset=e?"-2px":"")},l=n=>{const l=n.clientX-N.startX,i=n.clientY-N.startY;for(const t of e)t.el&&(t.el.style.right=t.origX-l+"px","trash"===t.type?t.el.style.bottom=t.origY-i+"px":(t.el.style.top=`${t.origY+i}px`,t.el.style.left="auto"),t.el.style.zIndex="100",t.el.style.opacity="0.7");if(t){const e=document.elementsFromPoint(n.clientX,n.clientY);let t=null;for(const r of e){const e=r.closest?.('[data-desktop-icon^="folder-"]');if(e){const r=e.getAttribute("data-desktop-icon");r&&(t=parseInt(r.slice(7),10));break}}oe.current=t,ne(e=>e===t?e:t),a(null!=r()&&o(n.clientX,n.clientY))}},i=t=>{const n=t.clientX-N.startX,l=t.clientY-N.startY;for(const t of e)t.el&&(t.el.style.zIndex="",t.el.style.opacity="");const i=r();if(i&&o(t.clientX,t.clientY)){a(!1);for(const t of e)t.el&&(t.el.style.left="auto",t.el.style.right=`${t.origX}px`,t.el.style.top=`${t.origY}px`);const t=Array.isArray(c.favorite_pages)?c.favorite_pages:[];return t.includes(i)||d({favorite_pages:[...t,i]}),oe.current=null,ne(null),C(null),void(be.current=[])}a(!1);const s=oe.current,u=null!=s?p[s]:null;oe.current=null,ne(null);const h=e.filter(e=>"trash"!==e.type).map(e=>{let t=e.origX-n,r=Math.max(0,e.origY+l);if(g){const e=(o=t,a=r,{x:Math.round(o/jr)*jr,y:Math.round(a/jr)*jr});t=e.x,r=e.y}var o,a;return t=Math.max(0,t),{entry:e,finalRight:t,finalTop:r}}),f=e.find(e=>"trash"===e.type);f&&d({desktop_trash_position:{right:Math.max(0,f.origX-n),bottom:Math.max(0,f.origY-l)}});const y=h.filter(e=>"item"===e.entry.type);if(y.length>0){const t=[...m],r={},n=1===y.length&&1===e.length?y[0]:null,o=n?u??p.find((e,t)=>{const r=de(e,t);return Math.abs(n.finalRight-r.right)<40&&Math.abs(n.finalTop-r.top)<40}):void 0;if(o&&n?.entry.el){const e=n.entry.el,t=p.indexOf(o),r=document.querySelector(`[data-desktop-icon="folder-${t}"]`);if(r){const t=e.getBoundingClientRect(),n=r.getBoundingClientRect(),o=n.left+n.width/2-(t.left+t.width/2),a=n.top+n.height/2-(t.top+t.height/2);e.style.transition="transform 220ms ease-out, opacity 220ms ease-out",e.style.transform=`translate(${o}px, ${a}px) scale(0.2)`,e.style.opacity="0"}r?.animate([{transform:"scale(1)"},{transform:"scale(1.15)"},{transform:"scale(1)"}],{duration:280,easing:"ease-out"})}for(const e of y){const n=m.indexOf(ue[e.entry.idx]);-1!==n&&(o?t[n]={...t[n],folderId:o.id,x:void 0,y:void 0,folderX:void 0,folderY:void 0}:(t[n]={...t[n],x:e.finalRight,y:e.finalTop,folderId:void 0},r[`item-${n}`]={right:e.finalRight,top:e.finalTop}))}const a=()=>{ae(t),Object.keys(r).length>0&&ye(e=>({...e,...r}))};o?setTimeout(a,220):a()}const b=h.filter(e=>"folder"===e.entry.type);if(b.length>0){const e=[...p],t={};for(const r of b)e[r.entry.idx]={...e[r.entry.idx],x:r.finalRight,y:r.finalTop},t[`folder-${r.entry.idx}`]={right:r.finalRight,top:r.finalTop};le(e),ye(e=>({...e,...t}))}C(null),be.current=[]};return window.addEventListener("pointermove",l),window.addEventListener("pointerup",i),()=>{window.removeEventListener("pointermove",l),window.removeEventListener("pointerup",i)}},[N,g,m,p,ue,c]);const we=JSON.stringify(m.map(e=>`${e.entityId}:${e.x??""}:${e.y??""}:${e.folderId??""}`)),ve=JSON.stringify(p.map(e=>`${e.id}:${e.x??""}:${e.y??""}`));ht(()=>{ye({})},[we,ve]),ht(()=>{const{folders:e,favDocs:t}=ie.current,r={};for(const t of e)r[t.id]=[];for(const e of t)e.folderId&&r[e.folderId]&&r[e.folderId].push(e);F({folders:e.map(e=>({id:e.id,name:e.name,itemCount:r[e.id]?.length??0})),itemsByFolder:r,moveToDesktop:pe,removeShortcuts:ge})},[we,ve,pe,ge]),ht(()=>()=>F(null),[]);const ke=pt(!1);ht(()=>{if(!E)return;const e=e=>{const t=s.current?.getBoundingClientRect();if(!t)return;const r=e.clientX-t.left,n=e.clientY-t.top,o=r-E.startX,a=n-E.startY;if(o*o+a*a>16&&(ke.current=!0),P(e=>e?{...e,endX:r,endY:n}:null),ke.current){const e=Math.min(E.startX,r),t=Math.max(E.startX,r),o=Math.min(E.startY,n),a=Math.max(E.startY,n);L(((e,t,r,n)=>{const o=/* @__PURE__ */new Set,a=s.current?.clientWidth||800;ue.forEach((l,i)=>{const s=ce(l,i),c=a-s.right-80;c+40>e&&c<t&&s.top+40>r&&s.top<n&&o.add(`item-${i}`)}),p.forEach((l,i)=>{const s=de(l,i),c=a-s.right-80;c+40>e&&c<t&&s.top+40>r&&s.top<n&&o.add(`folder-${i}`)});const l=s.current?.querySelector('[data-desktop-icon="trash"]'),i=s.current?.getBoundingClientRect();if(l&&i){const a=l.getBoundingClientRect(),s=a.left-i.left,c=a.top-i.top;s+a.width>e&&s<t&&c+a.height>r&&c<n&&o.add("trash")}return o})(e,t,o,a))}},t=()=>{P(null)};return window.addEventListener("pointermove",e),window.addEventListener("pointerup",t),()=>{window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",t)}},[E]);ht(()=>{if(!M)return;const e=()=>S(null);return window.addEventListener("click",e),()=>window.removeEventListener("click",e)},[M]);const Ne=(e,t)=>{le(p.map(r=>r.id===e?{...r,name:t}:r)),R(null)},Ce=gt(e=>{b.saveNotes?b.saveNotes(e):d({notepad_notes:e})},[b,d]),Me=(e,t)=>{Ce(f.map(r=>r.id===e?{...r,content:t,updated_at:/* @__PURE__ */(new Date).toISOString()}:r))};ht(()=>{if(!G)return;const e=e=>{const t=document.querySelector(`[data-sticky-id="${G.id}"]`);t&&(t.style.left=G.origX+e.clientX-G.startX+"px",t.style.right="auto",t.style.top=G.origY+e.clientY-G.startY+"px")},t=e=>{const t=G.origX+e.clientX-G.startX,r=Math.max(0,G.origY+e.clientY-G.startY),n=document.querySelector(`[data-sticky-id="${G.id}"]`),o=n?.offsetWidth??192,a=t+o/2>window.innerWidth/2?"right":"left",l="right"===a?window.innerWidth-t-o:t;Ce(f.map(e=>e.id===G.id?{...e,sticky_x:l,sticky_y:r,sticky_anchor:a}:e)),n&&(n.style.left="",n.style.right=""),Q(null)};return window.addEventListener("pointermove",e),window.addEventListener("pointerup",t),()=>{window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",t)}},[G,f]),ht(()=>{if(!Z)return;const e=e=>{const t=document.querySelector(`[data-sticky-id="${Z.id}"]`);t&&(t.style.width=`${Math.max(140,Z.origW+e.clientX-Z.startX)}px`,t.style.height=`${Math.max(100,Z.origH+e.clientY-Z.startY)}px`)},t=e=>{const t=Math.max(140,Z.origW+e.clientX-Z.startX),r=Math.max(100,Z.origH+e.clientY-Z.startY);Ce(f.map(e=>e.id===Z.id?{...e,sticky_w:t,sticky_h:r}:e)),te(null)};return window.addEventListener("pointermove",e),window.addEventListener("pointerup",t),()=>{window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",t)}},[Z,f]);const Se={yellow:"bg-yellow-100 border-yellow-300",blue:"bg-blue-100 border-blue-300",green:"bg-green-100 border-green-300",pink:"bg-pink-100 border-pink-300",purple:"bg-purple-100 border-purple-300",orange:"bg-orange-100 border-orange-300"},_e=(e,t,r,n,o)=>/* @__PURE__ */St("div",{className:"flex flex-col items-center gap-1 w-20 p-2",children:[
119
119
  /* @__PURE__ */_t(V,{entityType:e,isSelected:r,entityId:n,label:t,fileKind:o}),
120
120
  /* @__PURE__ */_t("span",{className:"text-[10px] font-medium text-center leading-tight w-full drop-shadow-[0_1px_2px_rgba(0,0,0,0.8)] "+(r?"text-blue-200 bg-blue-600/60 rounded px-1":"text-white"),children:t})]}),Le=(e,t)=>({...e+180>window.innerWidth?{right:window.innerWidth-e}:{left:e},...t+250>window.innerHeight?{bottom:window.innerHeight-t}:{top:t}});/* @__PURE__ */
121
121
  return St("div",{ref:s,className:"flex-1 relative overflow-hidden",onPointerDown:e=>{if(0!==e.button||e.target!==s.current)return;const t=s.current.getBoundingClientRect(),r=e.clientX-t.left,n=e.clientY-t.top;P({startX:r,startY:n,endX:r,endY:n}),ke.current=!1,L(/* @__PURE__ */new Set)},onContextMenu:e=>{e.preventDefault(),S({x:e.clientX,y:e.clientY})},onClick:()=>{ke.current?ke.current=!1:(L(/* @__PURE__ */new Set),S(null))},children:[(()=>{const e=Fr(),t=20+("right"===e.position?e.width:0),r=20+("bottom"===e.position?e.height:0),n=u.desktop_trash_position,o=n?.right??t,a=n?.bottom??r,l=_.has("trash");/* @__PURE__ */
@@ -124,7 +124,7 @@ return _t("div",{"data-desktop-icon":"trash",style:{position:"absolute",right:o,
124
124
  /* @__PURE__ */_t("span",{className:"text-[10px] font-medium text-center leading-tight drop-shadow-[0_1px_2px_rgba(0,0,0,0.8)] "+(l?"text-blue-200 bg-blue-600/60 rounded px-1":"text-white"),children:"Trash"})]})})})(),ue.map((e,t)=>{const r=m.indexOf(e),n=fe[`item-${r}`]||ce(e,t),o=_.has(`item-${t}`);/* @__PURE__ */
125
125
  return _t("div",{"data-desktop-icon":`item-${t}`,style:{position:"absolute",right:n.right,top:n.top,zIndex:1},onPointerDown:e=>{e.stopPropagation(),xe("item",t,e)},onClick:e=>{e.stopPropagation(),e.shiftKey||e.metaKey||e.ctrlKey?L(e=>{const r=new Set(e);return r.has(`item-${t}`)?r.delete(`item-${t}`):r.add(`item-${t}`),r}):_.has(`item-${t}`)||L(/* @__PURE__ */new Set([`item-${t}`]))},onContextMenu:e=>((e,t)=>{e.preventDefault(),e.stopPropagation(),S({x:e.clientX,y:e.clientY,itemIdx:t})})(e,t),onDoubleClick:t=>{t.stopPropagation(),me(e)},className:"cursor-default select-none",children:_e(e.entityType,e.label,o,e.entityId,e.fileKind)},`item-${e.entityType}-${e.entityId}-${t}`)}),p.map((e,t)=>{const r=fe[`folder-${t}`]||de(e,t),n=_.has(`folder-${t}`),o=re===t,a=(l=e.id,m.filter(e=>e.folderId===l)).length;var l;/* @__PURE__ */
126
126
  return _t("div",{"data-desktop-icon":`folder-${t}`,style:{position:"absolute",right:r.right,top:r.top,zIndex:1,transform:o?"scale(1.15)":"scale(1)",transition:"transform 180ms ease-out"},onPointerDown:e=>{e.stopPropagation(),xe("folder",t,e)},onClick:e=>{e.stopPropagation(),e.shiftKey||e.metaKey||e.ctrlKey?L(e=>{const r=new Set(e);return r.has(`folder-${t}`)?r.delete(`folder-${t}`):r.add(`folder-${t}`),r}):_.has(`folder-${t}`)||L(/* @__PURE__ */new Set([`folder-${t}`]))},onContextMenu:e=>((e,t)=>{e.preventDefault(),e.stopPropagation(),S({x:e.clientX,y:e.clientY,folderIdx:t})})(e,t),onDoubleClick:t=>{t.stopPropagation(),he(e.id)},className:"cursor-default select-none",children:/* @__PURE__ */St("div",{className:"flex flex-col items-center gap-1 w-20 p-2",children:[
127
- /* @__PURE__ */_t("div",{className:`w-12 h-12 flex items-center justify-center ${n?"rounded-lg bg-blue-400/30 ring-2 ring-blue-500":""} ${o?"rounded-lg ring-4 ring-amber-400 shadow-[0_0_20px_rgba(245,158,11,0.6)]":""}`,children:/* @__PURE__ */_t(O,{className:"h-12 w-12 text-amber-500 drop-shadow-[0_2px_3px_rgba(0,0,0,0.3)]"})}),B===e.id?/* @__PURE__ */_t("input",{autoFocus:!0,value:W,onChange:e=>K(e.target.value),onBlur:()=>Ne(e.id,W),onKeyDown:t=>{"Enter"===t.key&&Ne(e.id,W),"Escape"===t.key&&R(null)},className:"text-[10px] w-full text-center bg-white/80 rounded px-1 outline-none",onClick:e=>e.stopPropagation()}):/* @__PURE__ */St("span",{className:"text-[10px] font-medium text-center leading-tight w-full drop-shadow-[0_1px_2px_rgba(0,0,0,0.8)] "+(n?"text-blue-200 bg-blue-600/60 rounded px-1":"text-white"),children:[e.name,a>0?` (${a})`:""]})]})},`folder-${e.id}`)}),y.map(e=>{const t=e.sticky_x??100,r=e.sticky_y??100,n=e.sticky_w??192,o=e.sticky_h??148,a=e.sticky_anchor||"left",l=Se[e.color]||Se.yellow,i=X===e.id;/* @__PURE__ */
127
+ /* @__PURE__ */_t("div",{className:`w-12 h-12 flex items-center justify-center ${n?"rounded-lg bg-blue-400/30 ring-2 ring-blue-500":""} ${o?"rounded-lg ring-4 ring-amber-400 shadow-[0_0_20px_rgba(245,158,11,0.6)]":""}`,children:/* @__PURE__ */_t(O,{className:"h-12 w-12 text-amber-500 drop-shadow-[0_2px_3px_rgba(0,0,0,0.3)]"})}),B===e.id?/* @__PURE__ */_t("input",{autoFocus:!0,value:W,onChange:e=>K(e.target.value),onBlur:()=>Ne(e.id,W),onKeyDown:t=>{"Enter"===t.key&&Ne(e.id,W),"Escape"===t.key&&R(null)},className:"text-[10px] w-full text-center bg-white/80 rounded px-1 outline-none",onClick:e=>e.stopPropagation()}):/* @__PURE__ */St("span",{className:"text-[10px] font-medium text-center leading-tight w-full drop-shadow-[0_1px_2px_rgba(0,0,0,0.8)] "+(n?"text-blue-200 bg-blue-600/60 rounded px-1":"text-white"),children:[e.name,a>0?` (${a})`:""]})]})},`folder-${e.id}`)}),y.map(e=>{const t=e.sticky_x??100,r=e.sticky_y??100,n=e.sticky_w??192,o=e.sticky_h??148,a=e.sticky_anchor||"left",l=Se[e.color]||Se.yellow,i=Y===e.id;/* @__PURE__ */
128
128
  return St("div",{"data-sticky-id":e.id,style:{position:"absolute",..."right"===a?{right:t}:{left:t},top:r,width:n,height:o,zIndex:e.sticky_on_top?200:i?50:10},onClick:e=>e.stopPropagation(),className:`rounded-lg shadow-lg border ${l} select-none flex flex-col`,children:[
129
129
  /* @__PURE__ */St("div",{className:"flex items-center justify-between px-2 py-1 cursor-move border-b border-black/5",onPointerDown:o=>{if(0!==o.button)return;o.preventDefault(),o.stopPropagation();const l=o.target.closest("[data-sticky-id]"),i=l?l.getBoundingClientRect().left-(s.current?.getBoundingClientRect().left??0):"right"===a?window.innerWidth-t-n:t;Q({id:e.id,startX:o.clientX,startY:o.clientY,origX:i,origY:r})},children:[
130
130
  /* @__PURE__ */_t("div",{className:"flex items-center gap-1",children:/* @__PURE__ */_t("button",{onPointerDown:e=>e.stopPropagation(),onClick:t=>{t.stopPropagation(),(e=>{const t=["yellow","blue","green","pink","purple","orange"],r=f.find(t=>t.id===e);if(!r)return;const n=t.indexOf(r.color),o=t[(n+1)%t.length];Ce(f.map(t=>t.id===e?{...t,color:o}:t))})(e.id)},title:"Change color",className:"w-3 h-3 rounded-full bg-black/10 hover:bg-black/20 transition-colors"})}),
@@ -138,35 +138,35 @@ return St("div",{"data-sticky-id":e.id,style:{position:"absolute",..."right"===a
138
138
  /* @__PURE__ */_t("circle",{cx:"10",cy:"10",r:"1.5"}),
139
139
  /* @__PURE__ */_t("circle",{cx:"6",cy:"10",r:"1.5"}),
140
140
  /* @__PURE__ */_t("circle",{cx:"10",cy:"6",r:"1.5"})]})})]},`sticky-${e.id}`)}),E&&/* @__PURE__ */_t("div",{className:"absolute border border-blue-400 bg-blue-400/10 pointer-events-none",style:{left:Math.min(E.startX,E.endX),top:Math.min(E.startY,E.endY),width:Math.abs(E.endX-E.startX),height:Math.abs(E.endY-E.startY)}}),M&&null==M.itemIdx&&null==M.folderIdx&&/* @__PURE__ */St(Ve,{style:Le(M.x,M.y),children:[
141
- /* @__PURE__ */St(Ye,{onClick:()=>{const e=s.current?.getBoundingClientRect(),t=M?M.x-(e?.left||0):100,r=M?M.y-(e?.top||0):100,n={id:`note-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,title:"",content:"",color:"yellow",sticky:!0,sticky_x:t,sticky_y:r,updated_at:/* @__PURE__ */(new Date).toISOString()};Ce([n,...f]),q(n.id),S(null)},children:[
141
+ /* @__PURE__ */St(Xe,{onClick:()=>{const e=s.current?.getBoundingClientRect(),t=M?M.x-(e?.left||0):100,r=M?M.y-(e?.top||0):100,n={id:`note-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,title:"",content:"",color:"yellow",sticky:!0,sticky_x:t,sticky_y:r,updated_at:/* @__PURE__ */(new Date).toISOString()};Ce([n,...f]),q(n.id),S(null)},children:[
142
142
  /* @__PURE__ */St("svg",{className:"h-4 w-4 text-yellow-500",fill:"currentColor",viewBox:"0 0 24 24",children:[
143
143
  /* @__PURE__ */_t("path",{d:"M4 4a2 2 0 012-2h8a2 2 0 012 2v8a2 2 0 01-2 2H6a2 2 0 01-2-2V4z",opacity:"0.8"}),
144
144
  /* @__PURE__ */_t("path",{d:"M14 14v4a2 2 0 01-2 2H6a2 2 0 01-2-2v-6",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round"})]}),"New Sticky Note"]}),
145
- /* @__PURE__ */St(Ye,{onClick:()=>{const e=s.current?.getBoundingClientRect(),t=e?.width??0,r=M?M.x-(e?.left??0):t-100,n=M?M.y-(e?.top??0):100,o=Math.max(0,t-r-40),a=Math.max(0,n-20),l=`folder-${Date.now()}`;le([...p,{id:l,name:"New Folder",x:o,y:a}]),S(null),R(l),K("New Folder")},children:[
145
+ /* @__PURE__ */St(Xe,{onClick:()=>{const e=s.current?.getBoundingClientRect(),t=e?.width??0,r=M?M.x-(e?.left??0):t-100,n=M?M.y-(e?.top??0):100,o=Math.max(0,t-r-40),a=Math.max(0,n-20),l=`folder-${Date.now()}`;le([...p,{id:l,name:"New Folder",x:o,y:a}]),S(null),R(l),K("New Folder")},children:[
146
146
  /* @__PURE__ */_t("svg",{className:"h-4 w-4 text-yellow-600",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M2.25 12.75V12A2.25 2.25 0 014.5 9.75h15A2.25 2.25 0 0121.75 12v.75m-8.69-6.44l-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z"})}),"Create Folder"]}),
147
- /* @__PURE__ */St(Ye,{onClick:()=>{const e=s.current?.getBoundingClientRect(),t=e?.height||600,r=Math.max(1,Math.floor(t/jr));let n=0;const o=()=>{const e=Math.floor(n/r),t=n%r;return n++,{right:20+e*jr,top:10+t*jr}},a=p.map(e=>{const t=o();return{...e,x:t.right,y:t.top}});le(a);const l=m.map(e=>{if(e.folderId)return e;const t=o();return{...e,x:t.right,y:t.top}});ae(l),S(null)},children:[
147
+ /* @__PURE__ */St(Xe,{onClick:()=>{const e=s.current?.getBoundingClientRect(),t=e?.height||600,r=Math.max(1,Math.floor(t/jr));let n=0;const o=()=>{const e=Math.floor(n/r),t=n%r;return n++,{right:20+e*jr,top:10+t*jr}},a=p.map(e=>{const t=o();return{...e,x:t.right,y:t.top}});le(a);const l=m.map(e=>{if(e.folderId)return e;const t=o();return{...e,x:t.right,y:t.top}});ae(l),S(null)},children:[
148
148
  /* @__PURE__ */_t("svg",{className:"h-4 w-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3.75 6A2.25 2.25 0 016 3.75h2.25A2.25 2.25 0 0110.5 6v2.25a2.25 2.25 0 01-2.25 2.25H6a2.25 2.25 0 01-2.25-2.25V6zM3.75 15.75A2.25 2.25 0 016 13.5h2.25a2.25 2.25 0 012.25 2.25V18a2.25 2.25 0 01-2.25 2.25H6A2.25 2.25 0 013.75 18v-2.25zM13.5 6a2.25 2.25 0 012.25-2.25H18A2.25 2.25 0 0120.25 6v2.25A2.25 2.25 0 0118 10.5h-2.25a2.25 2.25 0 01-2.25-2.25V6zM13.5 15.75a2.25 2.25 0 012.25-2.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-2.25A2.25 2.25 0 0113.5 18v-2.25z"})}),"Snap to Grid"]}),
149
- /* @__PURE__ */St(Ye,{onClick:()=>{S(null),j(!0)},children:[
149
+ /* @__PURE__ */St(Xe,{onClick:()=>{S(null),j(!0)},children:[
150
150
  /* @__PURE__ */St("svg",{className:"h-4 w-4 text-blue-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:[
151
151
  /* @__PURE__ */_t("rect",{x:"3.5",y:"3.5",width:"7",height:"7",rx:"1.5"}),
152
152
  /* @__PURE__ */_t("rect",{x:"13.5",y:"3.5",width:"7",height:"7",rx:"1.5"}),
153
153
  /* @__PURE__ */_t("rect",{x:"3.5",y:"13.5",width:"7",height:"7",rx:"1.5"}),
154
- /* @__PURE__ */_t("rect",{x:"13.5",y:"13.5",width:"7",height:"7",rx:"1.5"})]}),"Manage Widgets…"]}),!x.includes("perf-stats")&&/* @__PURE__ */St(Ye,{onClick:()=>{S(null),d({show_desktop_stats:!0!==u.show_desktop_stats})},children:[
155
- /* @__PURE__ */_t("svg",{className:"h-4 w-4 text-emerald-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3.75 20.25V15m5.25 5.25V9.75m5.25 10.5V4.5m5.25 15.75v-7.5"})}),!0===u.show_desktop_stats?"Hide Performance Stats":"Show Performance Stats"]}),!(x.includes("customization")&&x.includes("favorites")&&x.includes("about"))&&/* @__PURE__ */_t(Ke,{}),!x.includes("customization")&&/* @__PURE__ */St(Ye,{onClick:()=>{S(null),i("/settings/customization")},children:[
156
- /* @__PURE__ */_t("svg",{className:"h-4 w-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.53 16.122a3 3 0 00-5.78 1.128 2.25 2.25 0 01-2.4 2.245 4.5 4.5 0 008.4-2.245c0-.399-.078-.78-.22-1.128zm0 0a15.998 15.998 0 003.388-1.62m-5.043-.025a15.994 15.994 0 011.622-3.395m3.42 3.42a15.995 15.995 0 004.764-4.648l3.876-5.814a1.151 1.151 0 00-1.597-1.597L14.146 6.32a15.996 15.996 0 00-4.649 4.763m3.42 3.42a6.776 6.776 0 00-3.42-3.42"})}),"Preferences"]}),!x.includes("favorites")&&/* @__PURE__ */St(Ye,{onClick:()=>{S(null),i("/settings/favorites")},children:[
157
- /* @__PURE__ */_t("svg",{className:"h-4 w-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 00-.182.557l1.285 5.385a.562.562 0 01-.84.61l-4.725-2.885a.563.563 0 00-.586 0L6.982 20.54a.562.562 0 01-.84-.61l1.285-5.386a.562.562 0 00-.182-.557l-4.204-3.602a.563.563 0 01.321-.988l5.518-.442a.563.563 0 00.475-.345L11.48 3.5z"})}),"Favorites"]}),!x.includes("about")&&/* @__PURE__ */St(Ye,{onClick:()=>{S(null),$(!0)},children:[
154
+ /* @__PURE__ */_t("rect",{x:"13.5",y:"13.5",width:"7",height:"7",rx:"1.5"})]}),"Manage Widgets…"]}),!x.includes("perf-stats")&&/* @__PURE__ */St(Xe,{onClick:()=>{S(null),d({show_desktop_stats:!0!==u.show_desktop_stats})},children:[
155
+ /* @__PURE__ */_t("svg",{className:"h-4 w-4 text-emerald-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3.75 20.25V15m5.25 5.25V9.75m5.25 10.5V4.5m5.25 15.75v-7.5"})}),!0===u.show_desktop_stats?"Hide Performance Stats":"Show Performance Stats"]}),!(x.includes("customization")&&x.includes("favorites")&&x.includes("about"))&&/* @__PURE__ */_t(Ke,{}),!x.includes("customization")&&/* @__PURE__ */St(Xe,{onClick:()=>{S(null),i("/settings/customization")},children:[
156
+ /* @__PURE__ */_t("svg",{className:"h-4 w-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9.53 16.122a3 3 0 00-5.78 1.128 2.25 2.25 0 01-2.4 2.245 4.5 4.5 0 008.4-2.245c0-.399-.078-.78-.22-1.128zm0 0a15.998 15.998 0 003.388-1.62m-5.043-.025a15.994 15.994 0 011.622-3.395m3.42 3.42a15.995 15.995 0 004.764-4.648l3.876-5.814a1.151 1.151 0 00-1.597-1.597L14.146 6.32a15.996 15.996 0 00-4.649 4.763m3.42 3.42a6.776 6.776 0 00-3.42-3.42"})}),"Preferences"]}),!x.includes("favorites")&&/* @__PURE__ */St(Xe,{onClick:()=>{S(null),i("/settings/favorites")},children:[
157
+ /* @__PURE__ */_t("svg",{className:"h-4 w-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 00-.182.557l1.285 5.385a.562.562 0 01-.84.61l-4.725-2.885a.563.563 0 00-.586 0L6.982 20.54a.562.562 0 01-.84-.61l1.285-5.386a.562.562 0 00-.182-.557l-4.204-3.602a.563.563 0 01.321-.988l5.518-.442a.563.563 0 00.475-.345L11.48 3.5z"})}),"Favorites"]}),!x.includes("about")&&/* @__PURE__ */St(Xe,{onClick:()=>{S(null),$(!0)},children:[
158
158
  /* @__PURE__ */_t("svg",{className:"h-4 w-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z"})}),t.about.aboutPrefix," ",b.productName??t.about.thisApp]}),b.onReportBug&&/* @__PURE__ */St(Lt,{children:[
159
159
  /* @__PURE__ */_t(Ke,{}),
160
- /* @__PURE__ */St(Ye,{onClick:()=>{S(null),b.onReportBug()},children:[
160
+ /* @__PURE__ */St(Xe,{onClick:()=>{S(null),b.onReportBug()},children:[
161
161
  /* @__PURE__ */_t("svg",{className:"h-4 w-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z"})}),"Suggestion or Bug"]})]})]}),M&&null!=M.itemIdx&&/* @__PURE__ */St(Ve,{style:Le(M.x,M.y),minWidth:160,children:[
162
- /* @__PURE__ */_t(Ye,{onClick:()=>{me(ue[M.itemIdx]),S(null)},children:"Open"}),
162
+ /* @__PURE__ */_t(Xe,{onClick:()=>{me(ue[M.itemIdx]),S(null)},children:"Open"}),
163
163
  /* @__PURE__ */_t(Ke,{}),
164
- /* @__PURE__ */_t(Ye,{danger:!0,onClick:()=>(e=>{const t=m.indexOf(ue[e]);ae(m.filter((e,r)=>r!==t)),S(null)})(M.itemIdx),children:"Remove Shortcut"})]}),M&&null!=M.folderIdx&&/* @__PURE__ */St(Ve,{style:Le(M.x,M.y),minWidth:160,children:[
165
- /* @__PURE__ */_t(Ye,{onClick:()=>{he(p[M.folderIdx].id),S(null)},children:"Open"}),p[M.folderIdx].id!==Dr&&/* @__PURE__ */St(Lt,{children:[
166
- /* @__PURE__ */_t(Ye,{onClick:()=>{R(p[M.folderIdx].id),K(p[M.folderIdx].name),S(null)},children:"Rename"}),
164
+ /* @__PURE__ */_t(Xe,{danger:!0,onClick:()=>(e=>{const t=m.indexOf(ue[e]);ae(m.filter((e,r)=>r!==t)),S(null)})(M.itemIdx),children:"Remove Shortcut"})]}),M&&null!=M.folderIdx&&/* @__PURE__ */St(Ve,{style:Le(M.x,M.y),minWidth:160,children:[
165
+ /* @__PURE__ */_t(Xe,{onClick:()=>{he(p[M.folderIdx].id),S(null)},children:"Open"}),p[M.folderIdx].id!==Dr&&/* @__PURE__ */St(Lt,{children:[
166
+ /* @__PURE__ */_t(Xe,{onClick:()=>{R(p[M.folderIdx].id),K(p[M.folderIdx].name),S(null)},children:"Rename"}),
167
167
  /* @__PURE__ */_t(Ke,{}),
168
- /* @__PURE__ */_t(Ye,{danger:!0,onClick:()=>(e=>{const t=p[e];if(t.id===Dr)return;const r=m.map(e=>e.folderId===t.id?{...e,folderId:void 0}:e);ae(r),le(p.filter((t,r)=>r!==e)),S(null)})(M.folderIdx),children:"Delete Folder"})]})]}),
169
- /* @__PURE__ */_t(rr,{open:A,onClose:()=>j(!1)}),T&&(()=>{const e=b.productVersion??Y;/* @__PURE__ */
168
+ /* @__PURE__ */_t(Xe,{danger:!0,onClick:()=>(e=>{const t=p[e];if(t.id===Dr)return;const r=m.map(e=>e.folderId===t.id?{...e,folderId:void 0}:e);ae(r),le(p.filter((t,r)=>r!==e)),S(null)})(M.folderIdx),children:"Delete Folder"})]})]}),
169
+ /* @__PURE__ */_t(rr,{open:A,onClose:()=>j(!1)}),T&&(()=>{const e=b.productVersion??X;/* @__PURE__ */
170
170
  return _t(ee,{open:!0,onClose:()=>$(!1),title:`${t.about.aboutPrefix} ${b.productName??t.about.thisApp}`,size:"sm",bodyScroll:!1,compact:!0,dimensions:[340,420],children:/* @__PURE__ */St("div",{className:"flex flex-col items-center",children:[
171
171
  /* @__PURE__ */St("div",{className:"flex flex-col items-center gap-2 pt-4 pb-3 w-full",children:[
172
172
  /* @__PURE__ */_t("img",{src:b.productIcon??"/favicon.svg",alt:"",className:"h-16 w-16"}),
@@ -181,9 +181,9 @@ return _t(ee,{open:!0,onClose:()=>$(!1),title:`${t.about.aboutPrefix} ${b.produc
181
181
  /* @__PURE__ */_t("th",{className:"text-left py-1 font-medium",children:"License"})]})}),
182
182
  /* @__PURE__ */_t("tbody",{className:"divide-y divide-gray-50",children:[["React","MIT","facebook/react"],["React DOM","MIT","facebook/react"],["React Router","MIT","remix-run/react-router"],["TanStack Query","MIT","TanStack/query"],["TanStack Table","MIT","TanStack/table"],["React Hook Form","MIT","react-hook-form"],["Axios","MIT","axios/axios"],["Tailwind CSS","MIT","tailwindlabs/tailwindcss"],["Headless UI","MIT","tailwindlabs/headlessui"],["Heroicons","MIT","tailwindlabs/heroicons"],["Recharts","MIT","recharts/recharts"],["Zod","MIT","colinhacks/zod"],["Vite","MIT","vitejs/vite"],["TypeScript","Apache-2.0","microsoft/TypeScript"],["jSpreadsheet CE","MIT","jspreadsheet/ce"],["Django","BSD-3","django/django"],["Django REST Framework","BSD-3","encode/django-rest-framework"],["PostgreSQL","PostgreSQL","postgres/postgres"],["Gunicorn","MIT","benoitc/gunicorn"]].map(([e,t,r])=>/* @__PURE__ */St("tr",{className:"text-gray-600",children:[
183
183
  /* @__PURE__ */_t("td",{className:"py-1",children:/* @__PURE__ */_t("a",{href:`https://github.com/${r}`,target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 hover:underline",children:e})}),
184
- /* @__PURE__ */_t("td",{className:"py-1 text-gray-400",children:t})]},e))})]})})]}),(b.productCopyright||b.productWebsite)&&/* @__PURE__ */St("div",{className:"pt-3 pb-2 border-t border-gray-200 w-full text-center",children:[b.productCopyright&&/* @__PURE__ */_t("p",{className:"text-[10px] text-gray-400",children:b.productCopyright}),b.productWebsite&&/* @__PURE__ */_t("a",{href:b.productWebsite,target:"_blank",rel:"noopener noreferrer",className:"text-[10px] text-blue-500 hover:underline",children:b.productWebsite.replace(/^https?:\/\//,"")})]})]})})})(),!0===u.show_desktop_stats&&(()=>{const e=!0===u.show_desktop_version&&!!(b.productVersion??Y),t="top"!==u.taskbar_position&&"left"!==u.taskbar_position&&"right"!==u.taskbar_position,r="right"===u.taskbar_position?"left-3":"right-3";/* @__PURE__ */
185
- return _t("div",{className:`absolute z-[240] ${r} ${t?e?"bottom-24":"bottom-16":e?"bottom-8":"bottom-3"}`,children:/* @__PURE__ */_t(Tr,{onClose:()=>d({show_desktop_stats:!1}),onSubmit:b.onSubmitPerfReport})})})(),!0===u.show_desktop_version&&(b.productVersion??Y)&&(()=>{const e=Fr();/* @__PURE__ */
186
- return _t("button",{onClick:e=>{e.stopPropagation(),D(!0)},style:{zIndex:2,bottom:"bottom"===e.position?e.height+4:8,..."right"===e.position?{left:4}:{right:4}},className:"absolute px-2 py-1 text-[10px] text-white/50 font-mono select-none drop-shadow-[0_1px_1px_rgba(0,0,0,0.5)] hover:text-white/80 transition-colors cursor-pointer",children:b.productVersion??Y})})(),I&&(()=>{const e=b.productChangelog??Ir;/* @__PURE__ */
184
+ /* @__PURE__ */_t("td",{className:"py-1 text-gray-400",children:t})]},e))})]})})]}),(b.productCopyright||b.productWebsite)&&/* @__PURE__ */St("div",{className:"pt-3 pb-2 border-t border-gray-200 w-full text-center",children:[b.productCopyright&&/* @__PURE__ */_t("p",{className:"text-[10px] text-gray-400",children:b.productCopyright}),b.productWebsite&&/* @__PURE__ */_t("a",{href:b.productWebsite,target:"_blank",rel:"noopener noreferrer",className:"text-[10px] text-blue-500 hover:underline",children:b.productWebsite.replace(/^https?:\/\//,"")})]})]})})})(),!0===u.show_desktop_stats&&(()=>{const e=!0===u.show_desktop_version&&!!(b.productVersion??X),t="top"!==u.taskbar_position&&"left"!==u.taskbar_position&&"right"!==u.taskbar_position,r="right"===u.taskbar_position?"left-3":"right-3";/* @__PURE__ */
185
+ return _t("div",{className:`absolute z-[240] ${r} ${t?e?"bottom-24":"bottom-16":e?"bottom-8":"bottom-3"}`,children:/* @__PURE__ */_t(Tr,{onClose:()=>d({show_desktop_stats:!1}),onSubmit:b.onSubmitPerfReport})})})(),!0===u.show_desktop_version&&(b.productVersion??X)&&(()=>{const e=Fr();/* @__PURE__ */
186
+ return _t("button",{onClick:e=>{e.stopPropagation(),D(!0)},style:{zIndex:2,bottom:"bottom"===e.position?e.height+4:8,..."right"===e.position?{left:4}:{right:4}},className:"absolute px-2 py-1 text-[10px] text-white/50 font-mono select-none drop-shadow-[0_1px_1px_rgba(0,0,0,0.5)] hover:text-white/80 transition-colors cursor-pointer",children:b.productVersion??X})})(),I&&(()=>{const e=b.productChangelog??Ir;/* @__PURE__ */
187
187
  return _t(ee,{open:!0,onClose:()=>D(!1),title:t.about.whatsNew,size:"md",children:0===e.length?/* @__PURE__ */_t("div",{className:"flex-1 flex items-center justify-center",children:/* @__PURE__ */_t("p",{className:"text-sm text-gray-400 text-center",children:t.about.noChangelog})}):/* @__PURE__ */_t("div",{className:"space-y-5 px-1",children:e.map((t,r)=>/* @__PURE__ */St("div",{children:[
188
188
  /* @__PURE__ */St("div",{className:"flex items-center gap-3 mb-2",children:[
189
189
  /* @__PURE__ */_t("span",{className:"text-sm font-bold text-gray-900 font-mono",children:t.version}),
@@ -202,7 +202,7 @@ return _t(ee,{open:!0,onClose:()=>D(!1),title:t.about.whatsNew,size:"md",childre
202
202
  /* @__PURE__ */St("div",{className:"mt-6 text-center transition-all duration-700 "+("show"===l?"opacity-100 translate-y-0":"opacity-0 translate-y-4"),children:[
203
203
  /* @__PURE__ */_t("h1",{className:"text-2xl font-bold tracking-[0.3em] text-white/90 uppercase",children:s.logout.goodbye}),
204
204
  /* @__PURE__ */_t("p",{className:"mt-2 text-xs text-white/40",children:s.logout.seeYou})]}),t&&/* @__PURE__ */_t("div",{className:"absolute bottom-8 transition-all duration-500 "+("show"===l?"opacity-40":"opacity-0"),children:/* @__PURE__ */_t("p",{className:"text-[10px] text-white/40 font-mono tracking-wider",children:t})}),
205
- /* @__PURE__ */_t("style",{children:"\n @keyframes logout-glow {\n 0%, 100% { transform: translate(-50%, -50%) scale(1); opacity: 0.15; }\n 50% { transform: translate(-50%, -50%) scale(1.1); opacity: 0.25; }\n }\n /* Reduced motion: same contract as StartupAnimation — fades stay,\n * movement goes, the 2300ms cover-and-swap timing is untouched. */\n @media (prefers-reduced-motion: reduce) {\n [data-logout-animation], [data-logout-animation] * {\n animation: none !important;\n transition-property: opacity !important;\n }\n }\n "})]})}function Vr(e,t){return e.length===t.length&&e.every((e,r)=>e.type===t[r].type&&e.route===t[r].route&&e.entityType===t[r].entityType&&e.entityId===t[r].entityId&&e.label===t[r].label)}function Kr(){const{openWindows:e,openEntity:t,openPage:r}=J(),{prefs:n,save:o}=Te(),a=pt(!1),l=pt([]),i=pt(null),s=pt(0),c=pt(void 0);return ht(()=>{if(a.current)return;a.current=!0;const o=Array.isArray(n.session_windows)?n.session_windows:[];if(l.current=o,!1!==n.restore_windows&&!(e.length>0))for(const e of o)"page"===e.type&&e.route?r(e.route):"entity"===e.type&&e.entityType&&e.entityId&&!ue(e.entityId)&&t(e.entityType,e.entityId,void 0,e.label,e.route)},[]),ht(()=>{if(!a.current)return;clearTimeout(c.current);const t=function(e){const t=[];for(const r of e)"page"===r.type&&r.route?t.push({type:"page",route:r.route}):r.entityType&&r.entityId&&"part_number"!==r.type&&!ge(r)&&t.push({type:"entity",entityType:r.entityType,entityId:r.entityId,label:r.label,route:r.route});return t}(e);return Vr(t,l.current)||i.current&&Vr(t,i.current)?void 0:(c.current=setTimeout(()=>{const e=++s.current;i.current=t,Promise.resolve(o({session_windows:t})).then(()=>{e===s.current&&(l.current=t,i.current=null)}).catch(()=>{e===s.current&&(i.current=null)})},800),()=>clearTimeout(c.current))},[e,o]),null}var Ur=e=>e.menuLabel??e.label,Yr=e=>Boolean(e.menuLabel&&e.menuLabel!==e.label),Xr=e=>Yr(e)?`${e.menuLabel}, ${e.label}`:void 0;function qr({entry:e,className:t}){const r=Yr(e),[n,o]=mt(r);/* @__PURE__ */
205
+ /* @__PURE__ */_t("style",{children:"\n @keyframes logout-glow {\n 0%, 100% { transform: translate(-50%, -50%) scale(1); opacity: 0.15; }\n 50% { transform: translate(-50%, -50%) scale(1.1); opacity: 0.25; }\n }\n /* Reduced motion: same contract as StartupAnimation — fades stay,\n * movement goes, the 2300ms cover-and-swap timing is untouched. */\n @media (prefers-reduced-motion: reduce) {\n [data-logout-animation], [data-logout-animation] * {\n animation: none !important;\n transition-property: opacity !important;\n }\n }\n "})]})}function Vr(e,t){return e.length===t.length&&e.every((e,r)=>e.type===t[r].type&&e.route===t[r].route&&e.entityType===t[r].entityType&&e.entityId===t[r].entityId&&e.label===t[r].label)}function Kr(){const{openWindows:e,openEntity:t,openPage:r}=J(),{prefs:n,save:o}=Te(),a=pt(!1),l=pt([]),i=pt(null),s=pt(0),c=pt(void 0);return ht(()=>{if(a.current)return;a.current=!0;const o=Array.isArray(n.session_windows)?n.session_windows:[];if(l.current=o,!1!==n.restore_windows&&!(e.length>0))for(const e of o)"page"===e.type&&e.route?r(e.route):"entity"===e.type&&e.entityType&&e.entityId&&!ue(e.entityId)&&t(e.entityType,e.entityId,void 0,e.label,e.route)},[]),ht(()=>{if(!a.current)return;clearTimeout(c.current);const t=function(e){const t=[];for(const r of e)"page"===r.type&&r.route?t.push({type:"page",route:r.route}):r.entityType&&r.entityId&&"part_number"!==r.type&&!ge(r)&&t.push({type:"entity",entityType:r.entityType,entityId:r.entityId,label:r.label,route:r.route});return t}(e);return Vr(t,l.current)||i.current&&Vr(t,i.current)?void 0:(c.current=setTimeout(()=>{const e=++s.current;i.current=t,Promise.resolve(o({session_windows:t})).then(()=>{e===s.current&&(l.current=t,i.current=null)}).catch(()=>{e===s.current&&(i.current=null)})},800),()=>clearTimeout(c.current))},[e,o]),null}var Ur=e=>e.menuLabel??e.label,Xr=e=>Boolean(e.menuLabel&&e.menuLabel!==e.label),Yr=e=>Xr(e)?`${e.menuLabel}, ${e.label}`:void 0;function qr({entry:e,className:t}){const r=Xr(e),[n,o]=mt(r);/* @__PURE__ */
206
206
  return _t("span",{className:t,title:n?e.label:void 0,"data-menu-label":!0,onMouseEnter:e=>o(r||e.currentTarget.scrollWidth>e.currentTarget.clientWidth),children:Ur(e)})}function Gr({left:e,anchorY:t,estHeight:r,minTop:n,maxBottom:o,flipped:a,className:l,style:i,onMouseEnter:s,onMouseLeave:c,children:d}){const u=pt(null);return ft(()=>{const e=u.current;e&&(e.style.top=`${et(t,e.offsetHeight,n,o)}px`)}),/* @__PURE__ */_t("div",{ref:u,"data-menu-panel":!0,className:`fixed rounded-2xl overflow-hidden ${l??""}`,style:{left:e,top:et(t,r,n,o),animation:(a?"submenu-in-left":"submenu-in")+" 0.1s ease-out",...i},onMouseEnter:s,onMouseLeave:c,children:d})}function Jr({open:e,onClose:t,openPage:r,profile:n,user:o,onLogout:a,taskbarPosition:l,taskbarH:i,taskbarW:s=0,taskbarGap:c=4,size:d="medium",navSections:u=De,navIcons:m=je,sectionIcons:h=Re,categories:p=$e}){const g=new Set(p.erp),f=new Set(p.system),y=new Set(p.footer??[]),b=p.virtual??[],x=Object.fromEntries(b.map(e=>[e.label,e])),{hasAnyPerm:w}=A(),v=(p.footerItems??[]).filter(e=>Ie(e,w)),k=Pe(),[N,C]=mt([]),[M,S]=mt(""),[_,L]=mt(0),E=pt(null),P=pt();ht(()=>{e||(S(""),C([]),L(0))},[e]),ht(()=>()=>clearTimeout(P.current),[]);const T=N.length>0?N[N.length-1].key:null;if(ht(()=>{e&&ne("menu","start")},[e]),ht(()=>{T&&ne("submenu",T)},[T]),ht(()=>{if(!e)return;const r=e=>{"Escape"===e.key&&t()},n=e=>{e.target.closest("[data-menu-toggle]")||E.current&&!E.current.contains(e.target)&&t()};return window.addEventListener("keydown",r),window.addEventListener("pointerdown",n),()=>{window.removeEventListener("keydown",r),window.removeEventListener("pointerdown",n)}},[e,t]),!e)return null;const $=e=>{r(e),t()},I=e=>{if(e.onSelect)return e.onSelect(),void t();$(e.to)};if(k){const e=[],r=(t,n)=>{if(Ie(t,w)&&Be(t,w)){e.push({item:t,sectionLabel:n});for(const e of Fe(t,w))r(e,t.label)}};for(const e of u)if(Ae(e)){const t=e;if(!Ie(t,w))continue;for(const e of t.items)r(e,t.label)}else r(e);for(const e of v)r(e);const n=M.length>=1?e.filter(({item:e})=>e.label.toLowerCase().includes(M.toLowerCase())):e;/* @__PURE__ */
207
207
  return St("div",{ref:E,className:"fixed inset-0 z-[260] flex flex-col bg-white",style:{paddingBottom:"var(--mobile-bottom-nav, 56px)"},children:[
208
208
  /* @__PURE__ */St("div",{className:"flex items-center gap-2 px-3 py-2 border-b border-gray-200",children:[
@@ -211,14 +211,14 @@ return St("div",{ref:E,className:"fixed inset-0 z-[260] flex flex-col bg-white",
211
211
  /* @__PURE__ */_t("svg",{className:"h-4 w-4 text-gray-400 shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z"})}),
212
212
  /* @__PURE__ */_t("input",{value:M,onChange:e=>S(e.target.value),placeholder:"Search apps...",className:"flex-1 bg-transparent text-sm outline-none placeholder-gray-400",autoFocus:!0})]})]}),
213
213
  /* @__PURE__ */_t("div",{className:"flex-1 overflow-y-auto overflow-x-hidden",children:0===n.length?/* @__PURE__ */_t("p",{className:"text-sm text-gray-400 text-center py-12",children:"No matching apps"}):n.map(({item:e,sectionLabel:t},r)=>{const n=m[e.to];/* @__PURE__ */
214
- return St("button",{onClick:()=>I(e),"aria-label":Xr(e),className:"w-full flex items-center gap-3 px-4 py-3 active:bg-gray-100 border-b border-gray-100 text-left",children:[
214
+ return St("button",{onClick:()=>I(e),"aria-label":Yr(e),className:"w-full flex items-center gap-3 px-4 py-3 active:bg-gray-100 border-b border-gray-100 text-left",children:[
215
215
  /* @__PURE__ */_t("span",{className:"h-8 w-8 rounded-lg bg-gray-100 flex items-center justify-center text-gray-600 shrink-0",children:n&&xt(n)?wt(n,{className:"h-5 w-5"}):null}),
216
216
  /* @__PURE__ */St("div",{className:"min-w-0 flex-1",children:[
217
- /* @__PURE__ */_t(qr,{entry:e,className:"block truncate text-sm font-medium text-gray-900"}),t&&/* @__PURE__ */_t("div",{className:"text-[11px] text-gray-500 truncate",children:t})]})]},`${e.to}-${r}`)})})]})}const D="bottom"!==l,j=u.filter(e=>!Ae(e)).filter(e=>Ie(e,w)&&Be(e,w)),B=u.filter(e=>Ae(e)&&g.has(e.label)),R=u.filter(e=>Ae(e)&&f.has(e.label)),W=u.filter(e=>Ae(e)&&y.has(e.label)),F=j.length>0||R.length>0||b.length>0,z=e=>e.items.filter(e=>Ie(e,w)),O=e=>Fe(e,w),H=e=>O(e).filter(e=>Be(e,w)),V=(e,t)=>{if(!Ie(e,w))return[];if(!Be(e,w))return[];const r=O(e),n=[];e.label.toLowerCase().includes(M.toLowerCase())&&n.push({...e,section:t});for(const t of r)n.push(...V(t,e.label));return n},K=M.length>=2?[...u.flatMap(e=>{if(Ae(e)){const t=e;return t.items.flatMap(e=>V(e,t.label))}return V(e,"")}),...v.flatMap(e=>V(e,""))]:[],U="top"===l?{top:i+c,left:8}:"left"===l?{top:8,left:s+c}:"right"===l?{top:8,right:s+c}:{bottom:i+c,left:8},Y=e=>{const t=m[e];return t&&xt(t)?wt(t,{className:"h-4 w-4 shrink-0"}):null},X=e=>{const t=h[e];return t&&xt(t)?wt(t,{className:"h-4 w-4 shrink-0"}):null},q=N.length>0?N[0].key:null,G=q?x[q]:void 0,J=G?null:q?[...B,...R,...W].find(e=>e.label===q):null,Q=(G?G.items:J?z(J):[]).filter(e=>Be(e,w)),Z="undefined"!=typeof document&&getComputedStyle(document.documentElement).getPropertyValue("--menu-density")?.trim()||"normal",ee={tight:{small:{w:"w-52",fw:"w-44",fwPx:176,text:"text-xs",py:"py-1",px:"px-3",mw:208,itemH:24},medium:{w:"w-56",fw:"w-48",fwPx:192,text:"text-xs",py:"py-1",px:"px-3",mw:224,itemH:26},large:{w:"w-64",fw:"w-52",fwPx:208,text:"text-sm",py:"py-1.5",px:"px-3",mw:256,itemH:30}},normal:{small:{w:"w-56",fw:"w-48",fwPx:192,text:"text-xs",py:"py-1.5",px:"px-3",mw:224,itemH:30},medium:{w:"w-64",fw:"w-56",fwPx:224,text:"text-sm",py:"py-1.5",px:"px-4",mw:256,itemH:32},large:{w:"w-72",fw:"w-60",fwPx:240,text:"text-sm",py:"py-2",px:"px-4",mw:288,itemH:36}},large:{small:{w:"w-56",fw:"w-48",fwPx:192,text:"text-xs",py:"py-2",px:"px-3",mw:224,itemH:32},medium:{w:"w-64",fw:"w-56",fwPx:224,text:"text-sm",py:"py-2",px:"px-4",mw:256,itemH:36},large:{w:"w-72",fw:"w-60",fwPx:240,text:"text-sm",py:"py-2",px:"px-4",mw:288,itemH:36}}}["tight"===Z||"large"===Z?Z:"normal"][d],te=it(),re=`w-full min-w-0 overflow-hidden whitespace-nowrap flex items-center gap-2 rounded-lg ${ee.px} ${ee.py} ${ee.text}`,oe="min-w-0 flex-1 truncate text-left",ae="undefined"!=typeof window?window.innerHeight:800,le="undefined"!=typeof window?window.innerWidth:1280,ie=("top"===l?i:0)+8,se=ae-("bottom"===l?i:0)-8,ce=Math.max(0,se-ie),de=Xe(Q,N,H),ue=()=>clearTimeout(P.current),me=(e,t)=>{const r=t.closest("[data-menu-panel]");if(!r)return{left:0,flipped:!1};const n=0===e?r.getBoundingClientRect().left:N[e-1]?.left??0,o=0===e?r.getBoundingClientRect().right:n+r.offsetWidth,a=e>0&&(N[e-1]?.flipped??!1);return tt(n,o,ee.fwPx,le,4,a)},he=(e,t,r)=>{ue();const n=r.currentTarget,o=n.getBoundingClientRect(),a={key:t,y:o.top+o.height/2,...me(e,n)};C(t=>Qe(t,e,a))},pe=e=>{ue(),P.current=setTimeout(()=>C(t=>Ze(t,e)),200)},ge=/* @__PURE__ */_t("svg",{className:"h-3.5 w-3.5 shrink-0 ml-auto text-gray-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8.25 4.5l7.5 7.5-7.5 7.5"})}),fe=(e,t)=>{if(!Ie(e,w))return null;if(0===z(e).length)return null;const r=q===e.label;/* @__PURE__ */
217
+ /* @__PURE__ */_t(qr,{entry:e,className:"block truncate text-sm font-medium text-gray-900"}),t&&/* @__PURE__ */_t("div",{className:"text-[11px] text-gray-500 truncate",children:t})]})]},`${e.to}-${r}`)})})]})}const D="bottom"!==l,j=u.filter(e=>!Ae(e)).filter(e=>Ie(e,w)&&Be(e,w)),B=u.filter(e=>Ae(e)&&g.has(e.label)),R=u.filter(e=>Ae(e)&&f.has(e.label)),W=u.filter(e=>Ae(e)&&y.has(e.label)),F=j.length>0||R.length>0||b.length>0,z=e=>e.items.filter(e=>Ie(e,w)),O=e=>Fe(e,w),H=e=>O(e).filter(e=>Be(e,w)),V=(e,t)=>{if(!Ie(e,w))return[];if(!Be(e,w))return[];const r=O(e),n=[];e.label.toLowerCase().includes(M.toLowerCase())&&n.push({...e,section:t});for(const t of r)n.push(...V(t,e.label));return n},K=M.length>=2?[...u.flatMap(e=>{if(Ae(e)){const t=e;return t.items.flatMap(e=>V(e,t.label))}return V(e,"")}),...v.flatMap(e=>V(e,""))]:[],U="top"===l?{top:i+c,left:8}:"left"===l?{top:8,left:s+c}:"right"===l?{top:8,right:s+c}:{bottom:i+c,left:8},X=e=>{const t=m[e];return t&&xt(t)?wt(t,{className:"h-4 w-4 shrink-0"}):null},Y=e=>{const t=h[e];return t&&xt(t)?wt(t,{className:"h-4 w-4 shrink-0"}):null},q=N.length>0?N[0].key:null,G=q?x[q]:void 0,J=G?null:q?[...B,...R,...W].find(e=>e.label===q):null,Q=(G?G.items:J?z(J):[]).filter(e=>Be(e,w)),Z="undefined"!=typeof document&&getComputedStyle(document.documentElement).getPropertyValue("--menu-density")?.trim()||"normal",ee={tight:{small:{w:"w-52",fw:"w-44",fwPx:176,text:"text-xs",py:"py-1",px:"px-3",mw:208,itemH:24},medium:{w:"w-56",fw:"w-48",fwPx:192,text:"text-xs",py:"py-1",px:"px-3",mw:224,itemH:26},large:{w:"w-64",fw:"w-52",fwPx:208,text:"text-sm",py:"py-1.5",px:"px-3",mw:256,itemH:30}},normal:{small:{w:"w-56",fw:"w-48",fwPx:192,text:"text-xs",py:"py-1.5",px:"px-3",mw:224,itemH:30},medium:{w:"w-64",fw:"w-56",fwPx:224,text:"text-sm",py:"py-1.5",px:"px-4",mw:256,itemH:32},large:{w:"w-72",fw:"w-60",fwPx:240,text:"text-sm",py:"py-2",px:"px-4",mw:288,itemH:36}},large:{small:{w:"w-56",fw:"w-48",fwPx:192,text:"text-xs",py:"py-2",px:"px-3",mw:224,itemH:32},medium:{w:"w-64",fw:"w-56",fwPx:224,text:"text-sm",py:"py-2",px:"px-4",mw:256,itemH:36},large:{w:"w-72",fw:"w-60",fwPx:240,text:"text-sm",py:"py-2",px:"px-4",mw:288,itemH:36}}}["tight"===Z||"large"===Z?Z:"normal"][d],te=it(),re=`w-full min-w-0 overflow-hidden whitespace-nowrap flex items-center gap-2 rounded-lg ${ee.px} ${ee.py} ${ee.text}`,oe="min-w-0 flex-1 truncate text-left",ae="undefined"!=typeof window?window.innerHeight:800,le="undefined"!=typeof window?window.innerWidth:1280,ie=("top"===l?i:0)+8,se=ae-("bottom"===l?i:0)-8,ce=Math.max(0,se-ie),de=Ye(Q,N,H),ue=()=>clearTimeout(P.current),me=(e,t)=>{const r=t.closest("[data-menu-panel]");if(!r)return{left:0,flipped:!1};const n=0===e?r.getBoundingClientRect().left:N[e-1]?.left??0,o=0===e?r.getBoundingClientRect().right:n+r.offsetWidth,a=e>0&&(N[e-1]?.flipped??!1);return tt(n,o,ee.fwPx,le,4,a)},he=(e,t,r)=>{ue();const n=r.currentTarget,o=n.getBoundingClientRect(),a={key:t,y:o.top+o.height/2,...me(e,n)};C(t=>Qe(t,e,a))},pe=e=>{ue(),P.current=setTimeout(()=>C(t=>Ze(t,e)),200)},ge=/* @__PURE__ */_t("svg",{className:"h-3.5 w-3.5 shrink-0 ml-auto text-gray-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8.25 4.5l7.5 7.5-7.5 7.5"})}),fe=(e,t)=>{if(!Ie(e,w))return null;if(0===z(e).length)return null;const r=q===e.label;/* @__PURE__ */
218
218
  return St("div",{onMouseEnter:t=>he(0,e.label,t),children:[
219
- /* @__PURE__ */St("button",{"aria-label":Xr(e),className:`${re} transition-colors ${r?"bg-blue-50 text-blue-700":"text-gray-700 hover:bg-blue-50 hover:text-blue-700"}`,children:[X(e.label),
219
+ /* @__PURE__ */St("button",{"aria-label":Yr(e),className:`${re} transition-colors ${r?"bg-blue-50 text-blue-700":"text-gray-700 hover:bg-blue-50 hover:text-blue-700"}`,children:[Y(e.label),
220
220
  /* @__PURE__ */_t(qr,{entry:e,className:`${oe} ${t?"font-medium":""}`}),ge]}),e.dividerAfter&&/* @__PURE__ */_t("div",{className:"border-t border-white/20 my-1.5 mx-2"})]},e.label)},ye=e=>{if(0===e.items.length)return null;const t=q===e.label;/* @__PURE__ */
221
- return _t("div",{onMouseEnter:t=>he(0,e.label,t),children:/* @__PURE__ */St("button",{"aria-label":Xr(e),className:`${re} transition-colors ${t?"bg-blue-50 text-blue-700":"text-gray-700 hover:bg-blue-50 hover:text-blue-700"}`,children:[
221
+ return _t("div",{onMouseEnter:t=>he(0,e.label,t),children:/* @__PURE__ */St("button",{"aria-label":Yr(e),className:`${re} transition-colors ${t?"bg-blue-50 text-blue-700":"text-gray-700 hover:bg-blue-50 hover:text-blue-700"}`,children:[
222
222
  /* @__PURE__ */_t("span",{className:"shrink-0",children:e.icon}),
223
223
  /* @__PURE__ */_t(qr,{entry:e,className:oe}),ge]})},e.label)};
224
224
  /* @__PURE__ */
@@ -227,19 +227,19 @@ return St("div",{ref:E,className:"fixed z-[1100]",style:U,children:[
227
227
  /* @__PURE__ */St("div",{"data-menu-panel":!0,className:`${ee.w} rounded-2xl flex ${D?"flex-col-reverse":"flex-col"} overflow-hidden`,style:{animation:"menu-in 0.15s ease-out",...te},onMouseEnter:()=>pe(0),onMouseLeave:()=>pe(0),children:[
228
228
  /* @__PURE__ */_t("div",{className:"px-3 "+(D?"pb-3 pt-2 border-t border-white/20":"pt-3 pb-2"),onMouseEnter:()=>pe(0),children:/* @__PURE__ */St("div",{className:`flex items-center gap-2 ${lt} rounded-lg px-2.5 py-1.5`,children:[
229
229
  /* @__PURE__ */_t("svg",{className:"h-3.5 w-3.5 text-gray-400 shrink-0",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z"})}),
230
- /* @__PURE__ */_t("input",{value:M,onChange:e=>{S(e.target.value),C([]),L(0)},onKeyDown:e=>{M.length>=2&&K.length>0&&("ArrowDown"===e.key?(e.preventDefault(),L(e=>Math.min(e+1,K.length-1))):"ArrowUp"===e.key?(e.preventDefault(),L(e=>Math.max(e-1,0))):"Enter"===e.key&&(e.preventDefault(),I(K[_])))},placeholder:"Search...",className:"flex-1 bg-transparent text-xs outline-none placeholder-gray-400",autoFocus:!0})]})}),M.length>=2?/* @__PURE__ */_t("div",{className:"flex-1 overflow-y-auto overflow-x-hidden px-1 pb-2 max-h-[400px]",children:0===K.length?/* @__PURE__ */_t("p",{className:"text-xs text-gray-400 text-center py-4",children:"No results"}):K.map((e,t)=>/* @__PURE__ */St("button",{onClick:()=>I(e),onMouseEnter:()=>L(t),"aria-label":Xr(e),className:`${re} transition-colors ${t===_?"bg-blue-50 text-blue-700":"text-gray-700 hover:bg-blue-50 hover:text-blue-700"}`,children:[Y(e.to),
231
- /* @__PURE__ */_t(qr,{entry:e,className:oe}),e.section&&/* @__PURE__ */_t("span",{className:"max-w-[40%] shrink-0 truncate text-[10px] text-gray-400 ml-auto",children:e.section})]},t))}):/* @__PURE__ */St("div",{className:"flex-1 overflow-y-auto overflow-x-hidden px-1 pb-1 flex flex-col",children:[D&&/* @__PURE__ */St(Lt,{children:[v.map(e=>/* @__PURE__ */St("button",{onClick:()=>I(e),onMouseEnter:()=>pe(0),"aria-label":Xr(e),className:`${re} text-gray-700 hover:bg-blue-50 hover:text-blue-700 transition-colors`,children:[Y(e.to),
230
+ /* @__PURE__ */_t("input",{value:M,onChange:e=>{S(e.target.value),C([]),L(0)},onKeyDown:e=>{M.length>=2&&K.length>0&&("ArrowDown"===e.key?(e.preventDefault(),L(e=>Math.min(e+1,K.length-1))):"ArrowUp"===e.key?(e.preventDefault(),L(e=>Math.max(e-1,0))):"Enter"===e.key&&(e.preventDefault(),I(K[_])))},placeholder:"Search...",className:"flex-1 bg-transparent text-xs outline-none placeholder-gray-400",autoFocus:!0})]})}),M.length>=2?/* @__PURE__ */_t("div",{className:"flex-1 overflow-y-auto overflow-x-hidden px-1 pb-2 max-h-[400px]",children:0===K.length?/* @__PURE__ */_t("p",{className:"text-xs text-gray-400 text-center py-4",children:"No results"}):K.map((e,t)=>/* @__PURE__ */St("button",{onClick:()=>I(e),onMouseEnter:()=>L(t),"aria-label":Yr(e),className:`${re} transition-colors ${t===_?"bg-blue-50 text-blue-700":"text-gray-700 hover:bg-blue-50 hover:text-blue-700"}`,children:[X(e.to),
231
+ /* @__PURE__ */_t(qr,{entry:e,className:oe}),e.section&&/* @__PURE__ */_t("span",{className:"max-w-[40%] shrink-0 truncate text-[10px] text-gray-400 ml-auto",children:e.section})]},t))}):/* @__PURE__ */St("div",{className:"flex-1 overflow-y-auto overflow-x-hidden px-1 pb-1 flex flex-col",children:[D&&/* @__PURE__ */St(Lt,{children:[v.map(e=>/* @__PURE__ */St("button",{onClick:()=>I(e),onMouseEnter:()=>pe(0),"aria-label":Yr(e),className:`${re} text-gray-700 hover:bg-blue-50 hover:text-blue-700 transition-colors`,children:[X(e.to),
232
232
  /* @__PURE__ */_t(qr,{entry:e,className:oe})]},e.to)),W.map(e=>fe(e,!1)),(W.length>0||v.length>0)&&/* @__PURE__ */_t("div",{className:"border-t border-white/20 my-1.5 mx-2"}),B.map(e=>fe(e,!0)),B.length>0&&F&&/* @__PURE__ */_t("div",{className:"border-t border-white/20 my-1.5 mx-2"}),j.map(e=>/* @__PURE__ */St("div",{onMouseEnter:()=>pe(0),children:[
233
- /* @__PURE__ */St("button",{onClick:()=>I(e),"aria-label":Xr(e),className:`${re} text-gray-700 hover:bg-blue-50 hover:text-blue-700 transition-colors`,children:[Y(e.to),
233
+ /* @__PURE__ */St("button",{onClick:()=>I(e),"aria-label":Yr(e),className:`${re} text-gray-700 hover:bg-blue-50 hover:text-blue-700 transition-colors`,children:[X(e.to),
234
234
  /* @__PURE__ */_t(qr,{entry:e,className:oe})]}),e.dividerAfter&&/* @__PURE__ */_t("div",{className:"border-t border-white/20 my-1.5 mx-2"})]},e.to)),R.map(e=>fe(e,!1)),b.map(e=>ye(e))]}),!D&&/* @__PURE__ */St(Lt,{children:[j.map(e=>/* @__PURE__ */St("div",{onMouseEnter:()=>pe(0),children:[
235
- /* @__PURE__ */St("button",{onClick:()=>I(e),"aria-label":Xr(e),className:`${re} text-gray-700 hover:bg-blue-50 hover:text-blue-700 transition-colors`,children:[Y(e.to),
236
- /* @__PURE__ */_t(qr,{entry:e,className:oe})]}),e.dividerAfter&&/* @__PURE__ */_t("div",{className:"border-t border-white/20 my-1.5 mx-2"})]},e.to)),R.map(e=>fe(e,!1)),b.map(e=>ye(e)),F&&B.length>0&&/* @__PURE__ */_t("div",{className:"border-t border-white/20 my-1.5 mx-2"}),B.map(e=>fe(e,!0)),(W.length>0||v.length>0)&&/* @__PURE__ */_t("div",{className:"border-t border-white/20 my-1.5 mx-2"}),W.map(e=>fe(e,!1)),v.map(e=>/* @__PURE__ */St("button",{onClick:()=>I(e),onMouseEnter:()=>pe(0),"aria-label":Xr(e),className:`${re} text-gray-700 hover:bg-blue-50 hover:text-blue-700 transition-colors`,children:[Y(e.to),
235
+ /* @__PURE__ */St("button",{onClick:()=>I(e),"aria-label":Yr(e),className:`${re} text-gray-700 hover:bg-blue-50 hover:text-blue-700 transition-colors`,children:[X(e.to),
236
+ /* @__PURE__ */_t(qr,{entry:e,className:oe})]}),e.dividerAfter&&/* @__PURE__ */_t("div",{className:"border-t border-white/20 my-1.5 mx-2"})]},e.to)),R.map(e=>fe(e,!1)),b.map(e=>ye(e)),F&&B.length>0&&/* @__PURE__ */_t("div",{className:"border-t border-white/20 my-1.5 mx-2"}),B.map(e=>fe(e,!0)),(W.length>0||v.length>0)&&/* @__PURE__ */_t("div",{className:"border-t border-white/20 my-1.5 mx-2"}),W.map(e=>fe(e,!1)),v.map(e=>/* @__PURE__ */St("button",{onClick:()=>I(e),onMouseEnter:()=>pe(0),"aria-label":Yr(e),className:`${re} text-gray-700 hover:bg-blue-50 hover:text-blue-700 transition-colors`,children:[X(e.to),
237
237
  /* @__PURE__ */_t(qr,{entry:e,className:oe})]},e.to))]})]}),
238
238
  /* @__PURE__ */_t("div",{className:(D?"border-b":"border-t")+" border-white/20 p-1",onMouseEnter:()=>pe(0),children:/* @__PURE__ */St("div",{onClick:()=>$("/profile"),className:"rounded-lg px-2 py-1.5 flex items-center gap-2.5 hover:bg-blue-50 hover:text-blue-700 transition-colors cursor-pointer",children:[n?.avatar_url?/* @__PURE__ */_t("img",{src:n.avatar_url,alt:"",className:"h-8 w-8 rounded-full object-cover border border-white/20 shrink-0"}):/* @__PURE__ */_t("div",{className:"h-8 w-8 rounded-full bg-blue-100 flex items-center justify-center text-sm font-bold text-blue-700 shrink-0",children:(n?.first_name?.charAt(0)||o?.email?.charAt(0)||"?").toUpperCase()}),
239
239
  /* @__PURE__ */_t("p",{className:"flex-1 min-w-0 text-sm font-medium text-gray-900 truncate",children:n?.first_name?`${n.first_name} ${n.last_name||""}`.trim():o?.email}),
240
240
  /* @__PURE__ */_t("button",{onClick:e=>{e.stopPropagation(),t(),a()},title:"Sign Out",className:"shrink-0 p-1.5 rounded-md text-gray-500 hover:text-red-600 hover:bg-red-50 transition-colors",children:/* @__PURE__ */_t("svg",{className:"h-5 w-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15.75 9V5.25A2.25 2.25 0 0013.5 3h-6a2.25 2.25 0 00-2.25 2.25v13.5A2.25 2.25 0 007.5 21h6a2.25 2.25 0 002.25-2.25V15m3 0l3-3m0 0l-3-3m3 3H9"})})})]})})]}),M.length<2&&de.map((e,t)=>/* @__PURE__ */_t(Gr,{left:N[t].left,anchorY:N[t].y,estHeight:e.length*ee.itemH+12,minTop:ie,maxBottom:se,flipped:N[t].flipped,className:ee.fw,style:te,onMouseEnter:()=>pe(t+1),onMouseLeave:()=>pe(t),children:/* @__PURE__ */_t("div",{className:"py-1 px-1 overflow-y-auto overflow-x-hidden overscroll-contain",style:{maxHeight:ce},children:e.map(e=>{const r=H(e),n=N[t+1]?.key===e.to;/* @__PURE__ */
241
241
  return St("div",{onMouseEnter:r.length>0?r=>he(t+1,e.to,r):()=>pe(t+1),children:[
242
- /* @__PURE__ */St("button",{onClick:r.length>0?r=>he(t+1,e.to,r):()=>I(e),"aria-label":Xr(e),className:`${re} transition-colors ${n?"bg-blue-50 text-blue-700":"text-gray-700 hover:bg-blue-50 hover:text-blue-700"}`,children:[Y(e.to),
242
+ /* @__PURE__ */St("button",{onClick:r.length>0?r=>he(t+1,e.to,r):()=>I(e),"aria-label":Yr(e),className:`${re} transition-colors ${n?"bg-blue-50 text-blue-700":"text-gray-700 hover:bg-blue-50 hover:text-blue-700"}`,children:[X(e.to),
243
243
  /* @__PURE__ */_t(qr,{entry:e,className:oe}),r.length>0&&ge]}),e.dividerAfter&&/* @__PURE__ */_t("div",{className:"border-t border-white/20 my-1.5 mx-2"})]},e.to)})})},`${t}:${N[t].key}`))]}),
244
244
  /* @__PURE__ */_t("style",{children:"\n @keyframes menu-in { from { opacity: 0; transform: scale(0.95) translateY(8px); } to { opacity: 1; transform: scale(1) translateY(0); } }\n @keyframes submenu-in { from { opacity: 0; transform: translateX(-4px); } to { opacity: 1; transform: translateX(0); } }\n @keyframes submenu-in-left { from { opacity: 0; transform: translateX(4px); } to { opacity: 1; transform: translateX(0); } }\n "})]})}function Qr({productName:e,productIcon:t,adaptiveLogo:r=!1,logoHasAlpha:n=null,logoIsLight:o=null,config:a,wallpaperStyle:l}){const i=!!a?.url,s=a?.heading??(i?`Continue in the ${e} app`:`${e} works best on desktop`),c=a?.description??(i?"This experience is built for the mobile app. Open it to continue on your phone.":"Open this page on a larger screen to continue."),d=a?.ctaLabel??"Open the app";/* @__PURE__ */
245
245
  return _t("div",{className:"flex-1 flex items-center justify-center p-6",style:{...l,paddingBottom:"calc(env(safe-area-inset-bottom) + 1.5rem)"},children:/* @__PURE__ */St("div",{className:"w-full max-w-sm rounded-3xl p-8 flex flex-col items-center text-center",style:it(),children:[
@@ -273,20 +273,20 @@ return St("div",{ref:s,className:"fixed z-[400] rounded-2xl py-1 min-w-[180px]",
273
273
  return St(Lt,{children:[
274
274
  /* @__PURE__ */_t("div",{className:t?"w-full px-2 flex flex-wrap items-center justify-center gap-1 shrink-0 max-h-[30vh] overflow-y-auto":"flex items-center gap-1 shrink-0 max-w-[40vw] overflow-x-auto [scrollbar-width:none]",children:e.map(e=>{const t=c(e),r=o[e];/* @__PURE__ */
275
275
  return _t("button",{onClick:()=>a(e),title:t,onContextMenu:r=>{r.preventDefault(),r.stopPropagation(),s({x:r.clientX,y:r.clientY,path:e,label:t})},className:"flex items-center justify-center rounded-lg p-2 border bg-gray-50/40 border-gray-200/40 text-gray-600 hover:bg-gray-200/40 hover:text-gray-800 transition-colors shrink-0",children:r&&xt(r)?wt(r,{className:"h-4 w-4"}):/* @__PURE__ */_t("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3.75 6A2.25 2.25 0 016 3.75h2.25A2.25 2.25 0 0110.5 6v2.25a2.25 2.25 0 01-2.25 2.25H6a2.25 2.25 0 01-2.25-2.25V6zM3.75 15.75A2.25 2.25 0 016 13.5h2.25a2.25 2.25 0 012.25 2.25V18a2.25 2.25 0 01-2.25 2.25H6A2.25 2.25 0 013.75 18v-2.25zM13.5 6a2.25 2.25 0 012.25-2.25H18A2.25 2.25 0 0120.25 6v2.25A2.25 2.25 0 0118 10.5h-2.25a2.25 2.25 0 01-2.25-2.25V6zM13.5 15.75a2.25 2.25 0 012.25-2.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-2.25A2.25 2.25 0 0113.5 18v-2.25z"})})},e)})}),i&&/* @__PURE__ */St(Ve,{portal:!0,minWidth:180,style:(d=i.x,u=i.y,"top"===r?{left:Math.min(d,window.innerWidth-200),top:u+4}:"left"===r?{left:d+4,top:Math.min(u,window.innerHeight-120)}:"right"===r?{right:window.innerWidth-d+4,top:Math.min(u,window.innerHeight-120)}:{left:Math.min(d,window.innerWidth-200),bottom:window.innerHeight-u+4}),onClose:()=>s(null),children:[
276
- /* @__PURE__ */St(Ye,{onClick:()=>{s(null),a(i.path)},children:[(()=>{const e=o[i.path];return e&&xt(e)?wt(e,{className:"h-4 w-4 text-gray-400"}):/* @__PURE__ */_t("span",{className:"w-4"})})(),"Open ",i.label]}),
276
+ /* @__PURE__ */St(Xe,{onClick:()=>{s(null),a(i.path)},children:[(()=>{const e=o[i.path];return e&&xt(e)?wt(e,{className:"h-4 w-4 text-gray-400"}):/* @__PURE__ */_t("span",{className:"w-4"})})(),"Open ",i.label]}),
277
277
  /* @__PURE__ */_t(Ke,{}),
278
- /* @__PURE__ */St(Ye,{danger:!0,onClick:()=>{s(null),l(i.path)},children:[
279
- /* @__PURE__ */_t("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 00-.182.557l1.285 5.385a.562.562 0 01-.84.61l-4.725-2.885a.563.563 0 00-.586 0L6.982 20.54a.562.562 0 01-.84-.61l1.285-5.386a.562.562 0 00-.182-.557l-4.204-3.602a.563.563 0 01.321-.988l5.518-.442a.563.563 0 00.475-.345L11.48 3.5z"})}),"Remove from Favorites"]})]})]});var d,u}function ln({branding:e,productName:t="efficient-shell",productIcon:r="/favicon.svg",wallpapers:n,navSections:o=De,navIcons:a=je,sectionIcons:s=Re,categories:c=$e,notifications:d,search:u,taskbarTrayLeft:m,clockCalendar:h,mobileApp:p,contextMenu:g=!0}={}){const f=e?.productName??t,y=e?.logo??r,b=e?.tagline,x=e?.adaptiveLogo??!1,w=e?.logoHasAlpha??null,v=e?.logoIsLight??null,k=Wr(),{user:N,logout:M,hasAnyPerm:S}=A(),{openPage:_,openEntity:L,openWindows:E}=J(),[P,T]=mt(!1),$=Pe(),I=N||{};l();const{favorites:D,toggle:B,desktopBg:R}=function(e){const{prefs:t,save:r}=Ee(),n=t.favorite_pages||[],o=gt(e=>{const t=n.includes(e)?n.filter(t=>t!==e):[...n,e];r({favorite_pages:t})},[n,r]),a=e&&e.length>0?e:[],l=pt(a.length>0?a[Math.floor(Math.random()*a.length)]:"none"),i=t.desktop_bg||(a.length>0?"random":"none"),s="random"===i?l.current:i,c=gt(e=>{r({desktop_bg:e})},[r]);return{favorites:n,toggle:o,isFavorite:e=>n.includes(e),desktopBg:s,setDesktopBg:c}}(n??k.wallpapers?.map(e=>e.src)),{prefs:W,save:F}=Ee(),z="sidebar"===W.layout_mode?"sidebar":"classic",O="sidebar"===z,H=O?oe:0,V=W.taskbar_position||"bottom",K=O?"bottom":V,U=W.taskbar_size||"medium",Y=W.desktop_dblclick||"deactivate",X="left"===K||"right"===K,q=X?0:"small"===U?42:"large"===U?72:56,G=X?"small"===U?180:"large"===U?260:220:0,Q="small"===U?2:"large"===U?6:4,Z="small"===U?"h-[42px]":"large"===U?"h-[72px]":"h-14",ee="small"===U?"w-[180px]":"large"===U?"w-[260px]":"w-[220px]",te=!!W.reduce_transparency,re=te?1:(W.transparency_taskbar??70)/100,ne=(W.transparency_start_menu??95)/100,ae=(W.transparency_inactive_header??70)/100,le=(W.transparency_inactive_content??80)/100,ie=(W.transparency_active_header??80)/100,se=(W.transparency_active_content??90)/100;ht(()=>{const e=document.documentElement;e.classList.toggle("rosh-reduce-transparency",te),e.style.setProperty("--inactive-header-opacity",String(ae)),e.style.setProperty("--inactive-content-opacity",String(le)),e.style.setProperty("--active-header-opacity",String(ie)),e.style.setProperty("--active-content-opacity",String(se)),e.style.setProperty("--menu-opacity",String(ne)),e.style.setProperty("--taskbar-height",`${q}px`),e.style.setProperty("--taskbar-width",`${G}px`),e.style.setProperty("--taskbar-position",K),e.style.setProperty("--sidebar-width",`${H}px`),e.style.setProperty("--layout-mode",z),window.dispatchEvent(new CustomEvent("react-os-shell:layout-mode-changed")),e.style.setProperty("--default-window-size",W.default_window_size||"large"),e.style.setProperty("--window-position",W.window_position||"cascade"),e.style.setProperty("--menu-density",W.menu_density||"normal");const t={small:{font:"12px",px:"0.75rem",py:"0.25rem",tabW:"150px",tabFont:"11px"},medium:{font:"14px",px:"1rem",py:"0.5rem",tabW:"200px",tabFont:"12px"},large:{font:"15px",px:"1.125rem",py:"0.625rem",tabW:"240px",tabFont:"13px"}},r=t[W.start_menu_size||"medium"]||t.medium;e.style.setProperty("--menu-font-size",r.font),e.style.setProperty("--menu-padding-x",r.px),e.style.setProperty("--menu-padding-y",r.py),e.style.setProperty("--window-tab-width",r.tabW),e.style.setProperty("--window-tab-font-size",r.tabFont)},[te,ae,le,ie,se,q,K,W.default_window_size,W.window_position,W.menu_density,W.start_menu_size,H,z]),ht(()=>{document.documentElement.style.setProperty("--mobile-bottom-nav","0px")},[]);const[ce,de]=mt(!1),[ue,me]=mt(!!document.fullscreenElement),[he,pe]=mt(null),[ge,fe]=mt(!1),ye=gt((e,t)=>{F({[e]:t})},[F]),be=gt(async()=>{if(document.fullscreenElement)navigator.keyboard?.unlock&&navigator.keyboard.unlock(),document.exitFullscreen();else if(await document.documentElement.requestFullscreen(),navigator.keyboard?.lock)try{await navigator.keyboard.lock(["Escape"])}catch{}},[]);ht(()=>{const e=()=>{me(!!document.fullscreenElement),!document.fullscreenElement&&navigator.keyboard?.unlock&&navigator.keyboard.unlock()};return document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)},[]);const xe=pt(!1);ht(()=>{if(!xe.current&&W.auto_fullscreen&&!document.fullscreenElement){xe.current=!0;const e=async()=>{if(!document.fullscreenElement)try{await document.documentElement.requestFullscreen(),navigator.keyboard?.lock&&navigator.keyboard.lock(["Escape"]).catch(()=>{})}catch{}document.removeEventListener("click",e)};document.addEventListener("click",e,{once:!0})}},[W.auto_fullscreen]);const[we,ve]=mt(!1),ke=pt(!1);ht(()=>{if(ke.current)return;ke.current=!0;const e="erp_startup_shown";sessionStorage.getItem(e)||(sessionStorage.setItem(e,"1"),ve(!0))},[]);const Ne=pt(!1);return ht(()=>{!Ne.current&&we&&(Ne.current=!0,setTimeout(()=>C(),500))},[we]),ht(()=>{const e=e=>{if((e.ctrlKey||e.metaKey)&&"."===e.key&&(e.preventDefault(),T(e=>!e)),e.ctrlKey&&"F11"===e.key&&(e.preventDefault(),be()),"Escape"===e.key&&document.fullscreenElement){document.querySelectorAll("[data-modal-panel]").length>0||(e.preventDefault(),be())}};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}},[be]),/* @__PURE__ */St("div",{className:"flex flex-col h-screen",children:[
278
+ /* @__PURE__ */St(Xe,{danger:!0,onClick:()=>{s(null),l(i.path)},children:[
279
+ /* @__PURE__ */_t("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 00-.182.557l1.285 5.385a.562.562 0 01-.84.61l-4.725-2.885a.563.563 0 00-.586 0L6.982 20.54a.562.562 0 01-.84-.61l1.285-5.386a.562.562 0 00-.182-.557l-4.204-3.602a.563.563 0 01.321-.988l5.518-.442a.563.563 0 00.475-.345L11.48 3.5z"})}),"Remove from Favorites"]})]})]});var d,u}function ln({branding:e,productName:t="efficient-shell",productIcon:r="/favicon.svg",wallpapers:n,navSections:o=De,navIcons:a=je,sectionIcons:s=Re,categories:c=$e,notifications:d,search:u,taskbarTrayLeft:m,clockCalendar:h,mobileApp:p,contextMenu:g=!0}={}){const f=e?.productName??t,y=e?.logo??r,b=e?.tagline,x=e?.adaptiveLogo??!1,w=e?.logoHasAlpha??null,v=e?.logoIsLight??null,k=Wr(),{user:N,logout:M,hasAnyPerm:S}=A(),{openPage:_,openEntity:L,openWindows:E}=J(),[P,T]=mt(!1),$=Pe(),I=N||{};l();const{favorites:D,toggle:B,desktopBg:R}=function(e){const{prefs:t,save:r}=Ee(),n=t.favorite_pages||[],o=gt(e=>{const t=n.includes(e)?n.filter(t=>t!==e):[...n,e];r({favorite_pages:t})},[n,r]),a=e&&e.length>0?e:[],l=pt(a.length>0?a[Math.floor(Math.random()*a.length)]:"none"),i=t.desktop_bg||(a.length>0?"random":"none"),s="random"===i?l.current:i,c=gt(e=>{r({desktop_bg:e})},[r]);return{favorites:n,toggle:o,isFavorite:e=>n.includes(e),desktopBg:s,setDesktopBg:c}}(n??k.wallpapers?.map(e=>e.src)),{prefs:W,save:F}=Ee(),z="sidebar"===W.layout_mode?"sidebar":"classic",O="sidebar"===z,H=O?oe:0,V=W.taskbar_position||"bottom",K=O?"bottom":V,U=W.taskbar_size||"medium",X=W.desktop_dblclick||"deactivate",Y="left"===K||"right"===K,q=Y?0:"small"===U?42:"large"===U?72:56,G=Y?"small"===U?180:"large"===U?260:220:0,Q="small"===U?2:"large"===U?6:4,Z="small"===U?"h-[42px]":"large"===U?"h-[72px]":"h-14",ee="small"===U?"w-[180px]":"large"===U?"w-[260px]":"w-[220px]",te=!!W.reduce_transparency,re=te?1:(W.transparency_taskbar??70)/100,ne=(W.transparency_start_menu??95)/100,ae=(W.transparency_inactive_header??70)/100,le=(W.transparency_inactive_content??80)/100,ie=(W.transparency_active_header??80)/100,se=(W.transparency_active_content??90)/100;ht(()=>{const e=document.documentElement;e.classList.toggle("rosh-reduce-transparency",te),e.style.setProperty("--inactive-header-opacity",String(ae)),e.style.setProperty("--inactive-content-opacity",String(le)),e.style.setProperty("--active-header-opacity",String(ie)),e.style.setProperty("--active-content-opacity",String(se)),e.style.setProperty("--menu-opacity",String(ne)),e.style.setProperty("--taskbar-height",`${q}px`),e.style.setProperty("--taskbar-width",`${G}px`),e.style.setProperty("--taskbar-position",K),e.style.setProperty("--sidebar-width",`${H}px`),e.style.setProperty("--layout-mode",z),window.dispatchEvent(new CustomEvent("react-os-shell:layout-mode-changed")),e.style.setProperty("--default-window-size",W.default_window_size||"large"),e.style.setProperty("--window-position",W.window_position||"cascade"),e.style.setProperty("--menu-density",W.menu_density||"normal");const t={small:{font:"12px",px:"0.75rem",py:"0.25rem",tabW:"150px",tabFont:"11px"},medium:{font:"14px",px:"1rem",py:"0.5rem",tabW:"200px",tabFont:"12px"},large:{font:"15px",px:"1.125rem",py:"0.625rem",tabW:"240px",tabFont:"13px"}},r=t[W.start_menu_size||"medium"]||t.medium;e.style.setProperty("--menu-font-size",r.font),e.style.setProperty("--menu-padding-x",r.px),e.style.setProperty("--menu-padding-y",r.py),e.style.setProperty("--window-tab-width",r.tabW),e.style.setProperty("--window-tab-font-size",r.tabFont)},[te,ae,le,ie,se,q,K,W.default_window_size,W.window_position,W.menu_density,W.start_menu_size,H,z]),ht(()=>{document.documentElement.style.setProperty("--mobile-bottom-nav","0px")},[]);const[ce,de]=mt(!1),[ue,me]=mt(!!document.fullscreenElement),[he,pe]=mt(null),[ge,fe]=mt(!1),ye=gt((e,t)=>{F({[e]:t})},[F]),be=gt(async()=>{if(document.fullscreenElement)navigator.keyboard?.unlock&&navigator.keyboard.unlock(),document.exitFullscreen();else if(await document.documentElement.requestFullscreen(),navigator.keyboard?.lock)try{await navigator.keyboard.lock(["Escape"])}catch{}},[]);ht(()=>{const e=()=>{me(!!document.fullscreenElement),!document.fullscreenElement&&navigator.keyboard?.unlock&&navigator.keyboard.unlock()};return document.addEventListener("fullscreenchange",e),()=>document.removeEventListener("fullscreenchange",e)},[]);const xe=pt(!1);ht(()=>{if(!xe.current&&W.auto_fullscreen&&!document.fullscreenElement){xe.current=!0;const e=async()=>{if(!document.fullscreenElement)try{await document.documentElement.requestFullscreen(),navigator.keyboard?.lock&&navigator.keyboard.lock(["Escape"]).catch(()=>{})}catch{}document.removeEventListener("click",e)};document.addEventListener("click",e,{once:!0})}},[W.auto_fullscreen]);const[we,ve]=mt(!1),ke=pt(!1);ht(()=>{if(ke.current)return;ke.current=!0;const e="erp_startup_shown";sessionStorage.getItem(e)||(sessionStorage.setItem(e,"1"),ve(!0))},[]);const Ne=pt(!1);return ht(()=>{!Ne.current&&we&&(Ne.current=!0,setTimeout(()=>C(),500))},[we]),ht(()=>{const e=e=>{if((e.ctrlKey||e.metaKey)&&"."===e.key&&(e.preventDefault(),T(e=>!e)),e.ctrlKey&&"F11"===e.key&&(e.preventDefault(),be()),"Escape"===e.key&&document.fullscreenElement){document.querySelectorAll("[data-modal-panel]").length>0||(e.preventDefault(),be())}};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}},[be]),/* @__PURE__ */St("div",{className:"flex flex-col h-screen",children:[
280
280
  /* @__PURE__ */_t(Kr,{}),we&&/* @__PURE__ */_t(Or,{onComplete:()=>ve(!1),ready:!!I,productName:f,logo:y,subtitle:b,adaptiveLogo:x,logoHasAlpha:w,logoIsLight:v}),ge&&/* @__PURE__ */_t(Hr,{onComplete:()=>{sessionStorage.removeItem("erp_startup_shown"),M()},logo:y,subtitle:b,adaptiveLogo:x,logoHasAlpha:w,logoIsLight:v}),!O&&/* @__PURE__ */_t(Jr,{open:P,onClose:()=>T(!1),openPage:e=>{_(e),T(!1)},openWindows:E,profile:I,user:N,onLogout:()=>fe(!0),onNavigate:e=>{_(e),T(!1)},taskbarPosition:K,taskbarH:q,taskbarW:G,taskbarGap:Q,size:W.start_menu_size||"medium",navSections:o,navIcons:a,sectionIcons:s,categories:c}),O&&/* @__PURE__ */_t(vt,{fallback:null,children:/* @__PURE__ */_t(Zr,{width:H,openPage:e=>_(e),profile:I,user:N,onLogout:()=>fe(!0),onNavigate:e=>_(e),navSections:o,navIcons:a,sectionIcons:s,categories:c,productName:f,productIcon:y,adaptiveLogo:x,logoHasAlpha:w,logoIsLight:v})}),(()=>{const e={backgroundColor:R?.startsWith("#")?R:"none"===R?(()=>{const e=getComputedStyle(document.documentElement).getPropertyValue("--custom-bg-color")?.trim();if(e)return e;return{light:"#f3f4f6",dark:"#1e1e2e",pink:"#fdf2f8",green:"#f0fdf4",grey:"#d1d5db",blue:"#eff6ff"}[document.documentElement.getAttribute("data-theme")||"light"]||"#f3f4f6"})():"#1a1a2e",backgroundImage:R&&"none"!==R&&!R.startsWith("#")?`url(${R})`:"none",backgroundSize:"cover",backgroundPosition:"center",backgroundRepeat:"no-repeat"};return $?/* @__PURE__ */_t(Qr,{productName:f,productIcon:y,adaptiveLogo:x,logoHasAlpha:w,logoIsLight:v,config:p,wallpaperStyle:e}):/* @__PURE__ */St(Lt,{children:[
281
- /* @__PURE__ */_t("div",{className:"flex flex-1 min-h-0",children:/* @__PURE__ */_t("main",{className:"flex-1 flex flex-col overflow-hidden cursor-default",onDoubleClick:()=>{"deactivate"===Y&&(T(!1),window.dispatchEvent(new CustomEvent("deactivate-all-modals")))},style:e,children:/* @__PURE__ */_t(zr,{profile:I})})}),
282
- /* @__PURE__ */St("div",{className:"flex backdrop-blur-sm border-gray-200 z-[250] fixed "+(X?`flex-col items-center ${ee} py-3 gap-2 top-0 bottom-0 ${"left"===K?"left-0 border-r":"right-0 border-l"}`:`items-center ${Z} px-3 gap-2 right-0 ${"top"===K?"top-0 border-b":"bottom-0 border-t"}`),style:{backgroundColor:`rgb(var(--taskbar-bg-rgb, 243 244 246) / ${re})`,...X?{}:{left:H}},"data-taskbar-dropzone":!0,onContextMenu:e=>{e.preventDefault(),pe({x:e.clientX,y:e.clientY})},children:[!O&&/* @__PURE__ */St("div",{className:"relative shrink-0",children:[0===E.length&&!P&&!ce&&/* @__PURE__ */St("div",{className:"absolute left-1/2 -translate-x-1/2 whitespace-nowrap text-white text-[10px] font-medium pl-3 pr-2 py-1 rounded-full shadow-lg animate-bounce flex items-center gap-1 "+("top"===K?"top-full mt-2":"-top-8"),style:{backgroundColor:"var(--accent-600, #7c3aed)"},children:["Click here to start",
281
+ /* @__PURE__ */_t("div",{className:"flex flex-1 min-h-0",children:/* @__PURE__ */_t("main",{className:"flex-1 flex flex-col overflow-hidden cursor-default",onDoubleClick:()=>{"deactivate"===X&&(T(!1),window.dispatchEvent(new CustomEvent("deactivate-all-modals")))},style:e,children:/* @__PURE__ */_t(zr,{profile:I})})}),
282
+ /* @__PURE__ */St("div",{className:"flex backdrop-blur-sm border-gray-200 z-[250] fixed "+(Y?`flex-col items-center ${ee} py-3 gap-2 top-0 bottom-0 ${"left"===K?"left-0 border-r":"right-0 border-l"}`:`items-center ${Z} px-3 gap-2 right-0 ${"top"===K?"top-0 border-b":"bottom-0 border-t"}`),style:{backgroundColor:`rgb(var(--taskbar-bg-rgb, 243 244 246) / ${re})`,...Y?{}:{left:H}},"data-taskbar-dropzone":!0,onContextMenu:e=>{e.preventDefault(),pe({x:e.clientX,y:e.clientY})},children:[!O&&/* @__PURE__ */St("div",{className:"relative shrink-0",children:[0===E.length&&!P&&!ce&&/* @__PURE__ */St("div",{className:"absolute left-1/2 -translate-x-1/2 whitespace-nowrap text-white text-[10px] font-medium pl-3 pr-2 py-1 rounded-full shadow-lg animate-bounce flex items-center gap-1 "+("top"===K?"top-full mt-2":"-top-8"),style:{backgroundColor:"var(--accent-600, #7c3aed)"},children:["Click here to start",
283
283
  /* @__PURE__ */_t("button",{onClick:e=>{e.stopPropagation(),de(!0)},className:"text-white/60 hover:text-white ml-1.5",children:/* @__PURE__ */_t("svg",{className:"h-3 w-3",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})}),
284
284
  /* @__PURE__ */_t("div",{className:"absolute left-1/2 -translate-x-1/2 border-[6px] border-transparent "+("top"===K?"bottom-full border-b-[var(--accent-color,#7c3aed)]":"top-full border-t-[var(--accent-color,#7c3aed)]"),style:"top"===K?{borderBottomColor:"var(--accent-600, #7c3aed)"}:{borderTopColor:"var(--accent-600, #7c3aed)"}})]}),
285
- /* @__PURE__ */St("button",{"data-menu-toggle":!0,onClick:()=>T(e=>!e),title:P?"Close menu":"Open menu",className:`group/erp relative flex items-center justify-center gap-1.5 rounded-lg px-4 py-2 text-xs font-medium border overflow-hidden transition-all ${X?"w-full":"min-w-[140px]"} ${P?"bg-gray-200/40 border-gray-300/40 text-gray-800":"bg-gray-50/40 border-gray-200/40 text-gray-600 hover:text-gray-800"}`,style:{transition:"box-shadow 0.3s, border-color 0.3s"},onMouseMove:e=>{const t=e.currentTarget.getBoundingClientRect();e.currentTarget.style.setProperty("--mx",e.clientX-t.left+"px"),e.currentTarget.style.setProperty("--my",e.clientY-t.top+"px")},onMouseEnter:e=>{e.currentTarget.style.boxShadow="0 0 15px rgba(255,255,255,0.2), 0 0 30px rgba(255,255,255,0.1)",e.currentTarget.style.borderColor="rgba(255,255,255,0.4)"},onMouseLeave:e=>{e.currentTarget.style.boxShadow="",e.currentTarget.style.borderColor=""},children:[
285
+ /* @__PURE__ */St("button",{"data-menu-toggle":!0,onClick:()=>T(e=>!e),title:P?"Close menu":"Open menu",className:`group/erp relative flex items-center justify-center gap-1.5 rounded-lg px-4 py-2 text-xs font-medium border overflow-hidden transition-all ${Y?"w-full":"min-w-[140px]"} ${P?"bg-gray-200/40 border-gray-300/40 text-gray-800":"bg-gray-50/40 border-gray-200/40 text-gray-600 hover:text-gray-800"}`,style:{transition:"box-shadow 0.3s, border-color 0.3s"},onMouseMove:e=>{const t=e.currentTarget.getBoundingClientRect();e.currentTarget.style.setProperty("--mx",e.clientX-t.left+"px"),e.currentTarget.style.setProperty("--my",e.clientY-t.top+"px")},onMouseEnter:e=>{e.currentTarget.style.boxShadow="0 0 15px rgba(255,255,255,0.2), 0 0 30px rgba(255,255,255,0.1)",e.currentTarget.style.borderColor="rgba(255,255,255,0.4)"},onMouseLeave:e=>{e.currentTarget.style.boxShadow="",e.currentTarget.style.borderColor=""},children:[
286
286
  /* @__PURE__ */_t("span",{className:"absolute inset-0 opacity-0 group-hover/erp:opacity-100 transition-opacity duration-200 pointer-events-none",style:{background:"radial-gradient(circle 60px at var(--mx, 50%) var(--my, 50%), rgba(255,255,255,0.25) 0%, transparent 100%)"}}),y&&/* @__PURE__ */_t(j,{src:y,alt:"",slot:"compact",surface:"light",adaptive:x,hasAlpha:w,isLight:v,size:14,decorative:!0,className:"relative z-10 opacity-60"}),
287
- /* @__PURE__ */_t("span",{className:"relative z-10 truncate",children:f})]})]}),!O&&/* @__PURE__ */_t(an,{favorites:D,vertical:X,taskbarPosition:K,navSections:o,navIcons:a,onOpen:e=>_(e),onToggleFavorite:B}),!O&&/* @__PURE__ */_t("div",{className:X?"h-px w-6 bg-gray-300 my-1":"w-px h-6 bg-gray-300 mx-1"}),
288
- /* @__PURE__ */_t("div",{id:"taskbar-windows",className:"flex-1 flex "+(X?"flex-col items-center gap-1 min-h-0 overflow-y-auto w-full":"items-center gap-1.5 min-w-0 overflow-x-auto")}),
289
- /* @__PURE__ */_t("div",{className:X?"h-px w-6 bg-gray-300 my-1":"w-px h-6 bg-gray-300 mx-1"}),X?
287
+ /* @__PURE__ */_t("span",{className:"relative z-10 truncate",children:f})]})]}),!O&&/* @__PURE__ */_t(an,{favorites:D,vertical:Y,taskbarPosition:K,navSections:o,navIcons:a,onOpen:e=>_(e),onToggleFavorite:B}),!O&&/* @__PURE__ */_t("div",{className:Y?"h-px w-6 bg-gray-300 my-1":"w-px h-6 bg-gray-300 mx-1"}),
288
+ /* @__PURE__ */_t("div",{id:"taskbar-windows",className:"flex-1 flex "+(Y?"flex-col items-center gap-1 min-h-0 overflow-y-auto w-full":"items-center gap-1.5 min-w-0 overflow-x-auto")}),
289
+ /* @__PURE__ */_t("div",{className:Y?"h-px w-6 bg-gray-300 my-1":"w-px h-6 bg-gray-300 mx-1"}),Y?
290
290
  /* @__PURE__ */_t("div",{className:"w-full px-2",children:/* @__PURE__ */St("div",{className:"flex items-center justify-center gap-2 "+("right"===K?"flex-row-reverse":""),children:[
291
291
  /* @__PURE__ */_t(tn,{clockCalendar:h}),
292
292
  /* @__PURE__ */_t(en,{}),m,d&&/* @__PURE__ */_t(qt,{...d,popDirection:"right"===K?"left":"right"})]})}):
@@ -295,7 +295,7 @@ return _t("button",{onClick:()=>a(e),title:t,onContextMenu:r=>{r.preventDefault(
295
295
  /* @__PURE__ */_t(tn,{clockCalendar:h})]})]})]})})(),he&&/* @__PURE__ */_t(on,{x:he.x,y:he.y,position:K,size:U,onChangePosition:e=>{ye("taskbar_position",e),pe(null)},onChangeSize:e=>{ye("taskbar_size",e),pe(null)},onClose:()=>pe(null),onReportBug:k.onReportBug}),
296
296
  /* @__PURE__ */_t(i,{...u,onSelect:e=>L(e.entity_type,e.entity_id,void 0,e.label)}),
297
297
  /* @__PURE__ */_t(Ft,{}),
298
- /* @__PURE__ */_t(Yt,{disabled:!g})]})}var sn=[{key:"system",label:"System",bar1:"bg-[#e5e7eb]",bar2:"bg-[#e5e7eb]"},{key:"light",label:"Light",bar1:"bg-[#e5e7eb]",bar2:"bg-[#e5e7eb]"},{key:"dark",label:"Dark",bar1:"bg-[#45475a]",bar2:"bg-[#45475a]"},{key:"pink",label:"Blossom",bar1:"bg-[#fbcfe8]",bar2:"bg-[#fbcfe8]"},{key:"green",label:"Nature",bar1:"bg-[#bbf7d0]",bar2:"bg-[#bbf7d0]"},{key:"grey",label:"Quicksilver",bar1:"bg-[#d1d5db]",bar2:"bg-[#d1d5db]"},{key:"blue",label:"Ocean",bar1:"bg-[#bfdbfe]",bar2:"bg-[#bfdbfe]"}],cn=[];function dn(){const e=/* @__PURE__ */new Date;return`v${String(e.getDate()).padStart(2,"0")}${String(e.getMonth()+1).padStart(2,"0")}.${String(e.getHours()).padStart(2,"0")}.${String(e.getMinutes()).padStart(2,"0")}.${e.getFullYear()}`}function un(e,t,r,n,o,a,l){return"dark"===e?r:"pink"===e?n:"green"===e?o:"grey"===e?a??t:"blue"===e?l??t:t}function mn({omit:e,section:t}={}){const r=new Set(e??[]),n=e=>void 0===t||t===e,o=Wr(),a=o.wallpapers&&o.wallpapers.length>0?o.wallpapers:cn,{prefs:l,save:i}=Ee(),[c,d]=mt({}),u=e=>e in c?c[e]:l[e];ht(()=>{d(e=>{const t={};let r=!1;for(const n of Object.keys(e))l[n]===e[n]?r=!0:t[n]=e[n];return r?t:e})},[l]);const m=["theme","accent_color","custom_bg_color","custom_title_color","custom_window_color","custom_button_color"],h=e=>{const t={...e};for(const e of m)e in t||(t[e]=u(e));y(t),d(t=>({...t,...e})),i(e)},p=u("theme")||"system",g=s(p),f=l.desktop_bg||(a.length>0?"random":"none"),b=pt(a.length>0?a[Math.floor(Math.random()*a.length)].src:"none"),x="random"===f?b.current:f,w=l.desktop_bg_custom||"",v=x?.startsWith("#"),k=/* @__PURE__ */new Set([...a.map(e=>e.src),"random"]),N=!v&&"none"!==x&&"random"!==f&&x&&!k.has(x),C=(e,t)=>{i({[e]:t})},M=!!u("reduce_transparency"),[S,_]=mt({}),L=pt({}),E=gt((e,t)=>{_(r=>({...r,[e]:t}));const r={transparency_taskbar:"--taskbar-opacity",transparency_inactive_header:"--inactive-header-opacity",transparency_inactive_content:"--inactive-content-opacity",transparency_active_header:"--active-header-opacity",transparency_active_content:"--active-content-opacity"};r[e]&&document.documentElement.style.setProperty(r[e],String(t/100)),L.current[e]&&clearTimeout(L.current[e]),L.current[e]=setTimeout(()=>{C(e,t),_(t=>{const r={...t};return delete r[e],r})},300)},[C]);ht(()=>()=>{Object.values(L.current).forEach(clearTimeout)},[]);const P=(l.transparency_taskbar??70)/100,T=(l.transparency_active_header??80)/100,$=(l.transparency_active_content??90)/100,I=un(g,"bg-white/90","bg-[#1e1e2e]/90","bg-pink-50/90","bg-green-50/90","bg-gray-200/90","bg-blue-50/90"),D=un(g,"bg-gray-200","bg-[#313244]","bg-pink-200","bg-green-200","bg-gray-400","bg-blue-200"),A=un(g,"bg-white border border-gray-200","bg-[#1e1e2e] border border-[#45475a]","bg-white border border-pink-200","bg-white border border-green-200","bg-gray-100 border border-gray-300","bg-blue-50 border border-blue-200"),j=un(g,"bg-gray-100","bg-[#313244]","bg-pink-50","bg-green-50","bg-gray-300","bg-blue-100"),B=un(g,"bg-blue-600","bg-blue-500","bg-pink-600","bg-green-600","bg-gray-700","bg-blue-700");/* @__PURE__ */
298
+ /* @__PURE__ */_t(Xt,{disabled:!g})]})}var sn=[{key:"system",label:"System",bar1:"bg-[#e5e7eb]",bar2:"bg-[#e5e7eb]"},{key:"light",label:"Light",bar1:"bg-[#e5e7eb]",bar2:"bg-[#e5e7eb]"},{key:"dark",label:"Dark",bar1:"bg-[#45475a]",bar2:"bg-[#45475a]"},{key:"pink",label:"Blossom",bar1:"bg-[#fbcfe8]",bar2:"bg-[#fbcfe8]"},{key:"green",label:"Nature",bar1:"bg-[#bbf7d0]",bar2:"bg-[#bbf7d0]"},{key:"grey",label:"Quicksilver",bar1:"bg-[#d1d5db]",bar2:"bg-[#d1d5db]"},{key:"blue",label:"Ocean",bar1:"bg-[#bfdbfe]",bar2:"bg-[#bfdbfe]"}],cn=[];function dn(){const e=/* @__PURE__ */new Date;return`v${String(e.getDate()).padStart(2,"0")}${String(e.getMonth()+1).padStart(2,"0")}.${String(e.getHours()).padStart(2,"0")}.${String(e.getMinutes()).padStart(2,"0")}.${e.getFullYear()}`}function un(e,t,r,n,o,a,l){return"dark"===e?r:"pink"===e?n:"green"===e?o:"grey"===e?a??t:"blue"===e?l??t:t}function mn({omit:e,section:t}={}){const r=new Set(e??[]),n=e=>void 0===t||t===e,o=Wr(),a=o.wallpapers&&o.wallpapers.length>0?o.wallpapers:cn,{prefs:l,save:i}=Ee(),[c,d]=mt({}),u=e=>e in c?c[e]:l[e];ht(()=>{d(e=>{const t={};let r=!1;for(const n of Object.keys(e))l[n]===e[n]?r=!0:t[n]=e[n];return r?t:e})},[l]);const m=["theme","accent_color","custom_bg_color","custom_title_color","custom_window_color","custom_button_color"],h=e=>{const t={...e};for(const e of m)e in t||(t[e]=u(e));y(t),d(t=>({...t,...e})),i(e)},p=u("theme")||"system",g=s(p),f=l.desktop_bg||(a.length>0?"random":"none"),b=pt(a.length>0?a[Math.floor(Math.random()*a.length)].src:"none"),x="random"===f?b.current:f,w=l.desktop_bg_custom||"",v=x?.startsWith("#"),k=/* @__PURE__ */new Set([...a.map(e=>e.src),"random"]),N=!v&&"none"!==x&&"random"!==f&&x&&!k.has(x),C=(e,t)=>{i({[e]:t})},M=!!u("reduce_transparency"),[S,_]=mt({}),L=pt({}),E=gt((e,t)=>{_(r=>({...r,[e]:t}));const r={transparency_taskbar:"--taskbar-opacity",transparency_inactive_header:"--inactive-header-opacity",transparency_inactive_content:"--inactive-content-opacity",transparency_active_header:"--active-header-opacity",transparency_active_content:"--active-content-opacity"};r[e]&&document.documentElement.style.setProperty(r[e],String(t/100)),L.current[e]&&clearTimeout(L.current[e]),L.current[e]=setTimeout(()=>{C(e,t),_(t=>{const r={...t};return delete r[e],r})},300)},[C]);ht(()=>()=>{Object.values(L.current).forEach(clearTimeout)},[]);const P=(l.transparency_taskbar??70)/100,T=(l.transparency_active_header??80)/100,$=(l.transparency_active_content??90)/100,I=un(g,"bg-white/90","bg-[#1e1e2e]/90","bg-pink-50/90","bg-green-50/90","bg-gray-200/90","bg-blue-50/90"),D=un(g,"bg-gray-200","bg-[#313244]","bg-pink-200","bg-green-200","bg-gray-400","bg-blue-200"),A=un(g,"bg-white border border-gray-200","bg-[#1e1e2e] border border-[#45475a]","bg-white border border-pink-200","bg-white border border-green-200","bg-gray-100 border border-gray-300","bg-blue-50 border border-blue-200"),j=un(g,"bg-gray-100","bg-[#313244]","bg-pink-50","bg-green-50","bg-gray-300","bg-blue-100"),B=un(g,"bg-blue-600","bg-blue-500","bg-pink-600","bg-green-600","bg-gray-700","bg-blue-700");/* @__PURE__ */
299
299
  return St("div",{className:"space-y-6",children:[n("appearance")&&/* @__PURE__ */St(Lt,{children:[
300
300
  /* @__PURE__ */_t("div",{className:"flex justify-center",children:/* @__PURE__ */_t("div",{className:"rounded-lg border border-gray-200 overflow-hidden",style:{width:480},children:/* @__PURE__ */St("div",{className:"relative",style:{height:300},children:[v?/* @__PURE__ */_t("div",{className:"absolute inset-0",style:{backgroundColor:x}}):/* @__PURE__ */_t("img",{src:x,alt:"",className:"absolute inset-0 w-full h-full object-cover"}),
301
301
  /* @__PURE__ */St("div",{className:`absolute left-0 right-0 bottom-0 h-4 ${I} border-t border-gray-200/50 flex items-center px-2 gap-1`,style:{opacity:P},children:[
@@ -485,17 +485,17 @@ return St("th",{className:"px-4 py-3 text-left text-xs font-medium text-gray-500
485
485
  /* @__PURE__ */_t("button",{onClick:()=>S(!M),className:"text-gray-400 hover:text-gray-600",title:"Choose columns",children:/* @__PURE__ */_t("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",strokeWidth:"1.5",viewBox:"0 0 24 24",children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M10.5 6h9.75M10.5 6a1.5 1.5 0 11-3 0m3 0a1.5 1.5 0 10-3 0M3.75 6H7.5m3 12h9.75m-9.75 0a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m-3.75 0H7.5m9-6h3.75m-3.75 0a1.5 1.5 0 01-3 0m3 0a1.5 1.5 0 00-3 0m-9.75 0h9.75"})})}),M&&/* @__PURE__ */St("div",{className:"absolute bottom-full right-0 mb-1 w-52 rounded-2xl z-50 py-1 max-h-80 overflow-y-auto",style:it(),children:[
486
486
  /* @__PURE__ */_t("p",{className:"px-3 py-1.5 text-[10px] font-semibold text-gray-400 uppercase",children:"Columns"}),p.filter(e=>"_select"!==e.key).map(e=>/* @__PURE__ */St("label",{className:"flex items-center gap-2 px-3 py-1 text-sm text-gray-700 hover:bg-gray-50 cursor-pointer",children:[
487
487
  /* @__PURE__ */_t("input",{type:"checkbox",checked:!e.hidden,onChange:()=>w(e.key),className:"h-3.5 w-3.5 rounded border-gray-300 text-blue-600"}),e.label]},e.key)),$&&/* @__PURE__ */_t("div",{className:"border-t border-gray-100 mt-1 pt-1 px-3 pb-1",children:/* @__PURE__ */_t("button",{onClick:async()=>{L(!0);const t=p.filter(e=>!e.hidden).map(e=>e.key),n=s?"mobile":"desktop",o={visible_columns:t};r&&(o.sort=r);try{await de.patch(`/auth/default-columns/${e}/`,o,{params:{viewport:n}}).catch(()=>de.post("/auth/default-columns/",{table_id:e,viewport:n,...o})),P(!0),setTimeout(()=>P(!1),2e3)}catch{}L(!1)},disabled:_,className:"text-[10px] w-full text-center py-1 rounded "+(E?"text-green-600":"text-gray-500 hover:text-blue-600"),children:_?"...":E?"Saved as default":"Save as default for all users"})})]})]})]})]})}function Pn(e){return Array.from(e.children).filter(e=>void 0!==e.dataset?.colKey&&"_select"!==e.dataset.colKey)}function Tn(e){return("string"==typeof e.innerText?e.innerText:e.textContent??"").replace(/\s+/g," ").trim()}function $n(e){const{items:t,isLoading:r,emptyState:n,totalCount:o,isError:a,onRetry:l,errorTitle:i,errorMessage:s,tableId:c,columns:p,renderCell:g,getRowId:f=e=>e.id,sort:y,onSort:x,selected:w,setSelected:v,onRowClick:k,onRowHover:N,getRowClassName:C,footerLabel:M,footerExtra:S,sentinelRef:_,isFetchingNextPage:L,saveDefaultPerms:E,exportEndpoint:P,exportFilename:T="export.csv",contextActions:$}=e,[I,D]=mt(null),A=pt(null),j=st(),B=e=>{v(t=>{const r=new Set(t),n=f(e);return r.has(n)?r.delete(n):r.add(n),r})},R=()=>{v(e=>e.size===t.length?/* @__PURE__ */new Set:new Set(t.map(f)))},F=kn(t,k,B,R,(e,r)=>{v(n=>{const o=new Set(n);for(let n=e;n<=r;n++)o.add(f(t[n]));return o})}),z=t.filter(e=>w.has(f(e))),O=()=>{const e=[...A.current?.querySelectorAll("tr[data-row-idx]")??[]].filter(e=>{const r=t[Number(e.dataset.rowIdx)];return void 0!==r&&w.has(f(r))}),r=e.length?Pn(e[0]).map(e=>e.dataset.colKey??""):[],n=new Map(p.map(e=>[e.key,e.label]));return{keys:r,header:r.map(e=>n.get(e)??e),body:e.map(e=>Pn(e).map(Tn))}},H=()=>{D(null);const{header:e,body:t}=O();if(!t.length)return;const r=[e,...t].map(e=>e.join("\t")).join("\n"),n="<table><thead><tr>"+e.map(e=>`<th>${W(e)}</th>`).join("")+"</tr></thead><tbody>"+t.map(e=>`<tr>${e.map(e=>`<td>${W(e)}</td>`).join("")}</tr>`).join("")+"</tbody></table>";h(1===t.length?"Row":`${t.length} rows`,r,n)},V=async()=>{D(null);const e=[...w];if(!e.length||!P)return;const t=new URLSearchParams({ids:e.join(",")}),r=(()=>{const e=new Map(p.map(e=>[e.key,e.label]));try{const t=localStorage.getItem(`col-config-${c}`);if(t){const r=JSON.parse(t).filter(t=>!t.hidden&&"_select"!==t.key&&e.has(t.key)).map(t=>`${t.key}|${e.get(t.key)}`);if(r.length)return r.join(",")}}catch{}return p.filter(e=>!e.defaultHidden).map(e=>`${e.key}|${e.label}`).join(",")})();r&&t.set("cols",r);const n=P.includes("?")?"&":"?";try{const r=await de.get(`${P}${n}${t}`,{responseType:"blob"}),o=window.URL.createObjectURL(new Blob([r.data],{type:"text/csv"})),a=document.createElement("a");a.href=o,a.download=T,a.click(),window.URL.revokeObjectURL(o);const l=r.headers??{},i=Number(l["x-row-count"]);if("true"===String(l["x-truncated"])){const t=Number.isFinite(i)?`${i} of ${e.length}`:`only some of the ${e.length}`;return void U.notify(`Exported ${t} rows. The server capped this export, so the file is incomplete.`)}U.success(`Exported ${e.length} ${1===e.length?"row":"rows"}.`)}catch{U.error("CSV export failed.")}};if(r)/* @__PURE__ */return _t(se,{});if(a&&0===t.length)/* @__PURE__ */
488
- return _t(d,{title:i,message:s,onRetry:l});if(0===t.length)/* @__PURE__ */return _t(Lt,{children:n});const K=t.length>0&&w.size===t.length,Y=w.size>0&&!K,X=[{key:"_select",label:"",defaultWidth:52,minWidth:52,headerNode:/* @__PURE__ */_t(u,{"aria-label":j.table.selectAll,checked:K,indeterminate:Y,onChange:R,style:{height:14,width:14}})},...p],q=/* @__PURE__ */_t(m,{selectedCount:w.size,loadedCount:t.length,totalCount:o,label:M,isFetchingMore:L,extra:S}),G=_?/* @__PURE__ */St(Lt,{children:[
488
+ return _t(d,{title:i,message:s,onRetry:l});if(0===t.length)/* @__PURE__ */return _t(Lt,{children:n});const K=t.length>0&&w.size===t.length,X=w.size>0&&!K,Y=[{key:"_select",label:"",defaultWidth:52,minWidth:52,headerNode:/* @__PURE__ */_t(u,{"aria-label":j.table.selectAll,checked:K,indeterminate:X,onChange:R,style:{height:14,width:14}})},...p],q=/* @__PURE__ */_t(m,{selectedCount:w.size,loadedCount:t.length,totalCount:o,label:M,isFetchingMore:L,extra:S}),G=_?/* @__PURE__ */St(Lt,{children:[
489
489
  /* @__PURE__ */_t("div",{ref:_}),L&&/* @__PURE__ */_t("div",{className:"text-center py-3",children:/* @__PURE__ */_t("span",{className:"text-sm text-gray-500",children:"Loading more..."})})]}):void 0;let J=null;if(I){const{x:e,y:r,item:n,text:a,firstColumn:i}=I,s=$?$(z):[],c=z.length,d=()=>D(null),u=void 0!==o&&o>t.length;J=/* @__PURE__ */St(Ve,{portal:!0,style:{left:e,top:r},onClose:d,minWidth:210,children:[
490
490
  /* @__PURE__ */St(Ue,{children:[w.size," selected"]}),
491
- /* @__PURE__ */_t(Ye,{className:"font-medium",onClick:()=>{d(),k(n)},children:"Open"}),
492
- /* @__PURE__ */_t(Ke,{}),a&&/* @__PURE__ */_t(Ye,{onClick:()=>{d(),h("Text",a.text,a.html)},children:"Copy"}),i&&/* @__PURE__ */St(Ye,{onClick:()=>(e=>{D(null);const{keys:t,body:r}=O(),n=t.indexOf(e.key);n<0||!r.length||h(e.label,r.map(e=>e[n]).join("\n"))})(i),children:["Copy ",i.label]}),
493
- /* @__PURE__ */_t(Ye,{disabled:0===c,onClick:H,children:1===c?"Copy row":`Copy ${c} rows`}),P&&/* @__PURE__ */_t(Ye,{onClick:V,children:"Export selected to CSV"}),s.map((e,t)=>/* @__PURE__ */St("div",{children:[(e.divider||0===t)&&/* @__PURE__ */_t(Ke,{}),
494
- /* @__PURE__ */_t(Ye,{danger:e.danger,disabled:e.disabled,onClick:()=>{d(),e.onClick(z)},children:e.label})]},t)),
495
- /* @__PURE__ */_t(Ke,{}),!K&&/* @__PURE__ */_t(Ye,{onClick:()=>{d(),v(new Set(t.map(f)))},children:u?`Select all ${t.length} loaded`:"Select all"}),
496
- /* @__PURE__ */_t(Ye,{onClick:()=>{d(),v(/* @__PURE__ */new Set)},children:"Clear selection"}),l&&/* @__PURE__ */_t(Ye,{onClick:()=>{d(),l()},children:"Refresh"})]})}/* @__PURE__ */
491
+ /* @__PURE__ */_t(Xe,{className:"font-medium",onClick:()=>{d(),k(n)},children:"Open"}),
492
+ /* @__PURE__ */_t(Ke,{}),a&&/* @__PURE__ */_t(Xe,{onClick:()=>{d(),h("Text",a.text,a.html)},children:"Copy"}),i&&/* @__PURE__ */St(Xe,{onClick:()=>(e=>{D(null);const{keys:t,body:r}=O(),n=t.indexOf(e.key);n<0||!r.length||h(e.label,r.map(e=>e[n]).join("\n"))})(i),children:["Copy ",i.label]}),
493
+ /* @__PURE__ */_t(Xe,{disabled:0===c,onClick:H,children:1===c?"Copy row":`Copy ${c} rows`}),P&&/* @__PURE__ */_t(Xe,{onClick:V,children:"Export selected to CSV"}),s.map((e,t)=>/* @__PURE__ */St("div",{children:[(e.divider||0===t)&&/* @__PURE__ */_t(Ke,{}),
494
+ /* @__PURE__ */_t(Xe,{danger:e.danger,disabled:e.disabled,onClick:()=>{d(),e.onClick(z)},children:e.label})]},t)),
495
+ /* @__PURE__ */_t(Ke,{}),!K&&/* @__PURE__ */_t(Xe,{onClick:()=>{d(),v(new Set(t.map(f)))},children:u?`Select all ${t.length} loaded`:"Select all"}),
496
+ /* @__PURE__ */_t(Xe,{onClick:()=>{d(),v(/* @__PURE__ */new Set)},children:"Clear selection"}),l&&/* @__PURE__ */_t(Xe,{onClick:()=>{d(),l()},children:"Refresh"})]})}/* @__PURE__ */
497
497
  return St("div",{className:"flex-1 flex flex-col mb-1 bg-white rounded-lg shadow overflow-hidden",children:[
498
- /* @__PURE__ */_t("div",{className:"flex-1 min-h-0 flex flex-col",children:/* @__PURE__ */_t(En,{tableId:c,columns:X,sort:y,onSort:x,footer:q,afterBody:G,saveDefaultPerms:E,children:e=>/* @__PURE__ */_t("tbody",{ref:A,className:"divide-y divide-gray-100",children:t.map((t,r)=>{const n=f(t);/* @__PURE__ */
498
+ /* @__PURE__ */_t("div",{className:"flex-1 min-h-0 flex flex-col",children:/* @__PURE__ */_t(En,{tableId:c,columns:Y,sort:y,onSort:x,footer:q,afterBody:G,saveDefaultPerms:E,children:e=>/* @__PURE__ */_t("tbody",{ref:A,className:"divide-y divide-gray-100",children:t.map((t,r)=>{const n=f(t);/* @__PURE__ */
499
499
  return _t("tr",{"data-row-idx":r,className:`cursor-pointer ${F===r?"bg-blue-50 ring-1 ring-inset ring-blue-300":w.has(n)?"bg-blue-50 hover:bg-blue-100":"hover:bg-gray-50"} ${C?.(t)??""}`,onClick:()=>k(t),onContextMenu:e=>((e,t)=>{if(e.shiftKey||qe(e.target))return;e.preventDefault();const r=f(t);w.has(r)||v(/* @__PURE__ */new Set([r]));const n=Pn(e.currentTarget)[0]?.dataset.colKey,o=n?p.find(e=>e.key===n)?.label:void 0;D({x:e.clientX,y:e.clientY,item:t,text:b(e.target),firstColumn:n&&o?{key:n,label:o}:null})})(e,t),onMouseEnter:N?()=>N(t):void 0,children:e.map(e=>/* @__PURE__ */_t("td",{"data-col-key":e.key,className:"px-4 py-3 whitespace-nowrap text-sm overflow-hidden",children:"_select"===e.key?/* @__PURE__ */_t(u,{"aria-label":j.table.selectRow,checked:w.has(n),onChange:()=>B(t),onClick:e=>e.stopPropagation(),style:{height:14,width:14}}):g(t,e.key)},e.key))},n)})})})}),J]})}function In({queryKey:e,fetchFn:t,extraParams:r={},pageSize:n=25}){const o=pt(null),a=Object.fromEntries(Object.entries(r).filter(([,e])=>void 0!==e)),l=$t({queryKey:e,queryFn:({pageParam:e=1})=>t({page:String(e),...a}),getNextPageParam:(e,t)=>{if(e.next)return t.length+1},initialPageParam:1}),{fetchNextPage:i,hasNextPage:s,isFetchingNextPage:c}=l,d=gt(e=>{const[t]=e;t.isIntersecting&&s&&!c&&i()},[i,s,c]);ht(()=>{const e=o.current;if(!e)return;let t=e.parentElement;for(;t;){const e=getComputedStyle(t).overflowY;if("auto"===e||"scroll"===e)break;t=t.parentElement}const r=new IntersectionObserver(d,{root:t,rootMargin:"200px",threshold:0});return r.observe(e),()=>r.disconnect()},[d]);const u=/* @__PURE__ */new Set;return{items:(l.data?.pages.flatMap(e=>e?.results??[])??[]).filter(e=>null!=e).filter(e=>{const t=e.id;return null==t||!u.has(t)&&(u.add(t),!0)}),totalCount:l.data?.pages[0]?.count??0,isLoading:l.isLoading,isError:l.isError,error:l.error,isFetchingNextPage:c,hasNextPage:!!s,sentinelRef:o,refetch:l.refetch}}function Dn(e){const t=e;return!!t&&"string"==typeof t.field&&t.field.length>0&&("asc"===t.direction||"desc"===t.direction)}function An(e,t="asc",r,n){const{prefs:o,save:a}=Ee(),l=r?`sort_${r}`:null,[i,s]=mt(()=>{if(l){if(Dn(o[l]))return o[l];try{const e=JSON.parse(localStorage.getItem(`sort-config-${r}`)||"null");if(Dn(e))return e}catch{}}return{field:e,direction:t}}),c=pt(!1),d=l?o[l]:void 0,u=pt(d);u.current=d,ht(()=>{if(!c.current&&Dn(d)){s(e=>e.field===d.field&&e.direction===d.direction?e:d);try{localStorage.setItem(`sort-config-${r}`,JSON.stringify(d))}catch{}}},[r,d?.field,d?.direction]);const{defaultConfig:m}=Mn(r);ht(()=>{const e=m?.sort;if(!c.current&&!Dn(u.current)&&Dn(e)){s(t=>t.field===e.field&&t.direction===e.direction?t:e);try{localStorage.setItem(`sort-config-${r}`,JSON.stringify(e))}catch{}}},[r,m]);const h=n?.columns?.length?n.columns:void 0,p=!h||function(e,t){return e.some(e=>(e.sortField??("_select"!==e.key?e.key:""))===t&&""!==t)}(h,i.field)?i:{field:e,direction:t},g="desc"===p.direction?`-${p.field}`:p.field;return{sort:p,onSort:e=>{c.current=!0;const t=p.field===e?{field:e,direction:"asc"===p.direction?"desc":"asc"}:{field:e,direction:"asc"};if(s(t),l){try{localStorage.setItem(`sort-config-${r}`,JSON.stringify(t))}catch{}a({[l]:t})}},ordering:g}}function jn({filters:e,values:t,onChange:r,onClear:n,children:o}){const a=Object.values(t).filter(Boolean).length;/* @__PURE__ */
500
500
  return St("div",{className:"flex items-center gap-3 flex-wrap",children:[e.map(e=>{const n=e.searchable??e.options.length>8;/* @__PURE__ */
501
501
  return _t(n?Rn:Bn,{filter:e,value:t[e.field]||"",onChange:t=>r(e.field,t)},e.field)}),o,a>0&&/* @__PURE__ */St("button",{onClick:n,className:"flex items-center gap-1 text-sm text-gray-500 hover:text-gray-700",children:[
@@ -510,7 +510,7 @@ return St("div",{ref:i,className:"relative",children:[
510
510
  /* @__PURE__ */_t("span",{"aria-hidden":"true",onClick:e=>{e.stopPropagation(),r(""),l("")},className:"cursor-pointer text-blue-400 hover:text-blue-600",children:/* @__PURE__ */_t(At,{className:"h-3.5 w-3.5"})}):/* @__PURE__ */_t("svg",{className:"h-3.5 w-3.5 text-gray-400 transition-transform "+(n?"rotate-180":""),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.5 8.25l-7.5 7.5-7.5-7.5"})})]}),n&&/* @__PURE__ */St("div",{className:"absolute top-full left-0 mt-1 w-56 rounded-2xl z-[400] overflow-hidden",style:it(),children:[
511
511
  /* @__PURE__ */_t("div",{className:"p-1.5 border-b border-gray-100",children:/* @__PURE__ */_t("input",{ref:s,value:a,onChange:e=>l(e.target.value),placeholder:`Search ${e.label.replace(/^All\s*/i,"").toLowerCase()}...`,className:"w-full rounded-md border border-gray-200 px-2.5 py-1.5 text-sm focus:border-blue-400 focus:ring-0 outline-none"})}),
512
512
  /* @__PURE__ */St("div",{className:"max-h-52 overflow-y-auto",children:[
513
- /* @__PURE__ */_t("button",{onClick:()=>{r(""),o(!1),l("")},className:"w-full text-left px-3 py-1.5 text-sm hover:bg-gray-50 "+(t?"text-gray-600":"text-blue-600 font-medium bg-blue-50/50"),children:e.label}),0===u.length?/* @__PURE__ */_t("p",{className:"px-3 py-3 text-sm text-gray-400 text-center",children:"No matches"}):u.map(e=>/* @__PURE__ */_t("button",{onClick:()=>{r(e.value),o(!1),l("")},className:"w-full text-left px-3 py-1.5 text-sm hover:bg-gray-50 truncate "+(t===e.value?"text-blue-600 font-medium bg-blue-50/50":"text-gray-700"),children:e.label},e.value))]})]})]})}function Wn(){const[e,t]=mt({}),r={};for(const[t,n]of Object.entries(e))n&&(r[t]=n);return{filterValues:e,setFilter:(e,r)=>{t(t=>{const n={...t};return r?n[e]=r:delete n[e],n})},clearFilters:()=>t({}),filterParams:r}}var Fn=e=>e>0?`${e.toFixed(0)} fps`:"stalled";function zn(e){const{summary:t,message:r,verdict:n,environment:o}=e,a=[`Performance report — ${n}`,""];a.push(r.trim()||"(No description given.)",""),a.push(`Machine: ${Er(o)}`);const l=o.network;l?.effectiveType&&"4g"!==l.effectiveType&&a.push(`Connection: ${l.effectiveType}${l.rttMs?` · ${l.rttMs} ms round trip`:""}`),a.push(""),a.push(`Median ${Fn(t.medianFps)} over ${(e=>{const t=Math.round(e/1e3);return t<60?`${t}s`:`${Math.round(t/60)}m`})(t.durationMs)} (${t.samples} samples), worst frame ${t.worstFrameMs.toFixed(0)} ms.`);const i=t.byActivity.slice(0,3);i.length&&a.push(`Slowest while: ${i.map(e=>`${e.kind} ${Fn(e.medianFps)} (worst ${e.worstMs.toFixed(0)} ms)`).join(" · ")}`);const s=t.worstMenus[0];s&&a.push(`Slowest menu: ${s.key} — ${Fn(s.medianFps)}`);const c=t.worstWindows[0];return c&&a.push(`Slowest window: ${c.key} — ${Fn(c.medianFps)}`),t.idle&&t.interacting&&a.push(`At rest ${Fn(t.idle.medianFps)} vs in use ${Fn(t.interacting.medianFps)}.`),a.push("",`Full log attached as ${e.filename}.`),a.join("\n")}function On(e){return new File([e.json],e.filename,{type:"application/json"})}function Hn(e,t){const r=/* @__PURE__ */new Map;e.forEach((e,n)=>{const o=e[t],a="string"==typeof o?o.trim():"";if(!a)return;const l=a.toUpperCase(),i=r.get(l);i?i.rowIndices.push(n):r.set(l,{key:a,rowIndices:[n]})});const n=[];for(const e of r.values())e.rowIndices.length>=2&&n.push(e);return n}function Vn(e,t){const r={};for(const[n,o]of Object.entries(t)){const t=e[n],a="string"==typeof t?t.trim():"";""!==a&&(r[o]=a)}return r}function Kn(e){const{rows:t,existing:r,fieldMap:n,newItem:o,keyField:a="part_number"}=e,l=Object.entries(n).find(([,e])=>e===a);if(!l)throw new Error(`mergeBulkItems: fieldMap must map a row column to "${a}"`);const i=l[0],s=t.filter(e=>(e[i]??"").trim());if(0===s.length)return{merged:r,importedCount:0};const c=/* @__PURE__ */new Map;r.forEach((e,t)=>{const r=e[a];"string"==typeof r&&r.trim()&&c.set(r.toUpperCase(),t)});const d=[...r],u=[];for(const e of s){const t=Vn(e,n),r=t[a];if(!r)continue;const l=c.get(r.toUpperCase());void 0!==l?d[l]={...d[l],...t}:u.push({...o(t),_isNew:!0})}return{merged:[...d,...u],importedCount:s.length}}function Un(e){return e?e.replace(/[$¥¥€£,\s]/g,""):""}function Yn(e){if(e.includes("\t"))return e.split("\t").map(e=>e.trim());const t=[];let r="",n=!1;for(const o of e)'"'!==o?","!==o||n?r+=o:(t.push(r.trim()),r=""):n=!n;return t.push(r.trim()),t}function Xn(e,t){return 0===t?"key":e.kind??"text"}function qn(e){const t=e.filter(e=>e.trim());if(0===t.length)return"skip";if(e.every(e=>!e.trim()||/^\d+$/.test(e.trim()))){const e=t.map(e=>parseInt(e));if(e.length>2&&e.every((t,r)=>0===r||t>=e[r-1]))return"skip"}const r=t.some(e=>/[a-zA-Z]/.test(e)),n=t.some(e=>/\$/.test(e)),o=t.filter(e=>/\.\d{2}$/.test(Un(e))).length>.5*t.length,a=t.every(e=>/^\d+$/.test(Un(e)));if(r&&!n)return"key";if(n)return"price";if(o)return"price";if(a){return t.reduce((e,t)=>e+parseInt(Un(t)),0)/t.length>10?"qty":"skip"}return"key"}function Gn(e,t){if(0===e.length||0===e[0].length)return null;const r=e[0].length,n=t.map((e,t)=>Xn(e,t)),o=[];for(let t=0;t<r;t++){const r=e.map(e=>e[t]||"");o.push(qn(r))}const a=new Array(t.length).fill(-1),l=/* @__PURE__ */new Set;for(let e=0;e<t.length;e++){const t=n[e];if("text"!==t)for(let n=0;n<r;n++)if(!l.has(n)&&o[n]===t){a[e]=n,l.add(n);break}}const i=n.map((e,t)=>({i:t,k:e})).filter(e=>"price"===e.k),s=o.map((e,t)=>({i:t,type:e})).filter(e=>"price"===e.type&&!l.has(e.i));let c=0;for(const e of i)-1===a[e.i]&&c<s.length&&(a[e.i]=s[c].i,l.add(s[c].i),c++);return-1===a[0]?null:a}function Jn({csvPreview:e,targetColumns:t,onConfirm:r,onCancel:n}){const o=Gn(e,t),[a,l]=mt(o||new Array(t.length).fill(-1)),i=e[0]?.length||0,s=a[0]>=0;/* @__PURE__ */
513
+ /* @__PURE__ */_t("button",{onClick:()=>{r(""),o(!1),l("")},className:"w-full text-left px-3 py-1.5 text-sm hover:bg-gray-50 "+(t?"text-gray-600":"text-blue-600 font-medium bg-blue-50/50"),children:e.label}),0===u.length?/* @__PURE__ */_t("p",{className:"px-3 py-3 text-sm text-gray-400 text-center",children:"No matches"}):u.map(e=>/* @__PURE__ */_t("button",{onClick:()=>{r(e.value),o(!1),l("")},className:"w-full text-left px-3 py-1.5 text-sm hover:bg-gray-50 truncate "+(t===e.value?"text-blue-600 font-medium bg-blue-50/50":"text-gray-700"),children:e.label},e.value))]})]})]})}function Wn(){const[e,t]=mt({}),r={};for(const[t,n]of Object.entries(e))n&&(r[t]=n);return{filterValues:e,setFilter:(e,r)=>{t(t=>{const n={...t};return r?n[e]=r:delete n[e],n})},clearFilters:()=>t({}),filterParams:r}}var Fn=e=>e>0?`${e.toFixed(0)} fps`:"stalled";function zn(e){const{summary:t,message:r,verdict:n,environment:o}=e,a=[`Performance report — ${n}`,""];a.push(r.trim()||"(No description given.)",""),a.push(`Machine: ${Er(o)}`);const l=o.network;l?.effectiveType&&"4g"!==l.effectiveType&&a.push(`Connection: ${l.effectiveType}${l.rttMs?` · ${l.rttMs} ms round trip`:""}`),a.push(""),a.push(`Median ${Fn(t.medianFps)} over ${(e=>{const t=Math.round(e/1e3);return t<60?`${t}s`:`${Math.round(t/60)}m`})(t.durationMs)} (${t.samples} samples), worst frame ${t.worstFrameMs.toFixed(0)} ms.`);const i=t.byActivity.slice(0,3);i.length&&a.push(`Slowest while: ${i.map(e=>`${e.kind} ${Fn(e.medianFps)} (worst ${e.worstMs.toFixed(0)} ms)`).join(" · ")}`);const s=t.worstMenus[0];s&&a.push(`Slowest menu: ${s.key} — ${Fn(s.medianFps)}`);const c=t.worstWindows[0];return c&&a.push(`Slowest window: ${c.key} — ${Fn(c.medianFps)}`),t.idle&&t.interacting&&a.push(`At rest ${Fn(t.idle.medianFps)} vs in use ${Fn(t.interacting.medianFps)}.`),a.push("",`Full log attached as ${e.filename}.`),a.join("\n")}function On(e){return new File([e.json],e.filename,{type:"application/json"})}function Hn(e,t){const r=/* @__PURE__ */new Map;e.forEach((e,n)=>{const o=e[t],a="string"==typeof o?o.trim():"";if(!a)return;const l=a.toUpperCase(),i=r.get(l);i?i.rowIndices.push(n):r.set(l,{key:a,rowIndices:[n]})});const n=[];for(const e of r.values())e.rowIndices.length>=2&&n.push(e);return n}function Vn(e,t){const r={};for(const[n,o]of Object.entries(t)){const t=e[n],a="string"==typeof t?t.trim():"";""!==a&&(r[o]=a)}return r}function Kn(e){const{rows:t,existing:r,fieldMap:n,newItem:o,keyField:a="part_number"}=e,l=Object.entries(n).find(([,e])=>e===a);if(!l)throw new Error(`mergeBulkItems: fieldMap must map a row column to "${a}"`);const i=l[0],s=t.filter(e=>(e[i]??"").trim());if(0===s.length)return{merged:r,importedCount:0};const c=/* @__PURE__ */new Map;r.forEach((e,t)=>{const r=e[a];"string"==typeof r&&r.trim()&&c.set(r.toUpperCase(),t)});const d=[...r],u=[];for(const e of s){const t=Vn(e,n),r=t[a];if(!r)continue;const l=c.get(r.toUpperCase());void 0!==l?d[l]={...d[l],...t}:u.push({...o(t),_isNew:!0})}return{merged:[...d,...u],importedCount:s.length}}function Un(e){return e?e.replace(/[$¥¥€£,\s]/g,""):""}function Xn(e){if(e.includes("\t"))return e.split("\t").map(e=>e.trim());const t=[];let r="",n=!1;for(const o of e)'"'!==o?","!==o||n?r+=o:(t.push(r.trim()),r=""):n=!n;return t.push(r.trim()),t}function Yn(e,t){return 0===t?"key":e.kind??"text"}function qn(e){const t=e.filter(e=>e.trim());if(0===t.length)return"skip";if(e.every(e=>!e.trim()||/^\d+$/.test(e.trim()))){const e=t.map(e=>parseInt(e));if(e.length>2&&e.every((t,r)=>0===r||t>=e[r-1]))return"skip"}const r=t.some(e=>/[a-zA-Z]/.test(e)),n=t.some(e=>/\$/.test(e)),o=t.filter(e=>/\.\d{2}$/.test(Un(e))).length>.5*t.length,a=t.every(e=>/^\d+$/.test(Un(e)));if(r&&!n)return"key";if(n)return"price";if(o)return"price";if(a){return t.reduce((e,t)=>e+parseInt(Un(t)),0)/t.length>10?"qty":"skip"}return"key"}function Gn(e,t){if(0===e.length||0===e[0].length)return null;const r=e[0].length,n=t.map((e,t)=>Yn(e,t)),o=[];for(let t=0;t<r;t++){const r=e.map(e=>e[t]||"");o.push(qn(r))}const a=new Array(t.length).fill(-1),l=/* @__PURE__ */new Set;for(let e=0;e<t.length;e++){const t=n[e];if("text"!==t)for(let n=0;n<r;n++)if(!l.has(n)&&o[n]===t){a[e]=n,l.add(n);break}}const i=n.map((e,t)=>({i:t,k:e})).filter(e=>"price"===e.k),s=o.map((e,t)=>({i:t,type:e})).filter(e=>"price"===e.type&&!l.has(e.i));let c=0;for(const e of i)-1===a[e.i]&&c<s.length&&(a[e.i]=s[c].i,l.add(s[c].i),c++);return-1===a[0]?null:a}function Jn({csvPreview:e,targetColumns:t,onConfirm:r,onCancel:n}){const o=Gn(e,t),[a,l]=mt(o||new Array(t.length).fill(-1)),i=e[0]?.length||0,s=a[0]>=0;/* @__PURE__ */
514
514
  return St("div",{className:"border border-blue-200 rounded-lg bg-blue-50 p-4 mb-3",children:[
515
515
  /* @__PURE__ */_t("p",{className:"text-sm font-medium text-gray-800 mb-3",children:"Map CSV columns to fields"}),
516
516
  /* @__PURE__ */_t("div",{className:"grid grid-cols-2 gap-x-6 gap-y-2 mb-4",children:t.map((t,r)=>/* @__PURE__ */St("div",{className:"flex items-center gap-2",children:[
@@ -560,17 +560,17 @@ return St("td",{className:"px-2 py-1 font-mono text-gray-700",children:[n.length
560
560
  /* @__PURE__ */St("span",{className:"text-xs text-gray-600",children:[l," duplicate rows → ",t.length," merged line",1===t.length?"":"s"]}),
561
561
  /* @__PURE__ */St("div",{className:"flex gap-2",children:[
562
562
  /* @__PURE__ */_t(he,{onClick:o,className:"text-sm text-gray-500 hover:text-gray-700",children:"Cancel"}),
563
- /* @__PURE__ */_t("button",{type:"button",onClick:n,className:"bg-blue-600 text-white px-3 py-1.5 text-sm font-medium rounded-lg hover:bg-blue-700",children:"Proceed"})]})]})]})}function eo({columns:e,onImport:t,description:r,mergeDuplicates:n=!1}){const[o,a]=mt(()=>Array.from({length:15},()=>Array(e.length).fill(""))),[l,i]=mt(!1),[s,c]=mt(""),[d,u]=mt(null),[m,h]=mt(null),[p,g]=mt(null),f=e.length,y=e[0]?.title?.replace(" *","")||"value",b=o.filter(e=>e[0]?.trim()),x=b.length,w={};for(let t=1;t<e.length;t++){if("text"===Xn(e[t],t))continue;let r=0;for(const e of b){const n=parseFloat(Un(e[t]||""));isNaN(n)||(r+=n)}r>0&&(w[e[t].key]=r)}const v=e.map(e=>({key:e.key,title:e.title,width:e.width})),k=gt(t=>{const r=t.map(t=>{const r=[...t];for(;r.length<f;)r.push("");return r.slice(0,f).map((t,r)=>{const n=Xn(e[r],r);return"price"===n||"qty"===n?Un(t):t})});for(;r.length<15;)r.push(Array(f).fill(""));a(B(r,f))},[f,e]),N=ze({accept:".csv,.tsv,.txt",acceptHint:"CSV · TSV · TXT",multiple:!1,onAccept:([t])=>(t=>{const r=new FileReader;r.onload=t=>{const r=(t.target?.result||"").split("\n").map(e=>e.trim()).filter(Boolean).map(Yn);if(0===r.length)return;const n=Gn(r,e);if(n){const t=r.map(t=>e.map((e,r)=>n[r]>=0&&t[n[r]]||""));k(t)}else u(r)},r.readAsText(t)})(t)}),C=async e=>{i(!0);try{await t(e)}catch{c("Import failed.")}i(!1)},M=r||"Paste from spreadsheets, type directly, or upload a CSV. Rows don't need to be in order — they'll be matched. Values not in the list will be added to the end. Fields left blank will not be affected.";/* @__PURE__ */
563
+ /* @__PURE__ */_t("button",{type:"button",onClick:n,className:"bg-blue-600 text-white px-3 py-1.5 text-sm font-medium rounded-lg hover:bg-blue-700",children:"Proceed"})]})]})]})}function eo({columns:e,onImport:t,description:r,mergeDuplicates:n=!1}){const[o,a]=mt(()=>Array.from({length:15},()=>Array(e.length).fill(""))),[l,i]=mt(!1),[s,c]=mt(""),[d,u]=mt(null),[m,h]=mt(null),[p,g]=mt(null),f=e.length,y=e[0]?.title?.replace(" *","")||"value",b=o.filter(e=>e[0]?.trim()),x=b.length,w={};for(let t=1;t<e.length;t++){if("text"===Yn(e[t],t))continue;let r=0;for(const e of b){const n=parseFloat(Un(e[t]||""));isNaN(n)||(r+=n)}r>0&&(w[e[t].key]=r)}const v=e.map(e=>({key:e.key,title:e.title,width:e.width})),k=gt(t=>{const r=t.map(t=>{const r=[...t];for(;r.length<f;)r.push("");return r.slice(0,f).map((t,r)=>{const n=Yn(e[r],r);return"price"===n||"qty"===n?Un(t):t})});for(;r.length<15;)r.push(Array(f).fill(""));a(B(r,f))},[f,e]),N=ze({accept:".csv,.tsv,.txt",acceptHint:"CSV · TSV · TXT",multiple:!1,onAccept:([t])=>(t=>{const r=new FileReader;r.onload=t=>{const r=(t.target?.result||"").split("\n").map(e=>e.trim()).filter(Boolean).map(Xn);if(0===r.length)return;const n=Gn(r,e);if(n){const t=r.map(t=>e.map((e,r)=>n[r]>=0&&t[n[r]]||""));k(t)}else u(r)},r.readAsText(t)})(t)}),C=async e=>{i(!0);try{await t(e)}catch{c("Import failed.")}i(!1)},M=r||"Paste from spreadsheets, type directly, or upload a CSV. Rows don't need to be in order — they'll be matched. Values not in the list will be added to the end. Fields left blank will not be affected.";/* @__PURE__ */
564
564
  return St("div",{...N.zoneProps,className:["border rounded-lg bg-gray-50 mb-3 overflow-hidden transition-colors",N.dragOver?"border-dashed border-blue-500 bg-blue-50":"border-gray-200"].join(" "),children:[
565
565
  /* @__PURE__ */St("div",{className:"px-4 pt-3 pb-2 flex items-center justify-between",children:[
566
566
  /* @__PURE__ */St("p",{className:"text-xs text-gray-500",children:[M,
567
- /* @__PURE__ */St("span",{className:"text-gray-400 ml-1",children:["(",x," lines",Object.keys(w).length>0&&" · ",Object.entries(w).map(([t,r])=>{const n=e.find(e=>e.key===t);return`${n?.title?.replace(" *","")||t}: ${!!n&&"price"===Xn(n,e.indexOf(n))?r.toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2}):r.toLocaleString()}`}).join(" · "),")"]})]}),
567
+ /* @__PURE__ */St("span",{className:"text-gray-400 ml-1",children:["(",x," lines",Object.keys(w).length>0&&" · ",Object.entries(w).map(([t,r])=>{const n=e.find(e=>e.key===t);return`${n?.title?.replace(" *","")||t}: ${!!n&&"price"===Yn(n,e.indexOf(n))?r.toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2}):r.toLocaleString()}`}).join(" · "),")"]})]}),
568
568
  /* @__PURE__ */St("div",{className:"flex items-center gap-2",children:[x>0&&/* @__PURE__ */_t("button",{type:"button",onClick:()=>{a(Array.from({length:15},()=>Array(f).fill("")))},className:"text-gray-400 hover:text-gray-600 text-xs",children:"Clear"}),
569
569
  /* @__PURE__ */_t("input",{...N.inputProps}),
570
570
  /* @__PURE__ */_t("button",{type:"button",onClick:N.open,className:"text-blue-600 border border-blue-200 bg-white px-3 py-1.5 text-sm font-medium rounded-lg hover:bg-blue-50 hover:border-blue-300",children:"Upload CSV"}),
571
- /* @__PURE__ */_t("button",{type:"button",onClick:async()=>{const t=o.filter(e=>e[0]?.trim()).map(t=>{const r={};return e.forEach((e,n)=>{const o=t[n]?.trim()||"",a=Xn(e,n);r[e.key]="price"===a||"qty"===a?Un(o):o}),r});if(0===t.length)return void c(`Enter at least one ${y.toLowerCase()}.`);c("");const r=Hn(t,e[0].key);if(r.length>0)if(n)g({rows:t,groups:r});else{const e={};for(const t of r)e[t.key.toUpperCase()]="first";h({rows:t,groups:r,resolutions:e})}else await C(t)},disabled:l||0===x,className:"text-green-600 border border-green-200 bg-white px-3 py-1.5 text-sm font-medium rounded-lg hover:bg-green-50 hover:border-green-300 disabled:opacity-50",children:l?"Importing...":`Import ${x} Lines`})]})]}),d&&/* @__PURE__ */_t("div",{className:"px-4 pb-2",children:/* @__PURE__ */_t(Jn,{csvPreview:d,targetColumns:e,onConfirm:t=>{if(!d)return;const r=d.map(r=>e.map((e,n)=>t[n]>=0&&r[t[n]]||""));k(r),u(null)},onCancel:()=>u(null)})}),m&&/* @__PURE__ */_t("div",{className:"px-4 pb-2",children:/* @__PURE__ */_t(Qn,{rows:m.rows,groups:m.groups,columns:e,resolutions:m.resolutions,onResolutionChange:(e,t)=>h(r=>r?{...r,resolutions:{...r.resolutions,[e]:t}}:r),onConfirm:async()=>{if(!m)return;const{rows:e,groups:t,resolutions:r}=m,n=/* @__PURE__ */new Set;for(const e of t){const t=r[e.key.toUpperCase()]||"first",o=e.rowIndices;if("first"===t)for(let e=1;e<o.length;e++)n.add(o[e]);else if("last"===t)for(let e=0;e<o.length-1;e++)n.add(o[e]);else if("skip"===t)for(const e of o)n.add(e)}const o=e.filter((e,t)=>!n.has(t));h(null),0!==o.length?await C(o):c("All rows skipped.")},onCancel:()=>h(null)})}),p&&/* @__PURE__ */_t("div",{className:"px-4 pb-2",children:/* @__PURE__ */_t(Zn,{rows:p.rows,groups:p.groups,columns:e,onConfirm:async()=>{if(!p)return;const t=function(e,t,r){const n=r[0].key,o=/* @__PURE__ */new Map,a=/* @__PURE__ */new Set;for(const e of t)o.set(e.rowIndices[0],e),e.rowIndices.slice(1).forEach(e=>a.add(e));const l=[];return e.forEach((t,i)=>{const s=o.get(i);if(s){const t={};for(const o of r){if(o.key===n){t[o.key]=s.key;continue}const r=s.rowIndices.map(t=>(e[t]?.[o.key]??"").trim()).filter(e=>""!==e&&Number.isFinite(Number(e))).map(Number);t[o.key]=r.length>0?String(r.reduce((e,t)=>e+t,0)):""}l.push(t)}else a.has(i)||l.push(t)}),l}(p.rows,p.groups,e);g(null),await C(t)},onCancel:()=>g(null)})}),
571
+ /* @__PURE__ */_t("button",{type:"button",onClick:async()=>{const t=o.filter(e=>e[0]?.trim()).map(t=>{const r={};return e.forEach((e,n)=>{const o=t[n]?.trim()||"",a=Yn(e,n);r[e.key]="price"===a||"qty"===a?Un(o):o}),r});if(0===t.length)return void c(`Enter at least one ${y.toLowerCase()}.`);c("");const r=Hn(t,e[0].key);if(r.length>0)if(n)g({rows:t,groups:r});else{const e={};for(const t of r)e[t.key.toUpperCase()]="first";h({rows:t,groups:r,resolutions:e})}else await C(t)},disabled:l||0===x,className:"text-green-600 border border-green-200 bg-white px-3 py-1.5 text-sm font-medium rounded-lg hover:bg-green-50 hover:border-green-300 disabled:opacity-50",children:l?"Importing...":`Import ${x} Lines`})]})]}),d&&/* @__PURE__ */_t("div",{className:"px-4 pb-2",children:/* @__PURE__ */_t(Jn,{csvPreview:d,targetColumns:e,onConfirm:t=>{if(!d)return;const r=d.map(r=>e.map((e,n)=>t[n]>=0&&r[t[n]]||""));k(r),u(null)},onCancel:()=>u(null)})}),m&&/* @__PURE__ */_t("div",{className:"px-4 pb-2",children:/* @__PURE__ */_t(Qn,{rows:m.rows,groups:m.groups,columns:e,resolutions:m.resolutions,onResolutionChange:(e,t)=>h(r=>r?{...r,resolutions:{...r.resolutions,[e]:t}}:r),onConfirm:async()=>{if(!m)return;const{rows:e,groups:t,resolutions:r}=m,n=/* @__PURE__ */new Set;for(const e of t){const t=r[e.key.toUpperCase()]||"first",o=e.rowIndices;if("first"===t)for(let e=1;e<o.length;e++)n.add(o[e]);else if("last"===t)for(let e=0;e<o.length-1;e++)n.add(o[e]);else if("skip"===t)for(const e of o)n.add(e)}const o=e.filter((e,t)=>!n.has(t));h(null),0!==o.length?await C(o):c("All rows skipped.")},onCancel:()=>h(null)})}),p&&/* @__PURE__ */_t("div",{className:"px-4 pb-2",children:/* @__PURE__ */_t(Zn,{rows:p.rows,groups:p.groups,columns:e,onConfirm:async()=>{if(!p)return;const t=function(e,t,r){const n=r[0].key,o=/* @__PURE__ */new Map,a=/* @__PURE__ */new Set;for(const e of t)o.set(e.rowIndices[0],e),e.rowIndices.slice(1).forEach(e=>a.add(e));const l=[];return e.forEach((t,i)=>{const s=o.get(i);if(s){const t={};for(const o of r){if(o.key===n){t[o.key]=s.key;continue}const r=s.rowIndices.map(t=>(e[t]?.[o.key]??"").trim()).filter(e=>""!==e&&Number.isFinite(Number(e))).map(Number);t[o.key]=r.length>0?String(r.reduce((e,t)=>e+t,0)):""}l.push(t)}else a.has(i)||l.push(t)}),l}(p.rows,p.groups,e);g(null),await C(t)},onCancel:()=>g(null)})}),
572
572
  /* @__PURE__ */_t(R,{columns:v,data:o,onChange:a}),
573
- /* @__PURE__ */_t(Oe,{rejections:N.rejections,className:"px-4 py-1"}),s&&/* @__PURE__ */_t("p",{className:"text-xs text-red-600 px-4 py-1",children:s})]})}function to(e){if(!e)return"—";const t=Math.max(0,Date.now()-e.getTime());return t<1500?"just now":t<6e4?`${Math.round(t/1e3)}s ago`:t<36e5?`${Math.round(t/6e4)}m ago`:`${Math.round(t/36e5)}h ago`}function ro({healthCheck:e,healthUrl:t="/api/health/",pollMs:r=15e3,requestTimeoutMs:n=5e3,user:o,version:a=X}){const[l,i]=mt("checking"),[s,c]=mt(null),[d,u]=mt(null),[m,h]=mt(null),[p,g]=mt(navigator.onLine),[f,y]=mt(!1),[b,x]=mt({left:0,top:0}),[,w]=mt(0),v=pt(!1),k=pt(null),N=pt(null),C=pt(e),M=pt(t),S=pt(n);C.current=e,M.current=t,S.current=n;const _=gt(async()=>{const e=performance.now();try{let t;if(C.current)t=await C.current();else{const r=new AbortController,n=setTimeout(()=>r.abort(),S.current);try{t={ok:(await fetch(M.current,{method:"GET",cache:"no-store",signal:r.signal})).ok,latencyMs:Math.round(performance.now()-e)}}finally{clearTimeout(n)}}if(v.current)return;t.ok?(i("connected"),c(/* @__PURE__ */new Date),h(t.latencyMs??Math.round(performance.now()-e))):(i("disconnected"),u(/* @__PURE__ */new Date))}catch{v.current||(i("disconnected"),u(/* @__PURE__ */new Date))}},[]);ht(()=>{v.current=!1,_();const e=setInterval(_,r);return()=>{v.current=!0,clearInterval(e)}},[_,r]),ht(()=>{const e=()=>g(!0),t=()=>g(!1);return window.addEventListener("online",e),window.addEventListener("offline",t),()=>{window.removeEventListener("online",e),window.removeEventListener("offline",t)}},[]),ht(()=>{if(!f)return;const e=setInterval(()=>w(e=>e+1),1e3);return()=>clearInterval(e)},[f]);const L=gt(()=>{if(!k.current)return;const e=k.current.getBoundingClientRect(),t=N.current?.offsetHeight||320,r=e.left+e.width/2,n=Math.max(8,Math.min(window.innerWidth-320-8,r-160)),o=e.top+e.height/2>window.innerHeight/2?Math.max(8,e.top-t-6):e.bottom+6;x({left:n,top:o})},[]);ht(()=>{if(f)return L(),window.addEventListener("resize",L),()=>window.removeEventListener("resize",L)},[f,L]),ft(()=>{f&&N.current&&L()},[f,L]),ht(()=>{if(!f)return;const e=e=>{const t=e.target;N.current?.contains(t)||k.current?.contains(t)||y(!1)},t=e=>{"Escape"===e.key&&y(!1)};window.addEventListener("mousedown",e),window.addEventListener("keydown",t);const r=at(()=>y(!1));return()=>{window.removeEventListener("mousedown",e),window.removeEventListener("keydown",t),r()}},[f]);const E="connected"===l?"#16a34a":"disconnected"===l?"#dc2626":"#9ca3af",P="connected"===l?"Connected":"disconnected"===l?"Disconnected":"Checking…",T="connected"===l?"bg-green-500":"disconnected"===l?"bg-red-500":"bg-gray-400",$=o?o.name?.trim()||o.email||"—":"Not signed in",I=o?.role||"";/* @__PURE__ */
573
+ /* @__PURE__ */_t(Oe,{rejections:N.rejections,className:"px-4 py-1"}),s&&/* @__PURE__ */_t("p",{className:"text-xs text-red-600 px-4 py-1",children:s})]})}function to(e){if(!e)return"—";const t=Math.max(0,Date.now()-e.getTime());return t<1500?"just now":t<6e4?`${Math.round(t/1e3)}s ago`:t<36e5?`${Math.round(t/6e4)}m ago`:`${Math.round(t/36e5)}h ago`}function ro({healthCheck:e,healthUrl:t="/api/health/",pollMs:r=15e3,requestTimeoutMs:n=5e3,user:o,version:a=Y}){const[l,i]=mt("checking"),[s,c]=mt(null),[d,u]=mt(null),[m,h]=mt(null),[p,g]=mt(navigator.onLine),[f,y]=mt(!1),[b,x]=mt({left:0,top:0}),[,w]=mt(0),v=pt(!1),k=pt(null),N=pt(null),C=pt(e),M=pt(t),S=pt(n);C.current=e,M.current=t,S.current=n;const _=gt(async()=>{const e=performance.now();try{let t;if(C.current)t=await C.current();else{const r=new AbortController,n=setTimeout(()=>r.abort(),S.current);try{t={ok:(await fetch(M.current,{method:"GET",cache:"no-store",signal:r.signal})).ok,latencyMs:Math.round(performance.now()-e)}}finally{clearTimeout(n)}}if(v.current)return;t.ok?(i("connected"),c(/* @__PURE__ */new Date),h(t.latencyMs??Math.round(performance.now()-e))):(i("disconnected"),u(/* @__PURE__ */new Date))}catch{v.current||(i("disconnected"),u(/* @__PURE__ */new Date))}},[]);ht(()=>{v.current=!1,_();const e=setInterval(_,r);return()=>{v.current=!0,clearInterval(e)}},[_,r]),ht(()=>{const e=()=>g(!0),t=()=>g(!1);return window.addEventListener("online",e),window.addEventListener("offline",t),()=>{window.removeEventListener("online",e),window.removeEventListener("offline",t)}},[]),ht(()=>{if(!f)return;const e=setInterval(()=>w(e=>e+1),1e3);return()=>clearInterval(e)},[f]);const L=gt(()=>{if(!k.current)return;const e=k.current.getBoundingClientRect(),t=N.current?.offsetHeight||320,r=e.left+e.width/2,n=Math.max(8,Math.min(window.innerWidth-320-8,r-160)),o=e.top+e.height/2>window.innerHeight/2?Math.max(8,e.top-t-6):e.bottom+6;x({left:n,top:o})},[]);ht(()=>{if(f)return L(),window.addEventListener("resize",L),()=>window.removeEventListener("resize",L)},[f,L]),ft(()=>{f&&N.current&&L()},[f,L]),ht(()=>{if(!f)return;const e=e=>{const t=e.target;N.current?.contains(t)||k.current?.contains(t)||y(!1)},t=e=>{"Escape"===e.key&&y(!1)};window.addEventListener("mousedown",e),window.addEventListener("keydown",t);const r=at(()=>y(!1));return()=>{window.removeEventListener("mousedown",e),window.removeEventListener("keydown",t),r()}},[f]);const E="connected"===l?"#16a34a":"disconnected"===l?"#dc2626":"#9ca3af",P="connected"===l?"Connected":"disconnected"===l?"Disconnected":"Checking…",T="connected"===l?"bg-green-500":"disconnected"===l?"bg-red-500":"bg-gray-400",$=o?o.name?.trim()||o.email||"—":"Not signed in",I=o?.role||"";/* @__PURE__ */
574
574
  return St(Lt,{children:[
575
575
  /* @__PURE__ */_t("button",{ref:k,type:"button",onClick:()=>y(e=>!e),className:"shrink-0 inline-flex items-center justify-center rounded-md p-2 transition-colors hover:bg-white/20 "+("disconnected"!==l||f?"":"animate-pulse"),title:`${P}${s?` · last ok ${s.toLocaleTimeString()}`:""}`,"aria-label":P,"aria-expanded":f,children:/* @__PURE__ */St("svg",{className:"h-5 w-5",viewBox:"0 0 24 24",fill:"none",stroke:E,strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[
576
576
  /* @__PURE__ */_t("circle",{cx:"12",cy:"12",r:"10"}),
@@ -628,13 +628,13 @@ return St(Lt,{children:[
628
628
  /* @__PURE__ */St("button",{ref:p,type:"button",onClick:()=>u(!d),disabled:o||m,className:n||"inline-flex items-center gap-1.5 bg-white text-gray-700 border border-gray-300 px-3 py-1.5 text-sm font-medium rounded-lg hover:bg-gray-50 disabled:opacity-50","data-menu-toggle":!0,children:[s??ao,m?"Loading...":r,
629
629
  /* @__PURE__ */_t("svg",{className:"h-3 w-3 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.5 8.25l-7.5 7.5-7.5-7.5"})})]}),d&&Et(
630
630
  /* @__PURE__ */St(Ve,{style:g,onClose:()=>u(!1),minWidth:180,children:[
631
- /* @__PURE__ */St(Ye,{onClick:async()=>{u(!1);const e=K({filename:t,converting:!0,convertingMessage:"LOADING PDF"});i?i():y("/preview");const r=await b();if(r===oo)return void e.update({filename:t,converting:!1,convertingMessage:"This document took too long to load. Close this window and try again."});if(!r)return void e.update({filename:t,converting:!1,convertingMessage:"Failed to load PDF."});const n=window.URL.createObjectURL(r);e.update({url:n,filename:t,...a?{onEmail:()=>a(r)}:{}}),l?.(t)},children:[
631
+ /* @__PURE__ */St(Xe,{onClick:async()=>{u(!1);const e=K({filename:t,converting:!0,convertingMessage:"LOADING PDF"});i?i():y("/preview");const r=await b();if(r===oo)return void e.update({filename:t,converting:!1,convertingMessage:"This document took too long to load. Close this window and try again."});if(!r)return void e.update({filename:t,converting:!1,convertingMessage:"Failed to load PDF."});const n=window.URL.createObjectURL(r);e.update({url:n,filename:t,...a?{onEmail:()=>a(r)}:{}}),l?.(t)},children:[
632
632
  /* @__PURE__ */St("svg",{className:"h-4 w-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:[
633
633
  /* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z"}),
634
634
  /* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})]}),"Preview"]}),
635
- /* @__PURE__ */St(Ye,{onClick:async()=>{u(!1);const e=await b();if(e===oo)return void U.error(`${t} took too long to load. Please try again.`);if(!e)return;const r=window.URL.createObjectURL(e),n=document.createElement("a");n.href=r,n.download=t,n.click(),window.URL.revokeObjectURL(r),U.success(`${t} downloaded.`)},children:[
635
+ /* @__PURE__ */St(Xe,{onClick:async()=>{u(!1);const e=await b();if(e===oo)return void U.error(`${t} took too long to load. Please try again.`);if(!e)return;const r=window.URL.createObjectURL(e),n=document.createElement("a");n.href=r,n.download=t,n.click(),window.URL.revokeObjectURL(r),U.success(`${t} downloaded.`)},children:[
636
636
  /* @__PURE__ */_t("svg",{className:"h-4 w-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3"})}),"Download"]}),a&&/* @__PURE__ */St(Lt,{children:[
637
637
  /* @__PURE__ */_t(Ke,{}),
638
- /* @__PURE__ */St(Ye,{onClick:async()=>{u(!1);const e=await b();e!==oo?e&&a&&a(e):U.error(`${t} took too long to load. Please try again.`)},children:[
638
+ /* @__PURE__ */St(Xe,{onClick:async()=>{u(!1);const e=await b();e!==oo?e&&a&&a(e):U.error(`${t} took too long to load. Please try again.`)},children:[
639
639
  /* @__PURE__ */_t("svg",{className:"h-4 w-4 text-gray-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.5,children:/* @__PURE__ */_t("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21.75 6.75v10.5a2.25 2.25 0 01-2.25 2.25h-15a2.25 2.25 0 01-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25m19.5 0v.243a2.25 2.25 0 01-1.07 1.916l-7.5 4.615a2.25 2.25 0 01-2.36 0L3.32 8.91a2.25 2.25 0 01-1.07-1.916V6.75"})}),"Send by Email"]})]})]}),document.body)]})}var io=ct(null);function so({value:e,children:t}){/* @__PURE__ */
640
- return _t(io.Provider,{value:e,children:t})}function co(){return bt(io)??(e=>{throw new Error(`efficient-shell: cannot fetch ${e} — no <ShellEntityFetcherProvider> mounted. If your app registers entity windows, supply an entityFetcher.`)})}function uo(e){const t=ie();ht(()=>{if(!t)return;const r=t=>{const r="KeyN"===t.code||"N"===t.key||"n"===t.key;t.altKey&&t.shiftKey&&r&&!t.metaKey&&!t.ctrlKey&&(t.preventDefault(),t.stopPropagation(),e())};return window.addEventListener("keydown",r,!0),()=>window.removeEventListener("keydown",r,!0)},[e,t])}function mo(e){const t=ie();ht(()=>{if(!e||!t)return;const r=t=>{const r="KeyE"===t.code||"E"===t.key||"e"===t.key;t.altKey&&t.shiftKey&&r&&!t.metaKey&&!t.ctrlKey&&(t.preventDefault(),t.stopPropagation(),e())};return window.addEventListener("keydown",r,!0),()=>window.removeEventListener("keydown",r,!0)},[e,t])}function ho(e,t){const r=e?.modalId;return"string"!=typeof r||""===r||(!t||r===t)}function po(e){const t=ce();ht(()=>{if(!e)return;const r=r=>{ho(r.detail,t)&&e()};return document.addEventListener("modal-save",r),()=>document.removeEventListener("modal-save",r)},[e,t])}function go(e){const t=ce();ht(()=>{if(!e)return;const r=r=>{ho(r.detail,t)&&e()};return document.addEventListener("modal-duplicate",r),()=>document.removeEventListener("modal-duplicate",r)},[e,t])}export{or as BLOCKED_PCT_CPU,bn as BehaviorPanel,eo as BulkImportGrid,no as ChangePasswordForm,mn as Customization,Gt as DEV_BANNER_TEXT,zr as Desktop,Rr as DesktopHostProvider,Zt as DevIndicator,$n as EntityList,jn as FilterBar,dr as LOG_CAP,ln as Layout,mr as MIN_EVENT_SAMPLES,ur as MIN_GROUP_SAMPLES,qt as NotificationBell,lo as PdfActionButton,Tr as PerfStats,En as ResizableTable,nr as SMOOTH_FPS,ro as ServerStatusIndicator,Yt as ShellContextMenu,so as ShellEntityFetcherProvider,Ft as ShortcutHelp,wn as SoundsPanel,Jr as StartMenu,vn as SystemPreferences,rr as WidgetManager,hr as appendPerfRecord,Qt as applyDevTitle,cr as classifyActivity,ir as classifyPerf,jt as createWindowRegistry,Bt as createWindowTarget,Er as describeMachine,zn as describePerfReport,Hn as findDuplicateKeys,Jt as isDevEnv,pr as isInteracting,Kn as mergeBulkItems,vr as perfLogToCsv,On as perfReportFile,Lr as readPerfEnvironment,Cr as requestAsyncEnvironment,lr as summariseFrames,xr as summarisePerfLog,Ln as useColumnConfig,Wr as useDesktopHost,mo as useEditHotkey,Wn as useFilters,In as useInfiniteScroll,go as useModalDuplicate,po as useModalSave,uo as useNewHotkey,co as useShellEntityFetcher,An as useSort,kn as useTableNav,Rt as useWindowTarget};
640
+ return _t(io.Provider,{value:e,children:t})}function co(){return bt(io)??(e=>{throw new Error(`efficient-shell: cannot fetch ${e} — no <ShellEntityFetcherProvider> mounted. If your app registers entity windows, supply an entityFetcher.`)})}function uo(e){const t=ie();ht(()=>{if(!t)return;const r=t=>{const r="KeyN"===t.code||"N"===t.key||"n"===t.key;t.altKey&&t.shiftKey&&r&&!t.metaKey&&!t.ctrlKey&&(t.preventDefault(),t.stopPropagation(),e())};return window.addEventListener("keydown",r,!0),()=>window.removeEventListener("keydown",r,!0)},[e,t])}function mo(e){const t=ie();ht(()=>{if(!e||!t)return;const r=t=>{const r="KeyE"===t.code||"E"===t.key||"e"===t.key;t.altKey&&t.shiftKey&&r&&!t.metaKey&&!t.ctrlKey&&(t.preventDefault(),t.stopPropagation(),e())};return window.addEventListener("keydown",r,!0),()=>window.removeEventListener("keydown",r,!0)},[e,t])}function ho(e,t){const r=e?.modalId;return"string"!=typeof r||""===r||(!t||r===t)}function po(e){const t=ce();ht(()=>{if(!e)return;const r=r=>{ho(r.detail,t)&&e()};return document.addEventListener("modal-save",r),()=>document.removeEventListener("modal-save",r)},[e,t])}function go(e){const t=ce();ht(()=>{if(!e)return;const r=r=>{ho(r.detail,t)&&e()};return document.addEventListener("modal-duplicate",r),()=>document.removeEventListener("modal-duplicate",r)},[e,t])}export{or as BLOCKED_PCT_CPU,bn as BehaviorPanel,eo as BulkImportGrid,no as ChangePasswordForm,mn as Customization,Gt as DEV_BANNER_TEXT,zr as Desktop,Rr as DesktopHostProvider,Zt as DevIndicator,$n as EntityList,jn as FilterBar,dr as LOG_CAP,ln as Layout,mr as MIN_EVENT_SAMPLES,ur as MIN_GROUP_SAMPLES,qt as NotificationBell,lo as PdfActionButton,Tr as PerfStats,En as ResizableTable,nr as SMOOTH_FPS,ro as ServerStatusIndicator,Xt as ShellContextMenu,so as ShellEntityFetcherProvider,Ft as ShortcutHelp,wn as SoundsPanel,Jr as StartMenu,vn as SystemPreferences,rr as WidgetManager,hr as appendPerfRecord,Qt as applyDevTitle,cr as classifyActivity,ir as classifyPerf,jt as createWindowRegistry,Bt as createWindowTarget,Er as describeMachine,zn as describePerfReport,Hn as findDuplicateKeys,Jt as isDevEnv,pr as isInteracting,Kn as mergeBulkItems,vr as perfLogToCsv,On as perfReportFile,Lr as readPerfEnvironment,Cr as requestAsyncEnvironment,lr as summariseFrames,xr as summarisePerfLog,Ln as useColumnConfig,Wr as useDesktopHost,mo as useEditHotkey,Wn as useFilters,In as useInfiniteScroll,go as useModalDuplicate,po as useModalSave,uo as useNewHotkey,co as useShellEntityFetcher,An as useSort,kn as useTableNav,Rt as useWindowTarget};