@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/table.js ADDED
@@ -0,0 +1,580 @@
1
+ import { jsxs as s, jsx as e, Fragment as ie } from "react/jsx-runtime";
2
+ import ae, { useState as w, useMemo as J, useCallback as ce } from "react";
3
+ import de from "@mui/material/Card";
4
+ import se from "@mui/material/CardContent";
5
+ import ge from "@mui/material/ClickAwayListener";
6
+ import me from "@mui/material/Divider";
7
+ import pe from "@mui/material/IconButton";
8
+ import he from "@mui/material/Popper";
9
+ import O from "@mui/material/Stack";
10
+ import fe from "@mui/material/Switch";
11
+ import x from "@mui/material/Typography";
12
+ import { styled as ue } from "@mui/material/styles";
13
+ import { LuSettings2 as xe, LuColumns2 as ve } from "react-icons/lu";
14
+ import { useReactTable as K, getExpandedRowModel as Se, getFilteredRowModel as Q, getSortedRowModel as U, getCoreRowModel as X, flexRender as I } from "@tanstack/react-table";
15
+ import Y from "@mui/material/Table";
16
+ import Z from "@mui/material/TableHead";
17
+ import ee from "@mui/material/TableBody";
18
+ import f from "@mui/material/TableRow";
19
+ import u from "@mui/material/TableCell";
20
+ import _ from "@mui/material/Checkbox";
21
+ import d from "@mui/material/Box";
22
+ import oe from "@mui/material/TableSortLabel";
23
+ import { S as H } from "./Skeleton-BUYyXUiC.js";
24
+ import { S as be } from "./SearchInput-D3AsCI5H.js";
25
+ import ye from "@mui/material/InputBase";
26
+ import Ce from "@mui/icons-material/Search";
27
+ const we = ue("div")(({ theme: r }) => ({
28
+ width: "max-content",
29
+ borderRadius: "8px",
30
+ border: `1px solid ${r.palette.divider}`,
31
+ backgroundColor: r.palette.background.paper,
32
+ boxShadow: r.palette.mode === "dark" ? "0px 4px 8px rgb(0 0 0 / 0.7)" : "0px 4px 8px rgb(0 0 0 / 0.1)",
33
+ fontFamily: "var(--ov-font-ui)",
34
+ fontSize: "0.875rem",
35
+ zIndex: 1
36
+ })), Ie = ({ anchorEl: r, columns: p, onClose: c, onClick: a }) => {
37
+ const g = !!r;
38
+ return /* @__PURE__ */ s(ae.Fragment, { children: [
39
+ /* @__PURE__ */ e(
40
+ pe,
41
+ {
42
+ size: "small",
43
+ onClick: a,
44
+ sx: { border: "1px solid", borderColor: "divider" },
45
+ children: /* @__PURE__ */ e(xe, { size: 20 })
46
+ }
47
+ ),
48
+ /* @__PURE__ */ e(
49
+ he,
50
+ {
51
+ style: { zIndex: 1e3 },
52
+ id: "table-filter-menu",
53
+ open: g,
54
+ anchorEl: r,
55
+ placement: "bottom-end",
56
+ children: /* @__PURE__ */ e(
57
+ ge,
58
+ {
59
+ onClickAway: () => {
60
+ c();
61
+ },
62
+ children: /* @__PURE__ */ e(we, { children: /* @__PURE__ */ s(
63
+ de,
64
+ {
65
+ variant: "outlined",
66
+ sx: {
67
+ maxHeight: "max-content",
68
+ maxWidth: "100%",
69
+ minWidth: "300px",
70
+ p: 1.25,
71
+ gap: 1.25
72
+ },
73
+ children: [
74
+ /* @__PURE__ */ s(O, { direction: "row", spacing: 0.5, alignItems: "center", px: 1, pt: 0.5, children: [
75
+ /* @__PURE__ */ e(ve, { size: 14 }),
76
+ /* @__PURE__ */ e(x, { variant: "subtitle2", children: "Columns" })
77
+ ] }),
78
+ /* @__PURE__ */ e(me, {}),
79
+ /* @__PURE__ */ e(
80
+ se,
81
+ {
82
+ sx: {
83
+ display: "flex",
84
+ flexDirection: "column",
85
+ gap: 1.5
86
+ },
87
+ children: p.filter((i) => i.getCanHide()).map((i) => /* @__PURE__ */ s(
88
+ O,
89
+ {
90
+ direction: "row",
91
+ spacing: 1,
92
+ alignItems: "center",
93
+ component: "label",
94
+ sx: { cursor: "pointer" },
95
+ children: [
96
+ /* @__PURE__ */ e(
97
+ fe,
98
+ {
99
+ size: "small",
100
+ checked: i.getIsVisible(),
101
+ onChange: i.getToggleVisibilityHandler()
102
+ }
103
+ ),
104
+ /* @__PURE__ */ e(x, { variant: "caption", children: i.columnDef.header?.toString() })
105
+ ]
106
+ },
107
+ i.columnDef.id
108
+ ))
109
+ }
110
+ )
111
+ ]
112
+ }
113
+ ) })
114
+ }
115
+ )
116
+ }
117
+ )
118
+ ] });
119
+ };
120
+ Ie.displayName = "ColumnFilter";
121
+ const q = {
122
+ compact: { rowHeight: 28, cellPy: 0.25, cellPx: 0.75 },
123
+ comfortable: { rowHeight: 40, cellPy: 1, cellPx: 1.5 },
124
+ spacious: { rowHeight: 56, cellPy: 2, cellPx: 2 }
125
+ };
126
+ function ze({
127
+ columns: r,
128
+ data: p,
129
+ density: c = "comfortable",
130
+ loading: a = !1,
131
+ error: g,
132
+ emptyState: i,
133
+ onRowClick: h,
134
+ selection: m = "none",
135
+ stickyHeader: S = !1,
136
+ rowActions: z,
137
+ expandable: b = !1,
138
+ renderDetail: M,
139
+ sx: y
140
+ }) {
141
+ const [v, D] = w([]), [$, W] = w({}), [B, R] = w({}), k = q[c] || q.comfortable, C = J(() => {
142
+ const n = [];
143
+ return m === "multi" && n.push({
144
+ id: "__select",
145
+ header: ({ table: t }) => /* @__PURE__ */ e(
146
+ _,
147
+ {
148
+ size: "small",
149
+ checked: t.getIsAllRowsSelected(),
150
+ indeterminate: t.getIsSomeRowsSelected(),
151
+ onChange: t.getToggleAllRowsSelectedHandler(),
152
+ sx: { p: 0 }
153
+ }
154
+ ),
155
+ cell: ({ row: t }) => /* @__PURE__ */ e(
156
+ _,
157
+ {
158
+ size: "small",
159
+ checked: t.getIsSelected(),
160
+ onChange: t.getToggleSelectedHandler(),
161
+ sx: { p: 0 }
162
+ }
163
+ ),
164
+ size: 40
165
+ }), n.push(...r), z && n.push({
166
+ id: "__actions",
167
+ header: "",
168
+ cell: ({ row: t }) => z(t.original),
169
+ size: 60
170
+ }), n;
171
+ }, [r, m, z]), T = K({
172
+ data: p,
173
+ columns: C,
174
+ state: { sorting: v, rowSelection: $, expanded: B },
175
+ onSortingChange: D,
176
+ onRowSelectionChange: W,
177
+ onExpandedChange: R,
178
+ getCoreRowModel: X(),
179
+ getSortedRowModel: U(),
180
+ getFilteredRowModel: Q(),
181
+ getExpandedRowModel: b ? Se() : void 0,
182
+ enableRowSelection: m !== "none",
183
+ enableMultiRowSelection: m === "multi"
184
+ });
185
+ return g ? /* @__PURE__ */ e(d, { sx: { p: 3 }, children: g }) : /* @__PURE__ */ e(d, { sx: { overflow: "auto", ...typeof y == "object" && !Array.isArray(y) ? y : {} }, children: /* @__PURE__ */ s(
186
+ Y,
187
+ {
188
+ size: "small",
189
+ stickyHeader: S,
190
+ sx: { "& td, & th": { py: k.cellPy, px: k.cellPx } },
191
+ children: [
192
+ /* @__PURE__ */ e(Z, { children: T.getHeaderGroups().map((n) => /* @__PURE__ */ e(f, { children: n.headers.map((t) => /* @__PURE__ */ e(
193
+ u,
194
+ {
195
+ sx: {
196
+ fontWeight: 600,
197
+ fontSize: "0.75rem",
198
+ color: "var(--ov-fg-muted)",
199
+ bgcolor: S ? "var(--ov-bg-surface)" : void 0,
200
+ whiteSpace: "nowrap",
201
+ width: t.getSize()
202
+ },
203
+ children: t.isPlaceholder ? null : t.column.getCanSort() ? /* @__PURE__ */ e(
204
+ oe,
205
+ {
206
+ active: !!t.column.getIsSorted(),
207
+ direction: t.column.getIsSorted() === "desc" ? "desc" : "asc",
208
+ onClick: t.column.getToggleSortingHandler(),
209
+ children: I(t.column.columnDef.header, t.getContext())
210
+ }
211
+ ) : I(t.column.columnDef.header, t.getContext())
212
+ },
213
+ t.id
214
+ )) }, n.id)) }),
215
+ /* @__PURE__ */ e(ee, { children: a ? Array.from({ length: 5 }).map((n, t) => /* @__PURE__ */ e(f, { children: C.map((j, F) => /* @__PURE__ */ e(u, { children: /* @__PURE__ */ e(H, { variant: "text", width: "80%" }) }, F)) }, `skeleton-${t}`)) : T.getRowModel().rows.length === 0 ? i ? /* @__PURE__ */ e(f, { children: /* @__PURE__ */ e(u, { colSpan: C.length, sx: { textAlign: "center", py: 4 }, children: i }) }) : null : T.getRowModel().rows.map((n) => /* @__PURE__ */ s(ie, { children: [
216
+ /* @__PURE__ */ e(
217
+ f,
218
+ {
219
+ hover: !0,
220
+ selected: n.getIsSelected(),
221
+ onClick: () => {
222
+ m === "single" && n.toggleSelected(!n.getIsSelected()), b && n.toggleExpanded(), h?.(n.original);
223
+ },
224
+ sx: {
225
+ cursor: h || b || m === "single" ? "pointer" : void 0,
226
+ height: k.rowHeight
227
+ },
228
+ children: n.getVisibleCells().map((t) => /* @__PURE__ */ e(
229
+ u,
230
+ {
231
+ sx: { fontSize: "0.8125rem", color: "var(--ov-fg-default)" },
232
+ children: I(t.column.columnDef.cell, t.getContext())
233
+ },
234
+ t.id
235
+ ))
236
+ },
237
+ n.id
238
+ ),
239
+ b && n.getIsExpanded() && M && /* @__PURE__ */ e(f, { children: /* @__PURE__ */ e(u, { colSpan: C.length, sx: { bgcolor: "var(--ov-bg-surface-inset)" }, children: M(n.original) }) }, `${n.id}-detail`)
240
+ ] })) })
241
+ ]
242
+ }
243
+ ) });
244
+ }
245
+ ze.displayName = "DataTable";
246
+ function Re({
247
+ title: r,
248
+ searchValue: p,
249
+ onSearch: c,
250
+ filters: a,
251
+ actions: g,
252
+ selectedCount: i,
253
+ sx: h
254
+ }) {
255
+ return /* @__PURE__ */ s(
256
+ d,
257
+ {
258
+ sx: {
259
+ display: "flex",
260
+ alignItems: "center",
261
+ gap: 1.5,
262
+ px: 1.5,
263
+ py: 1,
264
+ borderBottom: "1px solid var(--ov-border-default)",
265
+ ...typeof h == "object" && !Array.isArray(h) ? h : {}
266
+ },
267
+ children: [
268
+ r && /* @__PURE__ */ e(x, { variant: "subtitle2", sx: { fontWeight: 600, color: "var(--ov-fg-base)", mr: 1 }, children: r }),
269
+ i != null && i > 0 && /* @__PURE__ */ s(x, { variant: "body2", sx: { color: "var(--ov-accent-fg)", fontWeight: 500 }, children: [
270
+ i,
271
+ " selected"
272
+ ] }),
273
+ c && /* @__PURE__ */ e(
274
+ be,
275
+ {
276
+ value: p ?? "",
277
+ onChange: c,
278
+ placeholder: "Search..."
279
+ }
280
+ ),
281
+ a && /* @__PURE__ */ e(d, { sx: { display: "flex", gap: 0.5, alignItems: "center" }, children: a }),
282
+ /* @__PURE__ */ e(d, { sx: { flex: 1 } }),
283
+ g && /* @__PURE__ */ e(d, { sx: { display: "flex", gap: 0.5, alignItems: "center" }, children: g })
284
+ ]
285
+ }
286
+ );
287
+ }
288
+ Re.displayName = "TableToolbar";
289
+ const ke = {
290
+ compact: 0.25,
291
+ comfortable: 1,
292
+ spacious: 2
293
+ };
294
+ function Te({
295
+ columns: r,
296
+ rows: p = 5,
297
+ density: c = "comfortable"
298
+ }) {
299
+ const a = ke[c] ?? 1;
300
+ return /* @__PURE__ */ s(Y, { size: "small", children: [
301
+ /* @__PURE__ */ e(Z, { children: /* @__PURE__ */ e(f, { children: Array.from({ length: r }).map((g, i) => /* @__PURE__ */ e(u, { sx: { py: a, fontWeight: 600 }, children: /* @__PURE__ */ e(H, { variant: "text", width: "60%" }) }, i)) }) }),
302
+ /* @__PURE__ */ e(ee, { children: Array.from({ length: p }).map((g, i) => /* @__PURE__ */ e(f, { children: Array.from({ length: r }).map((h, m) => /* @__PURE__ */ e(u, { sx: { py: a }, children: /* @__PURE__ */ e(H, { variant: "text", width: `${50 + Math.random() * 40}%` }) }, m)) }, i)) })
303
+ ] });
304
+ }
305
+ Te.displayName = "TableSkeleton";
306
+ function Me({
307
+ icon: r,
308
+ title: p,
309
+ description: c,
310
+ action: a,
311
+ colSpan: g
312
+ }) {
313
+ return /* @__PURE__ */ e(f, { children: /* @__PURE__ */ e(u, { colSpan: g, sx: { textAlign: "center", py: 6, border: 0 }, children: /* @__PURE__ */ s(d, { sx: { display: "flex", flexDirection: "column", alignItems: "center", gap: 1.5 }, children: [
314
+ r && /* @__PURE__ */ e(d, { sx: { color: "var(--ov-fg-faint)", fontSize: 40 }, children: r }),
315
+ /* @__PURE__ */ e(x, { variant: "subtitle1", sx: { fontWeight: 600, color: "var(--ov-fg-base)" }, children: p }),
316
+ c && /* @__PURE__ */ e(x, { variant: "body2", sx: { color: "var(--ov-fg-muted)", maxWidth: 360 }, children: c }),
317
+ a && /* @__PURE__ */ e(d, { sx: { mt: 1 }, children: a })
318
+ ] }) }) });
319
+ }
320
+ Me.displayName = "TableEmptyState";
321
+ function Ae({
322
+ columns: r,
323
+ data: p,
324
+ rowHeight: c = 30,
325
+ selection: a = !1,
326
+ selectedRows: g,
327
+ onSelectionChange: i,
328
+ onRowClick: h,
329
+ rowActions: m,
330
+ searchable: S = !1,
331
+ searchPlaceholder: z = "Search...",
332
+ searchValue: b,
333
+ onSearchChange: M,
334
+ toolbar: y,
335
+ countLabel: v,
336
+ loading: D = !1,
337
+ skeletonRows: $ = 8,
338
+ emptyState: W,
339
+ stickyHeader: B = !0,
340
+ sx: R
341
+ }) {
342
+ const [k, C] = w([]), [T, n] = w({}), [t, j] = w(""), F = g ?? T, te = i ?? n, L = b ?? t, G = M ?? j, E = J(() => {
343
+ const l = [];
344
+ return a && l.push({
345
+ id: "__select",
346
+ header: ({ table: o }) => /* @__PURE__ */ e(
347
+ _,
348
+ {
349
+ size: "small",
350
+ checked: o.getIsAllRowsSelected(),
351
+ indeterminate: o.getIsSomeRowsSelected(),
352
+ onChange: o.getToggleAllRowsSelectedHandler(),
353
+ sx: { p: 0, color: "var(--ov-fg-faint)", "&.Mui-checked, &.MuiCheckbox-indeterminate": { color: "var(--ov-accent-fg)" } }
354
+ }
355
+ ),
356
+ cell: ({ row: o }) => /* @__PURE__ */ e(
357
+ _,
358
+ {
359
+ size: "small",
360
+ checked: o.getIsSelected(),
361
+ onChange: o.getToggleSelectedHandler(),
362
+ onClick: (P) => P.stopPropagation(),
363
+ sx: { p: 0, color: "var(--ov-fg-faint)", "&.Mui-checked": { color: "var(--ov-accent-fg)" } }
364
+ }
365
+ ),
366
+ size: 32,
367
+ enableSorting: !1
368
+ }), l.push(...r), m && l.push({
369
+ id: "__actions",
370
+ header: "",
371
+ cell: ({ row: o }) => /* @__PURE__ */ e(d, { onClick: (P) => P.stopPropagation(), children: m(o.original) }),
372
+ size: 36,
373
+ enableSorting: !1
374
+ }), l;
375
+ }, [r, a, m]), A = K({
376
+ data: p,
377
+ columns: E,
378
+ state: { sorting: k, rowSelection: F, globalFilter: L },
379
+ onSortingChange: C,
380
+ onRowSelectionChange: te,
381
+ onGlobalFilterChange: G,
382
+ getCoreRowModel: X(),
383
+ getSortedRowModel: U(),
384
+ getFilteredRowModel: Q(),
385
+ enableRowSelection: a,
386
+ enableMultiRowSelection: a
387
+ }), le = ce((l) => {
388
+ h?.(l);
389
+ }, [h]), re = c + 2, N = "8px", V = "0px";
390
+ return /* @__PURE__ */ s(
391
+ d,
392
+ {
393
+ sx: {
394
+ display: "flex",
395
+ flexDirection: "column",
396
+ flex: 1,
397
+ minHeight: 0,
398
+ bgcolor: "var(--ov-bg-base)",
399
+ ...typeof R == "object" && !Array.isArray(R) ? R : {}
400
+ },
401
+ children: [
402
+ (S || y || v) && /* @__PURE__ */ s(
403
+ d,
404
+ {
405
+ sx: {
406
+ display: "flex",
407
+ alignItems: "center",
408
+ gap: 1,
409
+ px: 1,
410
+ py: 0.5,
411
+ borderBottom: "1px solid var(--ov-border-default)",
412
+ bgcolor: "var(--ov-bg-surface)",
413
+ flexShrink: 0
414
+ },
415
+ children: [
416
+ S && /* @__PURE__ */ s(
417
+ d,
418
+ {
419
+ sx: {
420
+ display: "flex",
421
+ alignItems: "center",
422
+ flex: 1,
423
+ maxWidth: 360,
424
+ height: 28,
425
+ border: "1px solid var(--ov-border-default)",
426
+ borderRadius: "4px",
427
+ bgcolor: "var(--ov-bg-base)",
428
+ px: 0.75,
429
+ "&:focus-within": { borderColor: "var(--ov-accent)" }
430
+ },
431
+ children: [
432
+ /* @__PURE__ */ e(Ce, { sx: { fontSize: 14, color: "var(--ov-fg-faint)", mr: 0.5 } }),
433
+ /* @__PURE__ */ e(
434
+ ye,
435
+ {
436
+ value: L,
437
+ onChange: (l) => G(l.target.value),
438
+ placeholder: v ? `Search ${v}...` : z,
439
+ sx: {
440
+ flex: 1,
441
+ fontSize: "0.75rem",
442
+ color: "var(--ov-fg-default)",
443
+ "& input": { py: 0, px: 0 },
444
+ "& input::placeholder": { color: "var(--ov-fg-faint)", opacity: 1 }
445
+ }
446
+ }
447
+ )
448
+ ]
449
+ }
450
+ ),
451
+ !S && v && /* @__PURE__ */ e(x, { sx: { fontSize: "0.75rem", color: "var(--ov-fg-muted)", fontWeight: 500 }, children: v }),
452
+ /* @__PURE__ */ e(d, { sx: { flex: 1 } }),
453
+ y
454
+ ]
455
+ }
456
+ ),
457
+ /* @__PURE__ */ e(d, { sx: { flex: 1, overflow: "auto", minHeight: 0 }, children: /* @__PURE__ */ s(
458
+ "table",
459
+ {
460
+ style: {
461
+ width: "100%",
462
+ borderCollapse: "collapse",
463
+ fontFamily: "var(--ov-font-ui)",
464
+ fontSize: "0.75rem",
465
+ tableLayout: "fixed"
466
+ },
467
+ children: [
468
+ /* @__PURE__ */ e("colgroup", { children: A.getAllColumns().map((l) => /* @__PURE__ */ e("col", { style: { width: l.getSize() !== 150 ? l.getSize() : void 0 } }, l.id)) }),
469
+ /* @__PURE__ */ e("thead", { children: A.getHeaderGroups().map((l) => /* @__PURE__ */ e(
470
+ "tr",
471
+ {
472
+ style: {
473
+ height: re,
474
+ ...B ? { position: "sticky", top: 0, zIndex: 2 } : {}
475
+ },
476
+ children: l.headers.map((o) => /* @__PURE__ */ e(
477
+ "th",
478
+ {
479
+ style: {
480
+ padding: `${V} ${N}`,
481
+ textAlign: "left",
482
+ fontWeight: 600,
483
+ fontSize: "0.6875rem",
484
+ color: "var(--ov-fg-muted)",
485
+ backgroundColor: "var(--ov-bg-surface)",
486
+ borderBottom: "1px solid var(--ov-border-default)",
487
+ whiteSpace: "nowrap",
488
+ overflow: "hidden",
489
+ userSelect: "none",
490
+ letterSpacing: "0.01em"
491
+ },
492
+ children: o.isPlaceholder ? null : o.column.getCanSort() ? /* @__PURE__ */ e(
493
+ oe,
494
+ {
495
+ active: !!o.column.getIsSorted(),
496
+ direction: o.column.getIsSorted() === "desc" ? "desc" : "asc",
497
+ onClick: o.column.getToggleSortingHandler(),
498
+ sx: {
499
+ fontSize: "inherit",
500
+ fontWeight: "inherit",
501
+ color: "inherit !important",
502
+ "& .MuiTableSortLabel-icon": { fontSize: 12, opacity: 0.5 }
503
+ },
504
+ children: I(o.column.columnDef.header, o.getContext())
505
+ }
506
+ ) : I(o.column.columnDef.header, o.getContext())
507
+ },
508
+ o.id
509
+ ))
510
+ },
511
+ l.id
512
+ )) }),
513
+ /* @__PURE__ */ e("tbody", { children: D ? Array.from({ length: $ }).map((l, o) => /* @__PURE__ */ e("tr", { style: { height: c }, children: E.map((P, ne) => /* @__PURE__ */ e(
514
+ "td",
515
+ {
516
+ style: {
517
+ padding: `${V} ${N}`,
518
+ borderBottom: "1px solid var(--ov-border-muted)"
519
+ },
520
+ children: /* @__PURE__ */ e(H, { variant: "text", width: "70%", sx: { fontSize: "0.75rem" } })
521
+ },
522
+ ne
523
+ )) }, `skel-${o}`)) : A.getRowModel().rows.length === 0 ? /* @__PURE__ */ e("tr", { children: /* @__PURE__ */ e(
524
+ "td",
525
+ {
526
+ colSpan: E.length,
527
+ style: { textAlign: "center", padding: "32px 8px", color: "var(--ov-fg-faint)" },
528
+ children: W ?? /* @__PURE__ */ e(x, { sx: { fontSize: "0.75rem", color: "var(--ov-fg-faint)" }, children: "No items to display" })
529
+ }
530
+ ) }) : A.getRowModel().rows.map((l) => /* @__PURE__ */ e(
531
+ "tr",
532
+ {
533
+ onClick: () => le(l.original),
534
+ style: {
535
+ height: c,
536
+ cursor: h ? "pointer" : void 0,
537
+ backgroundColor: l.getIsSelected() ? "var(--ov-accent-subtle)" : void 0
538
+ },
539
+ onMouseEnter: (o) => {
540
+ l.getIsSelected() || (o.currentTarget.style.backgroundColor = "var(--ov-state-hover)");
541
+ },
542
+ onMouseLeave: (o) => {
543
+ o.currentTarget.style.backgroundColor = l.getIsSelected() ? "var(--ov-accent-subtle)" : "";
544
+ },
545
+ children: l.getVisibleCells().map((o) => /* @__PURE__ */ e(
546
+ "td",
547
+ {
548
+ style: {
549
+ padding: `${V} ${N}`,
550
+ fontSize: "0.75rem",
551
+ color: "var(--ov-fg-default)",
552
+ borderBottom: "1px solid var(--ov-border-muted)",
553
+ whiteSpace: "nowrap",
554
+ overflow: "hidden",
555
+ textOverflow: "ellipsis",
556
+ lineHeight: `${c}px`
557
+ },
558
+ children: I(o.column.columnDef.cell, o.getContext())
559
+ },
560
+ o.id
561
+ ))
562
+ },
563
+ l.id
564
+ )) })
565
+ ]
566
+ }
567
+ ) })
568
+ ]
569
+ }
570
+ );
571
+ }
572
+ Ae.displayName = "IDETable";
573
+ export {
574
+ Ie as ColumnFilter,
575
+ ze as DataTable,
576
+ Ae as IDETable,
577
+ Me as TableEmptyState,
578
+ Te as TableSkeleton,
579
+ Re as TableToolbar
580
+ };
@@ -0,0 +1,14 @@
1
+ import { ThemeOptions } from '@mui/material/styles';
2
+ import { ReactNode } from 'react';
3
+ export type ColorMode = 'light' | 'dark' | 'system';
4
+ interface AppThemeProps {
5
+ children: ReactNode;
6
+ /** Additional component overrides to merge into the theme */
7
+ themeComponents?: ThemeOptions['components'];
8
+ /** Skip all custom theming (renders children with a bare MUI theme) */
9
+ disableCustomTheme?: boolean;
10
+ /** Default color mode. Defaults to 'dark'. */
11
+ defaultMode?: ColorMode;
12
+ }
13
+ export default function AppTheme({ children, disableCustomTheme, themeComponents, defaultMode, }: AppThemeProps): import("react/jsx-runtime").JSX.Element;
14
+ export {};
@@ -0,0 +1,2 @@
1
+ import { Components, Theme } from '@mui/material/styles';
2
+ export declare const dataDisplayCustomizations: Components<Theme>;
@@ -0,0 +1,2 @@
1
+ import { Components, Theme } from '@mui/material/styles';
2
+ export declare const feedbackCustomizations: Components<Theme>;
@@ -0,0 +1,2 @@
1
+ import { Components, Theme } from '@mui/material/styles';
2
+ export declare const inputsCustomizations: Components<Theme>;
@@ -0,0 +1,2 @@
1
+ import { Components, Theme } from '@mui/material/styles';
2
+ export declare const navigationCustomizations: Components<Theme>;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Theme exports for @omniviewdev/ui
3
+ *
4
+ * Two systems coexist:
5
+ * 1. MUI Theme (AppTheme, primitives, customizations) — controls MUI component appearance
6
+ * 2. CSS Custom Properties (tokens.css, applyTheme/resetTheme) — controls custom component styling
7
+ */
8
+ export { default as AppTheme } from './AppTheme';
9
+ export type { ColorMode } from './AppTheme';
10
+ export { brand, gray, green, orange, red, purple, getDesignTokens, typography, shape, customShadows, } from './primitives';
11
+ export { inputsCustomizations } from './customizations/inputs';
12
+ export { navigationCustomizations } from './customizations/navigation';
13
+ export { feedbackCustomizations } from './customizations/feedback';
14
+ export { dataDisplayCustomizations } from './customizations/dataDisplay';
15
+ export interface OmniviewTheme {
16
+ name: string;
17
+ type: "dark" | "light";
18
+ colors: Record<string, string>;
19
+ typography?: {
20
+ fontFamily?: string;
21
+ monoFontFamily?: string;
22
+ fontSize?: number;
23
+ };
24
+ }
25
+ /**
26
+ * Apply a theme by setting CSS custom properties on :root.
27
+ *
28
+ * Color keys use dot notation (e.g., "bg.surface") which maps to
29
+ * the CSS property `--ov-bg-surface`.
30
+ */
31
+ export declare function applyTheme(theme: OmniviewTheme): void;
32
+ /**
33
+ * Reset to built-in theme (remove all user overrides).
34
+ * Removes inline style overrides so the tokens.css cascade takes effect.
35
+ */
36
+ export declare function resetTheme(type?: "dark" | "light"): void;