@omniviewdev/ui 0.1.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 (257) hide show
  1. package/LICENSE +661 -0
  2. package/dist/Button-Dmu1cikC.cjs +1 -0
  3. package/dist/Button-lr02bh_m.js +51 -0
  4. package/dist/CodeBlock-B1iQO7zU.js +73 -0
  5. package/dist/CodeBlock-CIyG0DbW.cjs +2 -0
  6. package/dist/CopyButton-CACe3RCF.cjs +1 -0
  7. package/dist/CopyButton-DPBgL0K8.js +77 -0
  8. package/dist/ErrorState-CexYrMpy.js +188 -0
  9. package/dist/ErrorState-CnIR-1xa.cjs +1 -0
  10. package/dist/HotkeyHint-6SOi-MaU.js +37 -0
  11. package/dist/HotkeyHint-DrTOTrIM.cjs +1 -0
  12. package/dist/Icon-CKdIOrjZ.cjs +1 -0
  13. package/dist/Icon-CuO9W7cA.js +27 -0
  14. package/dist/SearchInput-CFBBNdI2.cjs +1 -0
  15. package/dist/SearchInput-D3AsCI5H.js +41 -0
  16. package/dist/Select-CnRBSc5w.cjs +1 -0
  17. package/dist/Select-DTUF31OP.js +206 -0
  18. package/dist/Skeleton-BUYyXUiC.js +32 -0
  19. package/dist/Skeleton-CfdQWLQM.cjs +1 -0
  20. package/dist/StatusDot-CYyJxjJK.cjs +1 -0
  21. package/dist/StatusDot-CncykBAY.js +68 -0
  22. package/dist/StatusPill-C1NaiCzd.js +29 -0
  23. package/dist/StatusPill-C7yn7dSA.cjs +1 -0
  24. package/dist/TabPanel-CkUSl6Bt.cjs +1 -0
  25. package/dist/TabPanel-DLHbgKpl.js +124 -0
  26. package/dist/Text-By4P3in5.js +71 -0
  27. package/dist/Text-Mk6Uyg1w.cjs +1 -0
  28. package/dist/Tooltip-44-P5KfQ.cjs +1 -0
  29. package/dist/Tooltip-BEVuYuZ3.js +41 -0
  30. package/dist/_commonjsHelpers-CvWRHxnb.js +26 -0
  31. package/dist/_commonjsHelpers-D3HyQheV.cjs +1 -0
  32. package/dist/buttons/ActionMenu.d.ts +21 -0
  33. package/dist/buttons/Button.d.ts +31 -0
  34. package/dist/buttons/ButtonGroup.d.ts +18 -0
  35. package/dist/buttons/ConfirmButton.d.ts +10 -0
  36. package/dist/buttons/CopyButton.d.ts +11 -0
  37. package/dist/buttons/IconButton.d.ts +21 -0
  38. package/dist/buttons/SearchBar.d.ts +22 -0
  39. package/dist/buttons/ToggleButton.d.ts +18 -0
  40. package/dist/buttons/ToggleGroup.d.ts +23 -0
  41. package/dist/buttons/Toolbar.d.ts +15 -0
  42. package/dist/buttons/ToolbarGroup.d.ts +11 -0
  43. package/dist/buttons/index.d.ts +22 -0
  44. package/dist/buttons.cjs +1 -0
  45. package/dist/buttons.js +430 -0
  46. package/dist/cells/BadgesCell.d.ts +19 -0
  47. package/dist/cells/ChipCell.d.ts +16 -0
  48. package/dist/cells/SelectBoxHeader.d.ts +11 -0
  49. package/dist/cells/SelectBoxRow.d.ts +11 -0
  50. package/dist/cells/TextCell.d.ts +25 -0
  51. package/dist/cells/index.d.ts +5 -0
  52. package/dist/cells.cjs +1 -0
  53. package/dist/cells.js +284 -0
  54. package/dist/charts/BarChart.d.ts +15 -0
  55. package/dist/charts/ChartContainer.d.ts +12 -0
  56. package/dist/charts/ChartLegend.d.ts +11 -0
  57. package/dist/charts/GaugeCard.d.ts +18 -0
  58. package/dist/charts/MetricsPanel.d.ts +61 -0
  59. package/dist/charts/PieChart.d.ts +13 -0
  60. package/dist/charts/ScatterChart.d.ts +25 -0
  61. package/dist/charts/Sparkline.d.ts +16 -0
  62. package/dist/charts/StackedAreaChart.d.ts +18 -0
  63. package/dist/charts/TimeSeriesChart.d.ts +43 -0
  64. package/dist/charts/formatters.d.ts +17 -0
  65. package/dist/charts/index.d.ts +21 -0
  66. package/dist/charts/palette.d.ts +7 -0
  67. package/dist/charts/types.d.ts +67 -0
  68. package/dist/charts/useChartTheme.d.ts +13 -0
  69. package/dist/charts.cjs +1 -0
  70. package/dist/charts.js +967 -0
  71. package/dist/components/ActionCard.d.ts +22 -0
  72. package/dist/components/AspectRatio.d.ts +13 -0
  73. package/dist/components/Avatar.d.ts +19 -0
  74. package/dist/components/Badge.d.ts +22 -0
  75. package/dist/components/Card.d.ts +24 -0
  76. package/dist/components/Chip.d.ts +32 -0
  77. package/dist/components/ClipboardText.d.ts +14 -0
  78. package/dist/components/DetailsCard.d.ts +25 -0
  79. package/dist/components/EmptySearch.d.ts +12 -0
  80. package/dist/components/ExpandableSections.d.ts +51 -0
  81. package/dist/components/FileIcon.d.ts +12 -0
  82. package/dist/components/HotkeyHint.d.ts +8 -0
  83. package/dist/components/Icon.d.ts +7 -0
  84. package/dist/components/InlineEdit.d.ts +14 -0
  85. package/dist/components/KVCard.d.ts +12 -0
  86. package/dist/components/Kbd.d.ts +8 -0
  87. package/dist/components/List.d.ts +29 -0
  88. package/dist/components/ListCard.d.ts +30 -0
  89. package/dist/components/ListItem.d.ts +27 -0
  90. package/dist/components/LoadingOverlay.d.ts +14 -0
  91. package/dist/components/MediaCard.d.ts +24 -0
  92. package/dist/components/MetricsSection.d.ts +37 -0
  93. package/dist/components/OverflowText.d.ts +12 -0
  94. package/dist/components/StatCard.d.ts +26 -0
  95. package/dist/components/StatusCard.d.ts +29 -0
  96. package/dist/components/TruncatedList.d.ts +13 -0
  97. package/dist/domain/DescriptionList.d.ts +12 -0
  98. package/dist/domain/EventsList.d.ts +11 -0
  99. package/dist/domain/FilterBar.d.ts +23 -0
  100. package/dist/domain/LogsViewer.d.ts +15 -0
  101. package/dist/domain/MetricCard.d.ts +14 -0
  102. package/dist/domain/ObjectInspector.d.ts +19 -0
  103. package/dist/domain/ResourceBreadcrumb.d.ts +19 -0
  104. package/dist/domain/ResourceRef.d.ts +15 -0
  105. package/dist/domain/ResourceStatus.d.ts +17 -0
  106. package/dist/domain/SecretValueMask.d.ts +11 -0
  107. package/dist/domain/Timeline.d.ts +21 -0
  108. package/dist/domain/index.d.ts +23 -0
  109. package/dist/domain/types.d.ts +25 -0
  110. package/dist/domain.cjs +1 -0
  111. package/dist/domain.js +871 -0
  112. package/dist/editors/CodeEditor.d.ts +19 -0
  113. package/dist/editors/CommandPalette.d.ts +22 -0
  114. package/dist/editors/DiffViewer.d.ts +14 -0
  115. package/dist/editors/MarkdownPreview.d.ts +9 -0
  116. package/dist/editors/Terminal.d.ts +18 -0
  117. package/dist/editors/index.d.ts +11 -0
  118. package/dist/editors/themes.d.ts +4 -0
  119. package/dist/editors.cjs +42 -0
  120. package/dist/editors.js +38396 -0
  121. package/dist/feedback/Alert.d.ts +21 -0
  122. package/dist/feedback/ConnectionIndicator.d.ts +15 -0
  123. package/dist/feedback/EmptyState.d.ts +17 -0
  124. package/dist/feedback/ErrorState.d.ts +12 -0
  125. package/dist/feedback/IDEStatusFooter.d.ts +104 -0
  126. package/dist/feedback/NotificationStack.d.ts +32 -0
  127. package/dist/feedback/ProgressBar.d.ts +16 -0
  128. package/dist/feedback/ProgressRing.d.ts +26 -0
  129. package/dist/feedback/RunButton.d.ts +17 -0
  130. package/dist/feedback/Skeleton.d.ts +13 -0
  131. package/dist/feedback/StatusBar.d.ts +12 -0
  132. package/dist/feedback/StatusBarItem.d.ts +18 -0
  133. package/dist/feedback/StatusDot.d.ts +14 -0
  134. package/dist/feedback/StatusPill.d.ts +13 -0
  135. package/dist/feedback/index.d.ts +29 -0
  136. package/dist/feedback.cjs +1 -0
  137. package/dist/feedback.js +1011 -0
  138. package/dist/index.cjs +1 -0
  139. package/dist/index.d.ts +54 -0
  140. package/dist/index.js +1632 -0
  141. package/dist/inputs/Autocomplete.d.ts +30 -0
  142. package/dist/inputs/Checkbox.d.ts +17 -0
  143. package/dist/inputs/ColorPicker.d.ts +13 -0
  144. package/dist/inputs/DebouncedInput.d.ts +10 -0
  145. package/dist/inputs/FormField.d.ts +15 -0
  146. package/dist/inputs/FormSection.d.ts +14 -0
  147. package/dist/inputs/KeyValueEditor.d.ts +17 -0
  148. package/dist/inputs/RadioGroup.d.ts +23 -0
  149. package/dist/inputs/SearchInput.d.ts +14 -0
  150. package/dist/inputs/Select.d.ts +32 -0
  151. package/dist/inputs/Slider.d.ts +24 -0
  152. package/dist/inputs/Switch.d.ts +17 -0
  153. package/dist/inputs/TagInput.d.ts +18 -0
  154. package/dist/inputs/TextArea.d.ts +26 -0
  155. package/dist/inputs/TextField.d.ts +39 -0
  156. package/dist/inputs/TimeRangePicker.d.ts +21 -0
  157. package/dist/inputs/index.d.ts +31 -0
  158. package/dist/inputs.cjs +21 -0
  159. package/dist/inputs.js +15834 -0
  160. package/dist/layout/AppShell.d.ts +18 -0
  161. package/dist/layout/DockLayout.d.ts +23 -0
  162. package/dist/layout/Inline.d.ts +15 -0
  163. package/dist/layout/Panel.d.ts +17 -0
  164. package/dist/layout/ResizableSplitPane.d.ts +18 -0
  165. package/dist/layout/Spacer.d.ts +9 -0
  166. package/dist/layout/Stack.d.ts +19 -0
  167. package/dist/layout/index.d.ts +16 -0
  168. package/dist/layout/useResizablePanel.d.ts +18 -0
  169. package/dist/layout.cjs +5 -0
  170. package/dist/layout.js +378 -0
  171. package/dist/menus/ContextMenu.d.ts +12 -0
  172. package/dist/menus/DropdownMenu.d.ts +20 -0
  173. package/dist/menus/MenuBar.d.ts +11 -0
  174. package/dist/menus/NestedMenuItem.d.ts +13 -0
  175. package/dist/menus/SplitButton.d.ts +15 -0
  176. package/dist/menus/index.d.ts +11 -0
  177. package/dist/menus/types.d.ts +24 -0
  178. package/dist/menus.cjs +1 -0
  179. package/dist/menus.js +355 -0
  180. package/dist/navigation/Breadcrumbs.d.ts +18 -0
  181. package/dist/navigation/DraggableTabs.d.ts +24 -0
  182. package/dist/navigation/Pagination.d.ts +15 -0
  183. package/dist/navigation/PersistentTabPanel.d.ts +13 -0
  184. package/dist/navigation/Stepper.d.ts +19 -0
  185. package/dist/navigation/TabPanel.d.ts +11 -0
  186. package/dist/navigation/Tabs.d.ts +26 -0
  187. package/dist/navigation/TreeView.d.ts +27 -0
  188. package/dist/navigation/index.d.ts +16 -0
  189. package/dist/navigation.cjs +1 -0
  190. package/dist/navigation.js +429 -0
  191. package/dist/overlays/Dialog.d.ts +18 -0
  192. package/dist/overlays/Drawer.d.ts +17 -0
  193. package/dist/overlays/ErrorOverlay.d.ts +21 -0
  194. package/dist/overlays/Modal.d.ts +14 -0
  195. package/dist/overlays/NotificationCenter.d.ts +31 -0
  196. package/dist/overlays/Popover.d.ts +15 -0
  197. package/dist/overlays/Spotlight.d.ts +24 -0
  198. package/dist/overlays/ToastProvider.d.ts +32 -0
  199. package/dist/overlays/Tooltip.d.ts +15 -0
  200. package/dist/overlays/index.d.ts +20 -0
  201. package/dist/overlays/useToast.d.ts +21 -0
  202. package/dist/overlays.cjs +1 -0
  203. package/dist/overlays.js +865 -0
  204. package/dist/sidebars/ActivityBar.d.ts +16 -0
  205. package/dist/sidebars/NavMenu.d.ts +27 -0
  206. package/dist/sidebars/NavMenu.test.d.ts +1 -0
  207. package/dist/sidebars/PropertyGrid.d.ts +16 -0
  208. package/dist/sidebars/SidebarGroup.d.ts +15 -0
  209. package/dist/sidebars/SidebarPanel.d.ts +19 -0
  210. package/dist/sidebars/SidebarTreeItem.d.ts +21 -0
  211. package/dist/sidebars/index.d.ts +13 -0
  212. package/dist/sidebars/types.d.ts +29 -0
  213. package/dist/sidebars.cjs +1 -0
  214. package/dist/sidebars.js +762 -0
  215. package/dist/table/ColumnFilter.d.ts +10 -0
  216. package/dist/table/DataTable.d.ts +23 -0
  217. package/dist/table/IDETable.d.ts +48 -0
  218. package/dist/table/TableEmptyState.d.ts +12 -0
  219. package/dist/table/TableSkeleton.d.ts +11 -0
  220. package/dist/table/TableToolbar.d.ts +15 -0
  221. package/dist/table/index.d.ts +12 -0
  222. package/dist/table/types.d.ts +4 -0
  223. package/dist/table.cjs +1 -0
  224. package/dist/table.js +580 -0
  225. package/dist/theme/AppTheme.d.ts +14 -0
  226. package/dist/theme/customizations/dataDisplay.d.ts +2 -0
  227. package/dist/theme/customizations/feedback.d.ts +2 -0
  228. package/dist/theme/customizations/inputs.d.ts +2 -0
  229. package/dist/theme/customizations/navigation.d.ts +2 -0
  230. package/dist/theme/index.d.ts +36 -0
  231. package/dist/theme/primitives.d.ts +234 -0
  232. package/dist/theme.cjs +1 -0
  233. package/dist/theme.js +1362 -0
  234. package/dist/tokens.css +252 -0
  235. package/dist/types/index.d.ts +7 -0
  236. package/dist/types/maps.d.ts +25 -0
  237. package/dist/types/variants.d.ts +21 -0
  238. package/dist/types.cjs +1 -0
  239. package/dist/types.js +96 -0
  240. package/dist/typography/CodeBlock.d.ts +15 -0
  241. package/dist/typography/CodeInline.d.ts +10 -0
  242. package/dist/typography/Heading.d.ts +13 -0
  243. package/dist/typography/Link.d.ts +18 -0
  244. package/dist/typography/Text.d.ts +22 -0
  245. package/dist/typography/index.d.ts +10 -0
  246. package/dist/typography.cjs +1 -0
  247. package/dist/typography.js +120 -0
  248. package/dist/ui.css +1 -0
  249. package/dist/units-BuBKbqQ7.js +54 -0
  250. package/dist/units-CDpdlN1W.cjs +1 -0
  251. package/dist/utils/index.d.ts +4 -0
  252. package/dist/utils/language.d.ts +4 -0
  253. package/dist/utils/time.d.ts +5 -0
  254. package/dist/utils/units.d.ts +7 -0
  255. package/dist/utils.cjs +1 -0
  256. package/dist/utils.js +78 -0
  257. package/package.json +261 -0
package/dist/menus.cjs ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),o=require("react"),x=require("@mui/material/Menu"),z=require("@mui/material/Divider"),k=require("@mui/material/MenuItem"),m=require("@mui/material/ListItemIcon"),M=require("@mui/material/ListItemText"),E=require("react-icons/lu"),W=require("./HotkeyHint-DrTOTrIM.cjs"),q=require("@mui/material/Box"),I=require("@mui/material/Button"),A=require("@mui/material/ButtonGroup"),C=require("./types.cjs");function p({item:r,onClose:i,submenuDirection:s="right"}){const[d,u]=o.useState(!1),h=o.useRef(null),a=()=>u(!0),n=()=>u(!1),t=()=>{r.onClick&&(r.onClick(),i())};return r.children?.length?e.jsxs(e.Fragment,{children:[e.jsxs(k,{ref:h,disabled:r.disabled,onMouseEnter:a,onMouseLeave:n,onClick:a,sx:{fontSize:"var(--ov-text-sm)",color:r.color==="danger"||r.color==="error"?"var(--ov-danger-default)":"var(--ov-fg-default)",display:"flex",justifyContent:"space-between",gap:.5},children:[r.icon&&e.jsx(m,{sx:{color:"inherit",minWidth:24},children:r.icon}),e.jsx(M,{children:r.label}),e.jsx(E.LuChevronRight,{size:14})]}),e.jsx(x,{open:d,anchorEl:h.current,onClose:n,anchorOrigin:{vertical:"top",horizontal:s==="left"?"left":"right"},transformOrigin:{vertical:"top",horizontal:s==="left"?"right":"left"},slotProps:{paper:{sx:{minWidth:160,bgcolor:"var(--ov-bg-surface)",border:"1px solid var(--ov-border-default)",pointerEvents:"auto"},onMouseEnter:a,onMouseLeave:n}},sx:{pointerEvents:"none"},disableAutoFocus:!0,disableEnforceFocus:!0,children:r.children.flatMap(l=>{const v=[e.jsx(p,{item:l,onClose:i,submenuDirection:s},l.key)];return l.dividerAfter&&v.push(e.jsx("hr",{style:{margin:"4px 0",border:"none",borderTop:"1px solid var(--ov-border-muted)"}},`${l.key}-divider`)),v})})]}):e.jsxs(k,{ref:h,disabled:r.disabled,onClick:t,sx:{fontSize:"var(--ov-text-sm)",color:r.color==="danger"||r.color==="error"?"var(--ov-danger-default)":"var(--ov-fg-default)",gap:.5},children:[r.icon&&e.jsx(m,{sx:{color:"inherit",minWidth:24},children:r.icon}),e.jsx(M,{children:r.label}),r.shortcut&&e.jsx(W.HotkeyHint,{keys:r.shortcut})]})}p.displayName="NestedMenuItem";function R({items:r,children:i,onOpenChange:s}){const[d,u]=o.useState(null),h=o.useCallback(n=>{n.preventDefault(),n.stopPropagation(),u({top:n.clientY,left:n.clientX}),s?.(!0)},[s]),a=o.useCallback(()=>{u(null),s?.(!1)},[s]);return e.jsxs(e.Fragment,{children:[e.jsx("span",{onContextMenu:h,style:{display:"contents"},children:i}),e.jsx(x,{open:d!==null,onClose:a,anchorReference:"anchorPosition",anchorPosition:d??void 0,slotProps:{paper:{sx:{minWidth:180,bgcolor:"var(--ov-bg-surface)",border:"1px solid var(--ov-border-default)"}}},children:r.map(n=>e.jsxs(o.Fragment,{children:[e.jsx(p,{item:n,onClose:a}),n.dividerAfter&&e.jsx(z,{})]},n.key))})]})}R.displayName="ContextMenu";const N={"bottom-start":{anchor:{vertical:"bottom",horizontal:"left"},transform:{vertical:"top",horizontal:"left"}},"bottom-end":{anchor:{vertical:"bottom",horizontal:"right"},transform:{vertical:"top",horizontal:"right"}},"top-start":{anchor:{vertical:"top",horizontal:"left"},transform:{vertical:"bottom",horizontal:"left"}},"top-end":{anchor:{vertical:"top",horizontal:"right"},transform:{vertical:"bottom",horizontal:"right"}}};function B({items:r,trigger:i,placement:s="bottom-start",submenuDirection:d,width:u}){const[h,a]=o.useState(!1),n=o.useRef(null),t=o.useCallback(()=>a(!1),[]),l=o.useCallback(()=>a(f=>!f),[]),{anchor:v,transform:g}=N[s],j=d??(s.endsWith("-end")?"left":"right");return e.jsxs(e.Fragment,{children:[e.jsx("span",{ref:n,onClick:l,style:{cursor:"pointer",display:"inline-flex"},children:i}),e.jsx(x,{open:h,anchorEl:n.current,onClose:t,anchorOrigin:v,transformOrigin:g,slotProps:{paper:{sx:{minWidth:u??180,bgcolor:"var(--ov-bg-surface)",border:"1px solid var(--ov-border-default)"}}},children:r.flatMap(f=>{const b=[e.jsx(p,{item:f,onClose:t,submenuDirection:j},f.key)];return f.dividerAfter&&b.push(e.jsx(z,{},`${f.key}-divider`)),b})})]})}B.displayName="DropdownMenu";function F({menus:r,sx:i}){const[s,d]=o.useState(null),u=o.useRef({}),h=o.useCallback(()=>d(null),[]),a=o.useCallback(t=>{d(l=>l===t?null:t)},[]),n=o.useCallback(t=>{s!==null&&d(t)},[s]);return e.jsx(q,{sx:{display:"flex",alignItems:"center",height:32,bgcolor:"var(--ov-bg-surface)",borderBottom:"1px solid var(--ov-border-default)",...typeof i=="object"&&!Array.isArray(i)?i:{}},children:r.map(t=>e.jsxs(o.Fragment,{children:[e.jsx(q,{component:"button",ref:l=>{u.current[t.key]=l},onClick:()=>a(t.key),onMouseEnter:()=>n(t.key),sx:{border:"none",background:s===t.key?"var(--ov-state-hover)":"transparent",color:"var(--ov-fg-default)",fontSize:"var(--ov-text-sm)",fontFamily:"var(--ov-font-ui)",px:1.5,py:.5,cursor:"pointer",borderRadius:"4px","&:hover":{bgcolor:"var(--ov-state-hover)"}},children:t.label}),e.jsx(x,{open:s===t.key,anchorEl:u.current[t.key],onClose:h,anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},slotProps:{paper:{sx:{minWidth:200,bgcolor:"var(--ov-bg-surface)",border:"1px solid var(--ov-border-default)"}}},children:t.items.map(l=>e.jsxs(o.Fragment,{children:[e.jsx(p,{item:l,onClose:h}),l.dividerAfter&&e.jsx(z,{})]},l.key))})]},t.key))})}F.displayName="MenuBar";function O({options:r,onSelect:i,defaultIndex:s=0,color:d="primary",emphasis:u="soft",size:h="sm"}){const[a,n]=o.useState(s),[t,l]=o.useState(!1),v=o.useRef(null),g=C.toMuiColor(d),j=C.toMuiVariant(u),f=C.toMuiSize(h),b=o.useCallback(()=>{const c=r[a];c&&!c.disabled&&i(c)},[r,a,i]),P=o.useCallback(c=>{n(c),l(!1),i(r[c])},[r,i]),y=r[a];return e.jsxs(e.Fragment,{children:[e.jsxs(A,{ref:v,variant:j,color:g,size:f,children:[e.jsx(I,{onClick:b,disabled:y?.disabled,startIcon:y?.icon,children:y?.label}),e.jsx(I,{onClick:()=>l(c=>!c),sx:{px:.5,minWidth:"auto"},"aria-label":"Select option",children:e.jsx(E.LuChevronDown,{size:14})})]}),e.jsx(x,{open:t,anchorEl:v.current,onClose:()=>l(!1),anchorOrigin:{vertical:"bottom",horizontal:"left"},transformOrigin:{vertical:"top",horizontal:"left"},slotProps:{paper:{sx:{minWidth:160,bgcolor:"var(--ov-bg-surface)",border:"1px solid var(--ov-border-default)"}}},children:r.map((c,S)=>e.jsxs(k,{disabled:c.disabled,selected:S===a,onClick:()=>P(S),sx:{fontSize:"var(--ov-text-sm)"},children:[c.icon&&e.jsx(m,{sx:{minWidth:28},children:c.icon}),e.jsx(M,{children:c.label})]},c.key))})]})}O.displayName="SplitButton";exports.ContextMenu=R;exports.DropdownMenu=B;exports.MenuBar=F;exports.NestedMenuItem=p;exports.SplitButton=O;
package/dist/menus.js ADDED
@@ -0,0 +1,355 @@
1
+ import { jsxs as h, jsx as r, Fragment as y } from "react/jsx-runtime";
2
+ import E, { useState as b, useRef as C, useCallback as u } from "react";
3
+ import m from "@mui/material/Menu";
4
+ import P from "@mui/material/Divider";
5
+ import I from "@mui/material/MenuItem";
6
+ import W from "@mui/material/ListItemIcon";
7
+ import O from "@mui/material/ListItemText";
8
+ import { LuChevronRight as N, LuChevronDown as R } from "react-icons/lu";
9
+ import { H as L } from "./HotkeyHint-6SOi-MaU.js";
10
+ import A from "@mui/material/Box";
11
+ import B from "@mui/material/Button";
12
+ import D from "@mui/material/ButtonGroup";
13
+ import { toMuiColor as j, toMuiVariant as w, toMuiSize as H } from "./types.js";
14
+ function g({ item: o, onClose: i, submenuDirection: n = "right" }) {
15
+ const [c, d] = b(!1), f = C(null), a = () => d(!0), t = () => d(!1), e = () => {
16
+ o.onClick && (o.onClick(), i());
17
+ };
18
+ return o.children?.length ? /* @__PURE__ */ h(y, { children: [
19
+ /* @__PURE__ */ h(
20
+ I,
21
+ {
22
+ ref: f,
23
+ disabled: o.disabled,
24
+ onMouseEnter: a,
25
+ onMouseLeave: t,
26
+ onClick: a,
27
+ sx: {
28
+ fontSize: "var(--ov-text-sm)",
29
+ color: o.color === "danger" || o.color === "error" ? "var(--ov-danger-default)" : "var(--ov-fg-default)",
30
+ display: "flex",
31
+ justifyContent: "space-between",
32
+ gap: 0.5
33
+ },
34
+ children: [
35
+ o.icon && /* @__PURE__ */ r(W, { sx: { color: "inherit", minWidth: 24 }, children: o.icon }),
36
+ /* @__PURE__ */ r(O, { children: o.label }),
37
+ /* @__PURE__ */ r(N, { size: 14 })
38
+ ]
39
+ }
40
+ ),
41
+ /* @__PURE__ */ r(
42
+ m,
43
+ {
44
+ open: c,
45
+ anchorEl: f.current,
46
+ onClose: t,
47
+ anchorOrigin: {
48
+ vertical: "top",
49
+ horizontal: n === "left" ? "left" : "right"
50
+ },
51
+ transformOrigin: {
52
+ vertical: "top",
53
+ horizontal: n === "left" ? "right" : "left"
54
+ },
55
+ slotProps: {
56
+ paper: {
57
+ sx: {
58
+ minWidth: 160,
59
+ bgcolor: "var(--ov-bg-surface)",
60
+ border: "1px solid var(--ov-border-default)",
61
+ pointerEvents: "auto"
62
+ },
63
+ onMouseEnter: a,
64
+ onMouseLeave: t
65
+ }
66
+ },
67
+ sx: { pointerEvents: "none" },
68
+ disableAutoFocus: !0,
69
+ disableEnforceFocus: !0,
70
+ children: o.children.flatMap((l) => {
71
+ const v = [
72
+ /* @__PURE__ */ r(g, { item: l, onClose: i, submenuDirection: n }, l.key)
73
+ ];
74
+ return l.dividerAfter && v.push(
75
+ /* @__PURE__ */ r(
76
+ "hr",
77
+ {
78
+ style: {
79
+ margin: "4px 0",
80
+ border: "none",
81
+ borderTop: "1px solid var(--ov-border-muted)"
82
+ }
83
+ },
84
+ `${l.key}-divider`
85
+ )
86
+ ), v;
87
+ })
88
+ }
89
+ )
90
+ ] }) : /* @__PURE__ */ h(
91
+ I,
92
+ {
93
+ ref: f,
94
+ disabled: o.disabled,
95
+ onClick: e,
96
+ sx: {
97
+ fontSize: "var(--ov-text-sm)",
98
+ color: o.color === "danger" || o.color === "error" ? "var(--ov-danger-default)" : "var(--ov-fg-default)",
99
+ gap: 0.5
100
+ },
101
+ children: [
102
+ o.icon && /* @__PURE__ */ r(W, { sx: { color: "inherit", minWidth: 24 }, children: o.icon }),
103
+ /* @__PURE__ */ r(O, { children: o.label }),
104
+ o.shortcut && /* @__PURE__ */ r(L, { keys: o.shortcut })
105
+ ]
106
+ }
107
+ );
108
+ }
109
+ g.displayName = "NestedMenuItem";
110
+ function T({
111
+ items: o,
112
+ children: i,
113
+ onOpenChange: n
114
+ }) {
115
+ const [c, d] = b(null), f = u((t) => {
116
+ t.preventDefault(), t.stopPropagation(), d({ top: t.clientY, left: t.clientX }), n?.(!0);
117
+ }, [n]), a = u(() => {
118
+ d(null), n?.(!1);
119
+ }, [n]);
120
+ return /* @__PURE__ */ h(y, { children: [
121
+ /* @__PURE__ */ r("span", { onContextMenu: f, style: { display: "contents" }, children: i }),
122
+ /* @__PURE__ */ r(
123
+ m,
124
+ {
125
+ open: c !== null,
126
+ onClose: a,
127
+ anchorReference: "anchorPosition",
128
+ anchorPosition: c ?? void 0,
129
+ slotProps: {
130
+ paper: {
131
+ sx: {
132
+ minWidth: 180,
133
+ bgcolor: "var(--ov-bg-surface)",
134
+ border: "1px solid var(--ov-border-default)"
135
+ }
136
+ }
137
+ },
138
+ children: o.map((t) => /* @__PURE__ */ h(E.Fragment, { children: [
139
+ /* @__PURE__ */ r(g, { item: t, onClose: a }),
140
+ t.dividerAfter && /* @__PURE__ */ r(P, {})
141
+ ] }, t.key))
142
+ }
143
+ )
144
+ ] });
145
+ }
146
+ T.displayName = "ContextMenu";
147
+ const K = {
148
+ "bottom-start": { anchor: { vertical: "bottom", horizontal: "left" }, transform: { vertical: "top", horizontal: "left" } },
149
+ "bottom-end": { anchor: { vertical: "bottom", horizontal: "right" }, transform: { vertical: "top", horizontal: "right" } },
150
+ "top-start": { anchor: { vertical: "top", horizontal: "left" }, transform: { vertical: "bottom", horizontal: "left" } },
151
+ "top-end": { anchor: { vertical: "top", horizontal: "right" }, transform: { vertical: "bottom", horizontal: "right" } }
152
+ };
153
+ function V({
154
+ items: o,
155
+ trigger: i,
156
+ placement: n = "bottom-start",
157
+ submenuDirection: c,
158
+ width: d
159
+ }) {
160
+ const [f, a] = b(!1), t = C(null), e = u(() => a(!1), []), l = u(() => a((p) => !p), []), { anchor: v, transform: k } = K[n], M = c ?? (n.endsWith("-end") ? "left" : "right");
161
+ return /* @__PURE__ */ h(y, { children: [
162
+ /* @__PURE__ */ r(
163
+ "span",
164
+ {
165
+ ref: t,
166
+ onClick: l,
167
+ style: { cursor: "pointer", display: "inline-flex" },
168
+ children: i
169
+ }
170
+ ),
171
+ /* @__PURE__ */ r(
172
+ m,
173
+ {
174
+ open: f,
175
+ anchorEl: t.current,
176
+ onClose: e,
177
+ anchorOrigin: v,
178
+ transformOrigin: k,
179
+ slotProps: {
180
+ paper: {
181
+ sx: {
182
+ minWidth: d ?? 180,
183
+ bgcolor: "var(--ov-bg-surface)",
184
+ border: "1px solid var(--ov-border-default)"
185
+ }
186
+ }
187
+ },
188
+ children: o.flatMap((p) => {
189
+ const x = [
190
+ /* @__PURE__ */ r(g, { item: p, onClose: e, submenuDirection: M }, p.key)
191
+ ];
192
+ return p.dividerAfter && x.push(/* @__PURE__ */ r(P, {}, `${p.key}-divider`)), x;
193
+ })
194
+ }
195
+ )
196
+ ] });
197
+ }
198
+ V.displayName = "DropdownMenu";
199
+ function _({ menus: o, sx: i }) {
200
+ const [n, c] = b(null), d = C({}), f = u(() => c(null), []), a = u((e) => {
201
+ c((l) => l === e ? null : e);
202
+ }, []), t = u((e) => {
203
+ n !== null && c(e);
204
+ }, [n]);
205
+ return /* @__PURE__ */ r(
206
+ A,
207
+ {
208
+ sx: {
209
+ display: "flex",
210
+ alignItems: "center",
211
+ height: 32,
212
+ bgcolor: "var(--ov-bg-surface)",
213
+ borderBottom: "1px solid var(--ov-border-default)",
214
+ ...typeof i == "object" && !Array.isArray(i) ? i : {}
215
+ },
216
+ children: o.map((e) => /* @__PURE__ */ h(E.Fragment, { children: [
217
+ /* @__PURE__ */ r(
218
+ A,
219
+ {
220
+ component: "button",
221
+ ref: (l) => {
222
+ d.current[e.key] = l;
223
+ },
224
+ onClick: () => a(e.key),
225
+ onMouseEnter: () => t(e.key),
226
+ sx: {
227
+ border: "none",
228
+ background: n === e.key ? "var(--ov-state-hover)" : "transparent",
229
+ color: "var(--ov-fg-default)",
230
+ fontSize: "var(--ov-text-sm)",
231
+ fontFamily: "var(--ov-font-ui)",
232
+ px: 1.5,
233
+ py: 0.5,
234
+ cursor: "pointer",
235
+ borderRadius: "4px",
236
+ "&:hover": { bgcolor: "var(--ov-state-hover)" }
237
+ },
238
+ children: e.label
239
+ }
240
+ ),
241
+ /* @__PURE__ */ r(
242
+ m,
243
+ {
244
+ open: n === e.key,
245
+ anchorEl: d.current[e.key],
246
+ onClose: f,
247
+ anchorOrigin: { vertical: "bottom", horizontal: "left" },
248
+ transformOrigin: { vertical: "top", horizontal: "left" },
249
+ slotProps: {
250
+ paper: {
251
+ sx: {
252
+ minWidth: 200,
253
+ bgcolor: "var(--ov-bg-surface)",
254
+ border: "1px solid var(--ov-border-default)"
255
+ }
256
+ }
257
+ },
258
+ children: e.items.map((l) => /* @__PURE__ */ h(E.Fragment, { children: [
259
+ /* @__PURE__ */ r(g, { item: l, onClose: f }),
260
+ l.dividerAfter && /* @__PURE__ */ r(P, {})
261
+ ] }, l.key))
262
+ }
263
+ )
264
+ ] }, e.key))
265
+ }
266
+ );
267
+ }
268
+ _.displayName = "MenuBar";
269
+ function $({
270
+ options: o,
271
+ onSelect: i,
272
+ defaultIndex: n = 0,
273
+ color: c = "primary",
274
+ emphasis: d = "soft",
275
+ size: f = "sm"
276
+ }) {
277
+ const [a, t] = b(n), [e, l] = b(!1), v = C(null), k = j(c), M = w(d), p = H(f), x = u(() => {
278
+ const s = o[a];
279
+ s && !s.disabled && i(s);
280
+ }, [o, a, i]), F = u((s) => {
281
+ t(s), l(!1), i(o[s]);
282
+ }, [o, i]), z = o[a];
283
+ return /* @__PURE__ */ h(y, { children: [
284
+ /* @__PURE__ */ h(
285
+ D,
286
+ {
287
+ ref: v,
288
+ variant: M,
289
+ color: k,
290
+ size: p,
291
+ children: [
292
+ /* @__PURE__ */ r(
293
+ B,
294
+ {
295
+ onClick: x,
296
+ disabled: z?.disabled,
297
+ startIcon: z?.icon,
298
+ children: z?.label
299
+ }
300
+ ),
301
+ /* @__PURE__ */ r(
302
+ B,
303
+ {
304
+ onClick: () => l((s) => !s),
305
+ sx: { px: 0.5, minWidth: "auto" },
306
+ "aria-label": "Select option",
307
+ children: /* @__PURE__ */ r(R, { size: 14 })
308
+ }
309
+ )
310
+ ]
311
+ }
312
+ ),
313
+ /* @__PURE__ */ r(
314
+ m,
315
+ {
316
+ open: e,
317
+ anchorEl: v.current,
318
+ onClose: () => l(!1),
319
+ anchorOrigin: { vertical: "bottom", horizontal: "left" },
320
+ transformOrigin: { vertical: "top", horizontal: "left" },
321
+ slotProps: {
322
+ paper: {
323
+ sx: {
324
+ minWidth: 160,
325
+ bgcolor: "var(--ov-bg-surface)",
326
+ border: "1px solid var(--ov-border-default)"
327
+ }
328
+ }
329
+ },
330
+ children: o.map((s, S) => /* @__PURE__ */ h(
331
+ I,
332
+ {
333
+ disabled: s.disabled,
334
+ selected: S === a,
335
+ onClick: () => F(S),
336
+ sx: { fontSize: "var(--ov-text-sm)" },
337
+ children: [
338
+ s.icon && /* @__PURE__ */ r(W, { sx: { minWidth: 28 }, children: s.icon }),
339
+ /* @__PURE__ */ r(O, { children: s.label })
340
+ ]
341
+ },
342
+ s.key
343
+ ))
344
+ }
345
+ )
346
+ ] });
347
+ }
348
+ $.displayName = "SplitButton";
349
+ export {
350
+ T as ContextMenu,
351
+ V as DropdownMenu,
352
+ _ as MenuBar,
353
+ g as NestedMenuItem,
354
+ $ as SplitButton
355
+ };
@@ -0,0 +1,18 @@
1
+ import { SxProps, Theme } from '@mui/material/styles';
2
+ export interface BreadcrumbItem {
3
+ label: string;
4
+ href?: string;
5
+ icon?: React.ReactNode;
6
+ onClick?: () => void;
7
+ }
8
+ export interface BreadcrumbsProps {
9
+ items: BreadcrumbItem[];
10
+ separator?: React.ReactNode;
11
+ maxItems?: number;
12
+ sx?: SxProps<Theme>;
13
+ }
14
+ declare function Breadcrumbs({ items, separator, maxItems, sx, }: BreadcrumbsProps): import("react/jsx-runtime").JSX.Element;
15
+ declare namespace Breadcrumbs {
16
+ var displayName: string;
17
+ }
18
+ export default Breadcrumbs;
@@ -0,0 +1,24 @@
1
+ import { default as React } from 'react';
2
+ import { SxProps, Theme } from '@mui/material/styles';
3
+ export interface DraggableTab {
4
+ id: string;
5
+ label: string;
6
+ icon?: React.ReactNode;
7
+ closable?: boolean;
8
+ }
9
+ export interface DraggableTabsProps {
10
+ tabs: DraggableTab[];
11
+ activeId: string;
12
+ onSelect: (id: string) => void;
13
+ onClose?: (id: string) => void;
14
+ onReorder?: (tabs: DraggableTab[]) => void;
15
+ onAdd?: () => void;
16
+ onContextMenu?: (id: string, event: React.MouseEvent) => void;
17
+ maxTabWidth?: number;
18
+ sx?: SxProps<Theme>;
19
+ }
20
+ declare function DraggableTabs({ tabs, activeId, onSelect, onClose, onReorder, onAdd, onContextMenu, maxTabWidth, sx, }: DraggableTabsProps): import("react/jsx-runtime").JSX.Element;
21
+ declare namespace DraggableTabs {
22
+ var displayName: string;
23
+ }
24
+ export default DraggableTabs;
@@ -0,0 +1,15 @@
1
+ import { SxProps, Theme } from '@mui/material/styles';
2
+ import { ComponentSize } from '../types';
3
+ export interface PaginationProps {
4
+ count: number;
5
+ page: number;
6
+ onChange: (page: number) => void;
7
+ variant?: 'compact' | 'full';
8
+ size?: ComponentSize;
9
+ sx?: SxProps<Theme>;
10
+ }
11
+ declare function Pagination({ count, page, onChange, variant, size, sx, }: PaginationProps): import("react/jsx-runtime").JSX.Element;
12
+ declare namespace Pagination {
13
+ var displayName: string;
14
+ }
15
+ export default Pagination;
@@ -0,0 +1,13 @@
1
+ import { default as React } from 'react';
2
+ import { SxProps, Theme } from '@mui/material/styles';
3
+ export interface PersistentTabPanelProps {
4
+ children: React.ReactNode;
5
+ value: string;
6
+ activeValue: string;
7
+ sx?: SxProps<Theme>;
8
+ }
9
+ declare function PersistentTabPanel({ children, value, activeValue, sx, }: PersistentTabPanelProps): import("react/jsx-runtime").JSX.Element;
10
+ declare namespace PersistentTabPanel {
11
+ var displayName: string;
12
+ }
13
+ export default PersistentTabPanel;
@@ -0,0 +1,19 @@
1
+ import { SxProps, Theme } from '@mui/material/styles';
2
+ export interface StepItem {
3
+ label: string;
4
+ description?: string;
5
+ icon?: React.ReactNode;
6
+ optional?: boolean;
7
+ }
8
+ export interface StepperProps {
9
+ steps: StepItem[];
10
+ activeStep: number;
11
+ orientation?: 'horizontal' | 'vertical';
12
+ variant?: 'linear' | 'nonLinear';
13
+ sx?: SxProps<Theme>;
14
+ }
15
+ declare function Stepper({ steps, activeStep, orientation, variant, sx, }: StepperProps): import("react/jsx-runtime").JSX.Element;
16
+ declare namespace Stepper {
17
+ var displayName: string;
18
+ }
19
+ export default Stepper;
@@ -0,0 +1,11 @@
1
+ export interface TabPanelProps {
2
+ value: string;
3
+ activeValue: string;
4
+ children: React.ReactNode;
5
+ keepMounted?: boolean;
6
+ }
7
+ declare function TabPanel({ value, activeValue, children, keepMounted, }: TabPanelProps): import("react/jsx-runtime").JSX.Element | null;
8
+ declare namespace TabPanel {
9
+ var displayName: string;
10
+ }
11
+ export default TabPanel;
@@ -0,0 +1,26 @@
1
+ import { SxProps, Theme } from '@mui/material/styles';
2
+ import { ComponentSize } from '../types';
3
+ export interface TabItem {
4
+ key: string;
5
+ label: string;
6
+ icon?: React.ReactNode;
7
+ disabled?: boolean;
8
+ }
9
+ export interface TabsProps {
10
+ tabs: TabItem[];
11
+ value: string;
12
+ onChange: (key: string) => void;
13
+ variant?: 'line' | 'pill' | 'segmented';
14
+ size?: ComponentSize;
15
+ closable?: boolean;
16
+ onClose?: (key: string) => void;
17
+ scrollable?: boolean;
18
+ addButton?: boolean;
19
+ onAdd?: () => void;
20
+ sx?: SxProps<Theme>;
21
+ }
22
+ declare function Tabs({ tabs, value, onChange, variant, size, closable, onClose, scrollable, addButton, onAdd, sx, }: TabsProps): import("react/jsx-runtime").JSX.Element;
23
+ declare namespace Tabs {
24
+ var displayName: string;
25
+ }
26
+ export default Tabs;
@@ -0,0 +1,27 @@
1
+ import { SxProps, Theme } from '@mui/material/styles';
2
+ export interface TreeNode {
3
+ id: string;
4
+ label: string;
5
+ icon?: React.ReactNode;
6
+ children?: TreeNode[];
7
+ badge?: React.ReactNode;
8
+ disabled?: boolean;
9
+ }
10
+ export interface TreeViewProps {
11
+ nodes: TreeNode[];
12
+ selected?: string;
13
+ onSelect?: (id: string) => void;
14
+ expanded?: string[];
15
+ onToggle?: (id: string) => void;
16
+ multiSelect?: boolean;
17
+ checkboxes?: boolean;
18
+ lazyLoad?: boolean;
19
+ onLoadChildren?: (id: string) => Promise<TreeNode[]>;
20
+ contextMenu?: (node: TreeNode) => React.ReactNode;
21
+ sx?: SxProps<Theme>;
22
+ }
23
+ declare function TreeView({ nodes, selected, onSelect, expanded: controlledExpanded, onToggle: controlledOnToggle, checkboxes, lazyLoad, onLoadChildren, sx, }: TreeViewProps): import("react/jsx-runtime").JSX.Element;
24
+ declare namespace TreeView {
25
+ var displayName: string;
26
+ }
27
+ export default TreeView;
@@ -0,0 +1,16 @@
1
+ export { default as Tabs } from './Tabs';
2
+ export type { TabsProps, TabItem } from './Tabs';
3
+ export { default as TabPanel } from './TabPanel';
4
+ export type { TabPanelProps } from './TabPanel';
5
+ export { default as TreeView } from './TreeView';
6
+ export type { TreeViewProps, TreeNode } from './TreeView';
7
+ export { default as Breadcrumbs } from './Breadcrumbs';
8
+ export type { BreadcrumbsProps, BreadcrumbItem } from './Breadcrumbs';
9
+ export { default as Stepper } from './Stepper';
10
+ export type { StepperProps, StepItem } from './Stepper';
11
+ export { default as Pagination } from './Pagination';
12
+ export type { PaginationProps } from './Pagination';
13
+ export { default as DraggableTabs } from './DraggableTabs';
14
+ export type { DraggableTabsProps, DraggableTab } from './DraggableTabs';
15
+ export { default as PersistentTabPanel } from './PersistentTabPanel';
16
+ export type { PersistentTabPanelProps } from './PersistentTabPanel';
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const q=require("./TabPanel-CkUSl6Bt.cjs"),e=require("react/jsx-runtime"),j=require("react"),x=require("@mui/material/Box"),W=require("@mui/material/Collapse"),S=require("@mui/material/Typography"),E=require("@mui/material/Checkbox"),O=require("@mui/material/CircularProgress"),k=require("react-icons/lu"),V=require("@mui/material/Breadcrumbs"),P=require("@mui/material/Link"),R=require("@mui/material/Stepper"),X=require("@mui/material/Step"),_=require("@mui/material/StepLabel"),F=require("@mui/material/Pagination"),T=require("@mui/material/IconButton"),C=require("./types.cjs");function D({node:r,depth:s,selected:d,onSelect:a,expanded:i,onToggle:t,checkboxes:u,lazyLoad:p,onLoadChildren:f,loadingNodes:m,setLoadingNodes:g,dynamicChildren:b,setDynamicChildren:n}){const h=i.has(r.id),l=d===r.id,o=b.get(r.id)??r.children,y=o&&o.length>0||p&&!b.has(r.id),v=m.has(r.id),w=async()=>{if(p&&!b.has(r.id)&&f){g(c=>new Set(c).add(r.id));try{const c=await f(r.id);n(z=>new Map(z).set(r.id,c))}finally{g(c=>{const z=new Set(c);return z.delete(r.id),z})}}t(r.id)};return e.jsxs(x,{children:[e.jsxs(x,{onClick:()=>{r.disabled||a?.(r.id)},sx:{display:"flex",alignItems:"center",gap:.5,py:.25,px:1,pl:s*2+1,cursor:r.disabled?"default":"pointer",opacity:r.disabled?.5:1,borderRadius:"4px",bgcolor:l?"var(--ov-accent-subtle)":"transparent",color:l?"var(--ov-accent-fg)":"var(--ov-fg-default)","&:hover":{bgcolor:l?"var(--ov-accent-subtle)":"var(--ov-state-hover)"},fontSize:"0.8125rem"},children:[y?e.jsx(x,{onClick:c=>{c.stopPropagation(),w()},sx:{display:"flex",alignItems:"center",cursor:"pointer",flexShrink:0},children:v?e.jsx(O,{size:12}):h?e.jsx(k.LuChevronDown,{size:14}):e.jsx(k.LuChevronRight,{size:14})}):e.jsx(x,{sx:{width:14,flexShrink:0}}),u&&e.jsx(E,{size:"small",checked:l,disabled:r.disabled,onClick:c=>c.stopPropagation(),onChange:()=>a?.(r.id),sx:{p:0}}),r.icon&&e.jsx(x,{sx:{display:"flex",alignItems:"center",flexShrink:0},children:r.icon}),e.jsx(S,{variant:"body2",sx:{flex:1,fontSize:"inherit",color:"inherit"},noWrap:!0,children:r.label}),r.badge]}),y&&o&&e.jsx(W,{in:h,unmountOnExit:!0,children:o.map(c=>e.jsx(D,{node:c,depth:s+1,selected:d,onSelect:a,expanded:i,onToggle:t,checkboxes:u,lazyLoad:p,onLoadChildren:f,loadingNodes:m,setLoadingNodes:g,dynamicChildren:b,setDynamicChildren:n},c.id))})]})}function M({nodes:r,selected:s,onSelect:d,expanded:a,onToggle:i,checkboxes:t=!1,lazyLoad:u=!1,onLoadChildren:p,sx:f}){const[m,g]=j.useState(new Set),[b,n]=j.useState(new Set),[h,l]=j.useState(new Map),o=a?new Set(a):m,y=j.useCallback(v=>{i?i(v):g(w=>{const c=new Set(w);return c.has(v)?c.delete(v):c.add(v),c})},[i]);return e.jsx(x,{sx:f,children:r.map(v=>e.jsx(D,{node:v,depth:0,selected:s,onSelect:d,expanded:o,onToggle:y,checkboxes:t,lazyLoad:u,onLoadChildren:p,loadingNodes:b,setLoadingNodes:n,dynamicChildren:h,setDynamicChildren:l},v.id))})}M.displayName="TreeView";function I({items:r,separator:s,maxItems:d,sx:a}){return e.jsx(V,{separator:s??"/",maxItems:d,sx:{fontSize:"0.8125rem",color:"var(--ov-fg-muted)",...typeof a=="object"&&!Array.isArray(a)?a:{}},children:r.map((i,t)=>{const u=t===r.length-1,p=e.jsxs(x,{sx:{display:"inline-flex",alignItems:"center",gap:.5},children:[i.icon,e.jsx("span",{children:i.label})]});return u?e.jsx(S,{variant:"body2",sx:{fontSize:"inherit",color:"var(--ov-fg-base)",fontWeight:500},children:p},t):i.onClick?e.jsx(P,{component:"button",variant:"body2",onClick:i.onClick,underline:"hover",sx:{fontSize:"inherit",cursor:"pointer",color:"inherit"},children:p},t):i.href?e.jsx(P,{href:i.href,variant:"body2",underline:"hover",sx:{fontSize:"inherit",color:"inherit"},children:p},t):e.jsx(S,{variant:"body2",sx:{fontSize:"inherit",color:"inherit"},children:p},t)})})}I.displayName="Breadcrumbs";function A({steps:r,activeStep:s,orientation:d="horizontal",variant:a="linear",sx:i}){return e.jsx(R,{activeStep:s,orientation:d,nonLinear:a==="nonLinear",sx:i,children:r.map((t,u)=>e.jsx(X,{children:e.jsx(_,{icon:t.icon,optional:t.optional?e.jsx(S,{variant:"caption",sx:{color:"var(--ov-fg-muted)"},children:"Optional"}):t.description?e.jsx(S,{variant:"caption",sx:{color:"var(--ov-fg-muted)"},children:t.description}):void 0,children:t.label})},u))})}A.displayName="Stepper";function L({count:r,page:s,onChange:d,variant:a="full",size:i="md",sx:t}){if(a==="compact"){const u=C.toMuiSize(i);return e.jsxs(x,{sx:{display:"flex",alignItems:"center",gap:1,...typeof t=="object"&&!Array.isArray(t)?t:{}},children:[e.jsx(T,{size:u,disabled:s<=1,onClick:()=>d(s-1),children:e.jsx(k.LuChevronLeft,{})}),e.jsxs(x,{sx:{fontSize:"0.8125rem",color:"var(--ov-fg-default)"},children:[s," / ",r]}),e.jsx(T,{size:u,disabled:s>=r,onClick:()=>d(s+1),children:e.jsx(k.LuChevronRight,{})})]})}return e.jsx(F,{count:r,page:s,onChange:(u,p)=>d(p),size:C.toMuiSize(i),sx:t})}L.displayName="Pagination";function B({tabs:r,activeId:s,onSelect:d,onClose:a,onReorder:i,onAdd:t,onContextMenu:u,maxTabWidth:p=180,sx:f}){const m=j.useCallback((n,h)=>{n.dataTransfer.setData("text/plain",String(h)),n.dataTransfer.effectAllowed="move"},[]),g=j.useCallback((n,h)=>{n.preventDefault();const l=parseInt(n.dataTransfer.getData("text/plain"),10);if(isNaN(l)||l===h||!i)return;const o=[...r],[y]=o.splice(l,1);o.splice(h,0,y),i(o)},[r,i]),b=j.useCallback(n=>{n.preventDefault(),n.dataTransfer.dropEffect="move"},[]);return e.jsxs(x,{sx:{display:"flex",alignItems:"end",height:36,overflow:"auto",bgcolor:"var(--ov-bg-surface)",borderBottom:"1px solid var(--ov-border-default)",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"},...typeof f=="object"&&!Array.isArray(f)?f:{}},children:[r.map((n,h)=>{const l=n.id===s;return e.jsxs(x,{draggable:!!i,onDragStart:o=>m(o,h),onDragOver:b,onDrop:o=>g(o,h),onContextMenu:o=>{u&&(o.preventDefault(),u(n.id,o))},onClick:()=>d(n.id),sx:{display:"flex",alignItems:"center",gap:.75,maxWidth:p,height:l?35:32,px:1.5,cursor:"pointer",flexShrink:0,borderBottom:l?"2px solid var(--ov-accent)":"2px solid transparent",bgcolor:l?"var(--ov-bg-base)":"transparent",color:l?"var(--ov-fg-base)":"var(--ov-fg-muted)","&:hover":{bgcolor:l?"var(--ov-bg-base)":"var(--ov-state-hover)","& .tab-close":{opacity:1}}},children:[n.icon&&e.jsx(x,{sx:{display:"flex",flexShrink:0,fontSize:14},children:n.icon}),e.jsx(S,{noWrap:!0,sx:{fontSize:"var(--ov-text-xs)",fontWeight:l?500:400,flex:1,minWidth:0},children:n.label}),n.closable!==!1&&a&&e.jsx(T,{className:"tab-close",size:"small",onClick:o=>{o.stopPropagation(),a(n.id)},sx:{p:"1px",opacity:l?.7:0,color:"inherit","&:hover":{opacity:1,bgcolor:"var(--ov-state-hover)"}},children:e.jsx(k.LuX,{size:12})})]},n.id)}),t&&e.jsx(T,{size:"small",onClick:t,sx:{mx:.5,p:"4px",color:"var(--ov-fg-muted)","&:hover":{bgcolor:"var(--ov-state-hover)"}},children:e.jsx(k.LuPlus,{size:14})})]})}B.displayName="DraggableTabs";function N({children:r,value:s,activeValue:d,sx:a}){const i=s===d;return e.jsx(x,{role:"tabpanel",hidden:!i,sx:{display:i?"block":"none",flex:1,overflow:"auto",...typeof a=="object"&&!Array.isArray(a)?a:{}},children:r})}N.displayName="PersistentTabPanel";exports.TabPanel=q.TabPanel;exports.Tabs=q.Tabs;exports.Breadcrumbs=I;exports.DraggableTabs=B;exports.Pagination=L;exports.PersistentTabPanel=N;exports.Stepper=A;exports.TreeView=M;