art-bd-ui 1.0.13 → 1.0.14

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 (125) hide show
  1. package/dist/cjs/_virtual/addon-fit.js +7 -0
  2. package/dist/cjs/_virtual/addon-fit2.js +5 -0
  3. package/dist/cjs/_virtual/xterm.js +7 -0
  4. package/dist/cjs/_virtual/xterm2.js +5 -0
  5. package/dist/cjs/_virtual/zip.js +11 -0
  6. package/dist/cjs/components/ui/breadcrumb/breadcrumb.js +73 -0
  7. package/dist/cjs/components/ui/data-table/hooks/useStickyColumns.js +35 -58
  8. package/dist/cjs/components/ui/data-table/utils.js +55 -0
  9. package/dist/cjs/components/ui/menubar/menubar.js +122 -0
  10. package/dist/cjs/components/ui/navigation-menu/navigation-menu.js +72 -0
  11. package/dist/cjs/components/utility/collapsible/collapsible.js +22 -0
  12. package/dist/cjs/components/utility/resizable/resizable.js +24 -0
  13. package/dist/cjs/components/utility/terminal/terminal.js +145 -0
  14. package/dist/cjs/components/utility/terminal/themes.js +28 -0
  15. package/dist/cjs/components/utility/web-playground/web-playground.js +175 -0
  16. package/dist/cjs/index.js +56 -0
  17. package/dist/cjs/node_modules/@radix-ui/react-accordion/dist/index.js +1 -1
  18. package/dist/cjs/node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/react-collapsible/dist/index.js +173 -0
  19. package/dist/cjs/node_modules/@radix-ui/react-collapsible/dist/index.js +6 -10
  20. package/dist/cjs/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/primitive/dist/index.js +13 -0
  21. package/dist/cjs/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-presence/dist/index.js +152 -0
  22. package/dist/cjs/node_modules/@radix-ui/react-label/dist/index.js +1 -1
  23. package/dist/cjs/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/dist/index.js +61 -0
  24. package/dist/cjs/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot/dist/index.js +111 -0
  25. package/dist/cjs/node_modules/@radix-ui/react-menubar/dist/index.js +484 -0
  26. package/dist/cjs/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/primitive/dist/index.js +13 -0
  27. package/dist/cjs/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-arrow/dist/index.js +47 -0
  28. package/dist/cjs/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +234 -0
  29. package/dist/cjs/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-focus-guards/dist/index.js +51 -0
  30. package/dist/cjs/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-focus-scope/dist/index.js +229 -0
  31. package/dist/cjs/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-menu/dist/index.js +888 -0
  32. package/dist/cjs/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-popper/dist/index.js +313 -0
  33. package/dist/cjs/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-portal/dist/index.js +39 -0
  34. package/dist/cjs/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-presence/dist/index.js +152 -0
  35. package/dist/cjs/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-roving-focus/dist/index.js +249 -0
  36. package/dist/cjs/node_modules/@radix-ui/react-navigation-menu/dist/index.js +822 -0
  37. package/dist/cjs/node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/primitive/dist/index.js +13 -0
  38. package/dist/cjs/node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +234 -0
  39. package/dist/cjs/node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-presence/dist/index.js +152 -0
  40. package/dist/cjs/node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-visually-hidden/dist/index.js +58 -0
  41. package/dist/cjs/node_modules/@radix-ui/react-primitive/dist/index.js +6 -1
  42. package/dist/cjs/node_modules/@webcontainer/api/dist/index.js +514 -0
  43. package/dist/cjs/node_modules/@webcontainer/api/dist/internal/auth-state.js +10 -0
  44. package/dist/cjs/node_modules/@webcontainer/api/dist/internal/constants.js +5 -0
  45. package/dist/cjs/node_modules/@webcontainer/api/dist/internal/iframe-url.js +31 -0
  46. package/dist/cjs/node_modules/@webcontainer/api/dist/internal/reset-promise.js +24 -0
  47. package/dist/cjs/node_modules/@webcontainer/api/dist/internal/tokens.js +4 -0
  48. package/dist/cjs/node_modules/@webcontainer/api/dist/preview-message-types.js +12 -0
  49. package/dist/cjs/node_modules/@webcontainer/api/dist/utils/file-system.js +74 -0
  50. package/dist/cjs/node_modules/@webcontainer/api/dist/utils/is-preview-message.js +20 -0
  51. package/dist/cjs/node_modules/@webcontainer/api/dist/utils/null-prototype.js +14 -0
  52. package/dist/cjs/node_modules/@webcontainer/api/dist/vendor/index.js +290 -0
  53. package/dist/cjs/node_modules/@xterm/addon-fit/lib/addon-fit.js +17 -0
  54. package/dist/cjs/node_modules/@xterm/xterm/css/xterm.css.js +10 -0
  55. package/dist/cjs/node_modules/@xterm/xterm/lib/xterm.js +17 -0
  56. package/dist/cjs/node_modules/lodash/unzip.js +63 -0
  57. package/dist/cjs/node_modules/lodash/zip.js +37 -0
  58. package/dist/cjs/node_modules/react-resizable-panels/dist/react-resizable-panels.js +2437 -0
  59. package/dist/cjs/node_modules/style-inject/dist/style-inject.es.js +32 -0
  60. package/dist/cjs/utils/load-playground.js +9 -0
  61. package/dist/cjs/utils/sort-by-dom-node.js +18 -0
  62. package/dist/esm/_virtual/addon-fit.js +5 -0
  63. package/dist/esm/_virtual/addon-fit2.js +3 -0
  64. package/dist/esm/_virtual/xterm.js +5 -0
  65. package/dist/esm/_virtual/xterm2.js +3 -0
  66. package/dist/esm/_virtual/zip.js +7 -0
  67. package/dist/esm/components/ui/breadcrumb/breadcrumb.js +46 -0
  68. package/dist/esm/components/ui/data-table/hooks/useStickyColumns.js +36 -59
  69. package/dist/esm/components/ui/data-table/utils.js +55 -1
  70. package/dist/esm/components/ui/menubar/menubar.js +86 -0
  71. package/dist/esm/components/ui/navigation-menu/navigation-menu.js +43 -0
  72. package/dist/esm/components/utility/collapsible/collapsible.js +18 -0
  73. package/dist/esm/components/utility/resizable/resizable.js +20 -0
  74. package/dist/esm/components/utility/terminal/terminal.js +142 -0
  75. package/dist/esm/components/utility/terminal/themes.js +26 -0
  76. package/dist/esm/components/utility/web-playground/web-playground.js +170 -0
  77. package/dist/esm/index.js +9 -0
  78. package/dist/esm/node_modules/@radix-ui/react-accordion/dist/index.js +1 -1
  79. package/dist/esm/node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/react-collapsible/dist/index.js +146 -0
  80. package/dist/esm/node_modules/@radix-ui/react-collapsible/dist/index.js +3 -5
  81. package/dist/esm/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/primitive/dist/index.js +11 -0
  82. package/dist/esm/node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-presence/dist/index.js +131 -0
  83. package/dist/esm/node_modules/@radix-ui/react-label/dist/index.js +1 -1
  84. package/dist/esm/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/dist/index.js +40 -0
  85. package/dist/esm/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot/dist/index.js +90 -0
  86. package/dist/esm/node_modules/@radix-ui/react-menubar/dist/index.js +430 -0
  87. package/dist/esm/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/primitive/dist/index.js +11 -0
  88. package/dist/esm/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-arrow/dist/index.js +25 -0
  89. package/dist/esm/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +212 -0
  90. package/dist/esm/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-focus-guards/dist/index.js +30 -0
  91. package/dist/esm/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-focus-scope/dist/index.js +208 -0
  92. package/dist/esm/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-menu/dist/index.js +835 -0
  93. package/dist/esm/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-popper/dist/index.js +284 -0
  94. package/dist/esm/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-portal/dist/index.js +18 -0
  95. package/dist/esm/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-presence/dist/index.js +131 -0
  96. package/dist/esm/node_modules/@radix-ui/react-menubar/node_modules/@radix-ui/react-roving-focus/dist/index.js +224 -0
  97. package/dist/esm/node_modules/@radix-ui/react-navigation-menu/dist/index.js +784 -0
  98. package/dist/esm/node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/primitive/dist/index.js +11 -0
  99. package/dist/esm/node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +212 -0
  100. package/dist/esm/node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-presence/dist/index.js +131 -0
  101. package/dist/esm/node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-visually-hidden/dist/index.js +35 -0
  102. package/dist/esm/node_modules/@radix-ui/react-primitive/dist/index.js +5 -2
  103. package/dist/esm/node_modules/@webcontainer/api/dist/index.js +507 -0
  104. package/dist/esm/node_modules/@webcontainer/api/dist/internal/auth-state.js +8 -0
  105. package/dist/esm/node_modules/@webcontainer/api/dist/internal/constants.js +3 -0
  106. package/dist/esm/node_modules/@webcontainer/api/dist/internal/iframe-url.js +29 -0
  107. package/dist/esm/node_modules/@webcontainer/api/dist/internal/reset-promise.js +22 -0
  108. package/dist/esm/node_modules/@webcontainer/api/dist/internal/tokens.js +2 -0
  109. package/dist/esm/node_modules/@webcontainer/api/dist/preview-message-types.js +12 -0
  110. package/dist/esm/node_modules/@webcontainer/api/dist/utils/file-system.js +71 -0
  111. package/dist/esm/node_modules/@webcontainer/api/dist/utils/is-preview-message.js +18 -0
  112. package/dist/esm/node_modules/@webcontainer/api/dist/utils/null-prototype.js +12 -0
  113. package/dist/esm/node_modules/@webcontainer/api/dist/vendor/index.js +288 -0
  114. package/dist/esm/node_modules/@xterm/addon-fit/lib/addon-fit.js +15 -0
  115. package/dist/esm/node_modules/@xterm/xterm/css/xterm.css.js +6 -0
  116. package/dist/esm/node_modules/@xterm/xterm/lib/xterm.js +15 -0
  117. package/dist/esm/node_modules/lodash/unzip.js +61 -0
  118. package/dist/esm/node_modules/lodash/zip.js +35 -0
  119. package/dist/esm/node_modules/react-resizable-panels/dist/react-resizable-panels.js +2407 -0
  120. package/dist/esm/node_modules/style-inject/dist/style-inject.es.js +28 -0
  121. package/dist/esm/utils/load-playground.js +7 -0
  122. package/dist/esm/utils/sort-by-dom-node.js +16 -0
  123. package/dist/{styles.css → globals.css} +389 -0
  124. package/dist/types/index.d.ts +153 -15
  125. package/package.json +19 -10
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var addonFit = require('../node_modules/@xterm/addon-fit/lib/addon-fit.js');
4
+
5
+ var addonFitExports = addonFit.__require();
6
+
7
+ exports.addonFitExports = addonFitExports;
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ var addonFit = {exports: {}};
4
+
5
+ exports.__module = addonFit;
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var xterm = require('../node_modules/@xterm/xterm/lib/xterm.js');
4
+
5
+ var xtermExports = xterm.__require();
6
+
7
+ exports.xtermExports = xtermExports;
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+
3
+ var xterm = {exports: {}};
4
+
5
+ exports.__module = xterm;
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _commonjsHelpers = require('./_commonjsHelpers.js');
6
+ var zip$1 = require('../node_modules/lodash/zip.js');
7
+
8
+ var zipExports = zip$1.__require();
9
+ var zip = /*@__PURE__*/_commonjsHelpers.getDefaultExportFromCjs(zipExports);
10
+
11
+ exports.default = zip;
@@ -0,0 +1,73 @@
1
+ 'use strict';
2
+
3
+ var tslib_es6 = require('../../../node_modules/tslib/tslib.es6.js');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var React = require('react');
6
+ var index = require('../../../node_modules/@radix-ui/react-slot/dist/index.js');
7
+ var utils = require('../../../lib/utils.js');
8
+ var chevronRight = require('../../../node_modules/lucide-react/dist/esm/icons/chevron-right.js');
9
+ var ellipsis = require('../../../node_modules/lucide-react/dist/esm/icons/ellipsis.js');
10
+
11
+ function _interopNamespaceDefault(e) {
12
+ var n = Object.create(null);
13
+ if (e) {
14
+ Object.keys(e).forEach(function (k) {
15
+ if (k !== 'default') {
16
+ var d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: function () { return e[k]; }
20
+ });
21
+ }
22
+ });
23
+ }
24
+ n.default = e;
25
+ return Object.freeze(n);
26
+ }
27
+
28
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
29
+
30
+ const Breadcrumb = React__namespace.forwardRef((_a, ref) => {
31
+ var props = tslib_es6.__rest(_a, []);
32
+ return jsxRuntime.jsx("nav", Object.assign({ ref: ref, "aria-label": "breadcrumb" }, props));
33
+ });
34
+ Breadcrumb.displayName = "Breadcrumb";
35
+ const BreadcrumbList = React__namespace.forwardRef((_a, ref) => {
36
+ var { className } = _a, props = tslib_es6.__rest(_a, ["className"]);
37
+ return (jsxRuntime.jsx("ol", Object.assign({ ref: ref, className: utils.cn("flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5", className) }, props)));
38
+ });
39
+ BreadcrumbList.displayName = "BreadcrumbList";
40
+ const BreadcrumbItem = React__namespace.forwardRef((_a, ref) => {
41
+ var { className } = _a, props = tslib_es6.__rest(_a, ["className"]);
42
+ return (jsxRuntime.jsx("li", Object.assign({ ref: ref, className: utils.cn("inline-flex items-center gap-1.5", className) }, props)));
43
+ });
44
+ BreadcrumbItem.displayName = "BreadcrumbItem";
45
+ const BreadcrumbLink = React__namespace.forwardRef((_a, ref) => {
46
+ var { asChild, className } = _a, props = tslib_es6.__rest(_a, ["asChild", "className"]);
47
+ const Comp = asChild ? index.Root : "a";
48
+ return jsxRuntime.jsx(Comp, Object.assign({ ref: ref, className: utils.cn("transition-colors hover:text-foreground", className) }, props));
49
+ });
50
+ BreadcrumbLink.displayName = "BreadcrumbLink";
51
+ const BreadcrumbPage = React__namespace.forwardRef((_a, ref) => {
52
+ var { className } = _a, props = tslib_es6.__rest(_a, ["className"]);
53
+ return (jsxRuntime.jsx("span", Object.assign({ ref: ref, role: "link", "aria-disabled": "true", "aria-current": "page", className: utils.cn("font-normal text-foreground", className) }, props)));
54
+ });
55
+ BreadcrumbPage.displayName = "BreadcrumbPage";
56
+ const BreadcrumbSeparator = (_a) => {
57
+ var { children, className } = _a, props = tslib_es6.__rest(_a, ["children", "className"]);
58
+ return (jsxRuntime.jsx("li", Object.assign({ role: "presentation", "aria-hidden": "true", className: utils.cn("[&>svg]:w-3.5 [&>svg]:h-3.5", className) }, props, { children: children !== null && children !== void 0 ? children : jsxRuntime.jsx(chevronRight.default, {}) })));
59
+ };
60
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
61
+ const BreadcrumbEllipsis = (_a) => {
62
+ var { className } = _a, props = tslib_es6.__rest(_a, ["className"]);
63
+ return (jsxRuntime.jsxs("span", Object.assign({ role: "presentation", "aria-hidden": "true", className: utils.cn("flex h-9 w-9 items-center justify-center", className) }, props, { children: [jsxRuntime.jsx(ellipsis.default, { className: "h-4 w-4" }), jsxRuntime.jsx("span", { className: "sr-only", children: "More" })] })));
64
+ };
65
+ BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
66
+
67
+ exports.Breadcrumb = Breadcrumb;
68
+ exports.BreadcrumbEllipsis = BreadcrumbEllipsis;
69
+ exports.BreadcrumbItem = BreadcrumbItem;
70
+ exports.BreadcrumbLink = BreadcrumbLink;
71
+ exports.BreadcrumbList = BreadcrumbList;
72
+ exports.BreadcrumbPage = BreadcrumbPage;
73
+ exports.BreadcrumbSeparator = BreadcrumbSeparator;
@@ -2,74 +2,54 @@
2
2
 
3
3
  var React = require('react');
4
4
  var debounce = require('../../../../_virtual/debounce.js');
5
+ var zip = require('../../../../_virtual/zip.js');
5
6
  var fastdom = require('../../../../_virtual/fastdom.js');
6
- var getBoundingRect = require('../../../../utils/get-bounding-rect.js');
7
+ var utils = require('../utils.js');
7
8
 
8
- function sortByDomNode(nodes, resolveKey = (i) => i) {
9
- return nodes.slice().sort((aItem, zItem) => {
10
- const a = resolveKey(aItem);
11
- const z = resolveKey(zItem);
12
- if (a === null || z === null)
13
- return 0;
14
- const position = a.compareDocumentPosition(z);
15
- if (position & Node.DOCUMENT_POSITION_FOLLOWING)
16
- return -1;
17
- if (position & Node.DOCUMENT_POSITION_PRECEDING)
18
- return 1;
19
- return 0;
20
- });
21
- }
22
- const calculateLeftPositions = (cells) => {
23
- let currentPosition = 0;
24
- cells.forEach((cell) => {
25
- const rect = getBoundingRect.getBoundingRect(cell);
26
- cell.style.left = `${Math.floor(currentPosition)}px`;
27
- currentPosition += rect.width;
28
- });
29
- };
30
- const calculateRightPositions = (cells) => {
31
- let currentPosition = 0;
32
- // Process cells from right to left
33
- for (let i = cells.length - 1; i >= 0; i--) {
34
- const cell = cells[i];
35
- const rect = getBoundingRect.getBoundingRect(cell);
36
- cell.style.right = `${Math.floor(currentPosition)}px`;
37
- currentPosition += rect.width;
9
+ // Cache for last applied positions to avoid unnecessary DOM writes
10
+ const positionCache = new WeakMap();
11
+ function setPositionIfChanged(element, side, pixels) {
12
+ const newValue = `${Math.floor(pixels)}px`;
13
+ const cache = positionCache.get(element) || {};
14
+ if (cache[side] !== newValue) {
15
+ element.style[side] = newValue;
16
+ cache[side] = newValue;
17
+ positionCache.set(element, cache);
38
18
  }
39
- };
19
+ }
20
+ function updateCellsPosition(cells, side) {
21
+ cells.reduce((positions, [cell, width]) => {
22
+ if (cell && cell.getAttribute("data-sticky") === side) {
23
+ setPositionIfChanged(cell, side, positions);
24
+ return positions + width;
25
+ }
26
+ return positions;
27
+ }, 0);
28
+ }
40
29
  const useStickyColumns = (tableElement) => {
41
30
  const resizeObserverRef = React.useRef(null);
42
- const rafIdRef = React.useRef(null);
43
31
  const updateStickyPositions = React.useCallback(() => {
44
32
  if (!tableElement)
45
33
  return;
46
- // Cancel any pending RAF
47
- if (rafIdRef.current) {
48
- cancelAnimationFrame(rafIdRef.current);
49
- }
50
- // Schedule the update in the next animation frame
51
- rafIdRef.current = requestAnimationFrame(() => {
52
- fastdom.default.measure(() => {
53
- // Get all rows
54
- const rows = Array.from(tableElement.getElementsByTagName("tr"));
34
+ fastdom.default.measure(() => {
35
+ const rows = Array.from(tableElement.getElementsByTagName("tr"));
36
+ if (rows.length === 0)
37
+ return;
38
+ const columnCells = utils.getLeafHeaderCells(tableElement);
39
+ if (columnCells.length === 0)
40
+ return;
41
+ const measurements = columnCells.map((cell) => cell.offsetWidth);
42
+ fastdom.default.mutate(() => {
55
43
  rows.forEach((row) => {
56
- // Find sticky cells in this row
57
- const stickyCells = Array.from(row.querySelectorAll("[data-sticky]"));
58
- // Split cells into left and right sticky cells
59
- const leftStickyCells = stickyCells.filter((cell) => cell.getAttribute("data-sticky") === "left");
60
- const rightStickyCells = stickyCells.filter((cell) => cell.getAttribute("data-sticky") === "right");
61
- // Sort cells in DOM order within the row
62
- const sortedLeftCells = sortByDomNode(leftStickyCells);
63
- const sortedRightCells = sortByDomNode(rightStickyCells);
64
- fastdom.default.mutate(() => {
65
- calculateLeftPositions(sortedLeftCells);
66
- calculateRightPositions(sortedRightCells);
67
- });
44
+ const cells = Array.from(row.cells);
45
+ const cellsWithMeasurements = zip.default(cells, measurements);
46
+ updateCellsPosition(cellsWithMeasurements, "left");
47
+ updateCellsPosition(cellsWithMeasurements.slice().reverse(), "right");
68
48
  });
69
49
  });
70
50
  });
71
51
  }, [tableElement]);
72
- React.useEffect(() => {
52
+ React.useLayoutEffect(() => {
73
53
  if (!tableElement)
74
54
  return;
75
55
  // Initial calculation
@@ -82,9 +62,6 @@ const useStickyColumns = (tableElement) => {
82
62
  resizeObserverRef.current = new ResizeObserver(debouncedResizeHandler);
83
63
  resizeObserverRef.current.observe(tableElement);
84
64
  return () => {
85
- if (rafIdRef.current) {
86
- cancelAnimationFrame(rafIdRef.current);
87
- }
88
65
  if (resizeObserverRef.current) {
89
66
  resizeObserverRef.current.disconnect();
90
67
  }
@@ -20,7 +20,62 @@ const flattenColumns = (columns) => {
20
20
  const collectColumnsWithoutChildren = (columns) => {
21
21
  return flattenColumns(columns).filter((column) => !column.children);
22
22
  };
23
+ const getColspan = (cell) => parseInt(cell.getAttribute("colspan") || "1", 10);
24
+ const getRowspan = (cell) => parseInt(cell.getAttribute("rowspan") || "1", 10);
25
+ const getColumnsCount = (row) => {
26
+ const cells = Array.from(row.cells);
27
+ return cells.length || cells.reduce((sum, cell) => sum + getColspan(cell), 0);
28
+ };
29
+ const getLeafHeaderCells = (tableElement) => {
30
+ var _a;
31
+ const thead = tableElement.querySelector("thead");
32
+ if (!thead)
33
+ return [];
34
+ const rows = Array.from((_a = thead.rows) !== null && _a !== void 0 ? _a : []);
35
+ if (!rows.length)
36
+ return [];
37
+ const firstRowCells = getColumnsCount(rows[0]);
38
+ // Total column count: sum(colSpan) in the first header row,
39
+ // or the max across rows if the first has no cells.
40
+ const colCount = firstRowCells || Math.max(...rows.map(getColumnsCount), 0);
41
+ if (!colCount)
42
+ return [];
43
+ const initial = {
44
+ cover: Array(colCount).fill(null),
45
+ remain: Array(colCount).fill(0),
46
+ };
47
+ const { cover } = rows.reduce(({ cover, remain }, row) => {
48
+ // Advance rowspans down one row
49
+ const nextRemain = remain.map((r) => (r > 0 ? r - 1 : 0));
50
+ const nextCover = cover.map((cell, i) => (remain[i] > 0 ? cell : null));
51
+ // Place current row's cells into first free slots, honoring colspan/rowspan
52
+ let col = 0;
53
+ Array.from(row.cells).forEach((cell) => {
54
+ // Move to the next free column starting at `col`
55
+ const offset = nextCover.slice(col).findIndex((x) => x === null);
56
+ col = offset === -1 ? col : col + offset;
57
+ const colspan = getColspan(cell);
58
+ const rowspan = getRowspan(cell);
59
+ Array.from({ length: colspan }).forEach((_, k) => {
60
+ const idx = col + k;
61
+ if (idx < nextCover.length) {
62
+ nextCover[idx] = cell;
63
+ nextRemain[idx] = rowspan - 1;
64
+ }
65
+ });
66
+ col += colspan;
67
+ });
68
+ return { cover: nextCover, remain: nextRemain };
69
+ }, initial);
70
+ // Deduplicate consecutive refs left→right → leaf headers
71
+ return cover.reduce((acc, cell) => {
72
+ if (cell && acc[acc.length - 1] !== cell)
73
+ acc.push(cell);
74
+ return acc;
75
+ }, []);
76
+ };
23
77
 
24
78
  exports.collectColumnsWithoutChildren = collectColumnsWithoutChildren;
25
79
  exports.convertHeadersToRows = convertHeadersToRows;
26
80
  exports.flattenColumns = flattenColumns;
81
+ exports.getLeafHeaderCells = getLeafHeaderCells;
@@ -0,0 +1,122 @@
1
+ 'use strict';
2
+
3
+ var tslib_es6 = require('../../../node_modules/tslib/tslib.es6.js');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var React = require('react');
6
+ var index = require('../../../node_modules/@radix-ui/react-menubar/dist/index.js');
7
+ var utils = require('../../../lib/utils.js');
8
+ var chevronRight = require('../../../node_modules/lucide-react/dist/esm/icons/chevron-right.js');
9
+ var check = require('../../../node_modules/lucide-react/dist/esm/icons/check.js');
10
+ var circle = require('../../../node_modules/lucide-react/dist/esm/icons/circle.js');
11
+
12
+ function _interopNamespaceDefault(e) {
13
+ var n = Object.create(null);
14
+ if (e) {
15
+ Object.keys(e).forEach(function (k) {
16
+ if (k !== 'default') {
17
+ var d = Object.getOwnPropertyDescriptor(e, k);
18
+ Object.defineProperty(n, k, d.get ? d : {
19
+ enumerable: true,
20
+ get: function () { return e[k]; }
21
+ });
22
+ }
23
+ });
24
+ }
25
+ n.default = e;
26
+ return Object.freeze(n);
27
+ }
28
+
29
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
30
+
31
+ function MenubarMenu(_a) {
32
+ var props = tslib_es6.__rest(_a, []);
33
+ return jsxRuntime.jsx(index.Menu, Object.assign({}, props));
34
+ }
35
+ function MenubarGroup(_a) {
36
+ var props = tslib_es6.__rest(_a, []);
37
+ return jsxRuntime.jsx(index.Group, Object.assign({}, props));
38
+ }
39
+ function MenubarPortal(_a) {
40
+ var props = tslib_es6.__rest(_a, []);
41
+ return jsxRuntime.jsx(index.Portal, Object.assign({}, props));
42
+ }
43
+ function MenubarRadioGroup(_a) {
44
+ var props = tslib_es6.__rest(_a, []);
45
+ return jsxRuntime.jsx(index.RadioGroup, Object.assign({}, props));
46
+ }
47
+ function MenubarSub(_a) {
48
+ var props = tslib_es6.__rest(_a, []);
49
+ return jsxRuntime.jsx(index.Sub, Object.assign({ "data-slot": "menubar-sub" }, props));
50
+ }
51
+ const Menubar = React__namespace.forwardRef((_a, ref) => {
52
+ var { className } = _a, props = tslib_es6.__rest(_a, ["className"]);
53
+ return (jsxRuntime.jsx(index.Root, Object.assign({ ref: ref, className: utils.cn("flex h-9 items-center space-x-1 rounded-md border bg-background p-1 shadow-sm", className) }, props)));
54
+ });
55
+ Menubar.displayName = index.Root.displayName;
56
+ const MenubarTrigger = React__namespace.forwardRef((_a, ref) => {
57
+ var { className } = _a, props = tslib_es6.__rest(_a, ["className"]);
58
+ return (jsxRuntime.jsx(index.Trigger, Object.assign({ ref: ref, className: utils.cn("flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground", className) }, props)));
59
+ });
60
+ MenubarTrigger.displayName = index.Trigger.displayName;
61
+ const MenubarSubTrigger = React__namespace.forwardRef((_a, ref) => {
62
+ var { className, inset, children } = _a, props = tslib_es6.__rest(_a, ["className", "inset", "children"]);
63
+ return (jsxRuntime.jsxs(index.SubTrigger, Object.assign({ ref: ref, className: utils.cn("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground", inset && "pl-8", className) }, props, { children: [children, jsxRuntime.jsx(chevronRight.default, { className: "ml-auto h-4 w-4" })] })));
64
+ });
65
+ MenubarSubTrigger.displayName = index.SubTrigger.displayName;
66
+ const MenubarSubContent = React__namespace.forwardRef((_a, ref) => {
67
+ var { className } = _a, props = tslib_es6.__rest(_a, ["className"]);
68
+ return (jsxRuntime.jsx(index.SubContent, Object.assign({ ref: ref, className: utils.cn("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-menubar-content-transform-origin]", className) }, props)));
69
+ });
70
+ MenubarSubContent.displayName = index.SubContent.displayName;
71
+ const MenubarContent = React__namespace.forwardRef((_a, ref) => {
72
+ var { className, align = "start", alignOffset = -4, sideOffset = 8 } = _a, props = tslib_es6.__rest(_a, ["className", "align", "alignOffset", "sideOffset"]);
73
+ return (jsxRuntime.jsx(index.Portal, { children: jsxRuntime.jsx(index.Content, Object.assign({ ref: ref, align: align, alignOffset: alignOffset, sideOffset: sideOffset, className: utils.cn("z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-menubar-content-transform-origin]", className) }, props)) }));
74
+ });
75
+ MenubarContent.displayName = index.Content.displayName;
76
+ const MenubarItem = React__namespace.forwardRef((_a, ref) => {
77
+ var { className, inset } = _a, props = tslib_es6.__rest(_a, ["className", "inset"]);
78
+ return (jsxRuntime.jsx(index.Item, Object.assign({ ref: ref, className: utils.cn("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", inset && "pl-8", className) }, props)));
79
+ });
80
+ MenubarItem.displayName = index.Item.displayName;
81
+ const MenubarCheckboxItem = React__namespace.forwardRef((_a, ref) => {
82
+ var { className, children, checked } = _a, props = tslib_es6.__rest(_a, ["className", "children", "checked"]);
83
+ return (jsxRuntime.jsxs(index.CheckboxItem, Object.assign({ ref: ref, className: utils.cn("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className), checked: checked }, props, { children: [jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: jsxRuntime.jsx(index.ItemIndicator, { children: jsxRuntime.jsx(check.default, { className: "h-4 w-4" }) }) }), children] })));
84
+ });
85
+ MenubarCheckboxItem.displayName = index.CheckboxItem.displayName;
86
+ const MenubarRadioItem = React__namespace.forwardRef((_a, ref) => {
87
+ var { className, children } = _a, props = tslib_es6.__rest(_a, ["className", "children"]);
88
+ return (jsxRuntime.jsxs(index.RadioItem, Object.assign({ ref: ref, className: utils.cn("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className) }, props, { children: [jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: jsxRuntime.jsx(index.ItemIndicator, { children: jsxRuntime.jsx(circle.default, { className: "h-4 w-4 fill-current" }) }) }), children] })));
89
+ });
90
+ MenubarRadioItem.displayName = index.RadioItem.displayName;
91
+ const MenubarLabel = React__namespace.forwardRef((_a, ref) => {
92
+ var { className, inset } = _a, props = tslib_es6.__rest(_a, ["className", "inset"]);
93
+ return (jsxRuntime.jsx(index.Label, Object.assign({ ref: ref, className: utils.cn("px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className) }, props)));
94
+ });
95
+ MenubarLabel.displayName = index.Label.displayName;
96
+ const MenubarSeparator = React__namespace.forwardRef((_a, ref) => {
97
+ var { className } = _a, props = tslib_es6.__rest(_a, ["className"]);
98
+ return (jsxRuntime.jsx(index.Separator, Object.assign({ ref: ref, className: utils.cn("-mx-1 my-1 h-px bg-muted", className) }, props)));
99
+ });
100
+ MenubarSeparator.displayName = index.Separator.displayName;
101
+ const MenubarShortcut = (_a) => {
102
+ var { className } = _a, props = tslib_es6.__rest(_a, ["className"]);
103
+ return jsxRuntime.jsx("span", Object.assign({ className: utils.cn("ml-auto text-xs tracking-widest text-muted-foreground", className) }, props));
104
+ };
105
+ MenubarShortcut.displayname = "MenubarShortcut";
106
+
107
+ exports.Menubar = Menubar;
108
+ exports.MenubarCheckboxItem = MenubarCheckboxItem;
109
+ exports.MenubarContent = MenubarContent;
110
+ exports.MenubarGroup = MenubarGroup;
111
+ exports.MenubarItem = MenubarItem;
112
+ exports.MenubarLabel = MenubarLabel;
113
+ exports.MenubarMenu = MenubarMenu;
114
+ exports.MenubarPortal = MenubarPortal;
115
+ exports.MenubarRadioGroup = MenubarRadioGroup;
116
+ exports.MenubarRadioItem = MenubarRadioItem;
117
+ exports.MenubarSeparator = MenubarSeparator;
118
+ exports.MenubarShortcut = MenubarShortcut;
119
+ exports.MenubarSub = MenubarSub;
120
+ exports.MenubarSubContent = MenubarSubContent;
121
+ exports.MenubarSubTrigger = MenubarSubTrigger;
122
+ exports.MenubarTrigger = MenubarTrigger;
@@ -0,0 +1,72 @@
1
+ 'use strict';
2
+
3
+ var tslib_es6 = require('../../../node_modules/tslib/tslib.es6.js');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var React = require('react');
6
+ var index = require('../../../node_modules/@radix-ui/react-navigation-menu/dist/index.js');
7
+ var index$1 = require('../../../node_modules/class-variance-authority/dist/index.js');
8
+ var utils = require('../../../lib/utils.js');
9
+ var chevronDown = require('../../../node_modules/lucide-react/dist/esm/icons/chevron-down.js');
10
+
11
+ function _interopNamespaceDefault(e) {
12
+ var n = Object.create(null);
13
+ if (e) {
14
+ Object.keys(e).forEach(function (k) {
15
+ if (k !== 'default') {
16
+ var d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: function () { return e[k]; }
20
+ });
21
+ }
22
+ });
23
+ }
24
+ n.default = e;
25
+ return Object.freeze(n);
26
+ }
27
+
28
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
29
+
30
+ const NavigationMenuViewport = React__namespace.forwardRef((_a, ref) => {
31
+ var { className } = _a, props = tslib_es6.__rest(_a, ["className"]);
32
+ return (jsxRuntime.jsx("div", { className: utils.cn("absolute left-0 top-full flex justify-center"), children: jsxRuntime.jsx(index.Viewport, Object.assign({ className: utils.cn("origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]", className), ref: ref }, props)) }));
33
+ });
34
+ NavigationMenuViewport.displayName = index.Viewport.displayName;
35
+ const NavigationMenu = React__namespace.forwardRef((_a, ref) => {
36
+ var { className, children } = _a, props = tslib_es6.__rest(_a, ["className", "children"]);
37
+ return (jsxRuntime.jsxs(index.Root, Object.assign({ ref: ref, className: utils.cn("relative z-10 flex max-w-max flex-1 items-center justify-center", className) }, props, { children: [children, jsxRuntime.jsx(NavigationMenuViewport, {})] })));
38
+ });
39
+ NavigationMenu.displayName = index.Root.displayName;
40
+ const NavigationMenuList = React__namespace.forwardRef((_a, ref) => {
41
+ var { className } = _a, props = tslib_es6.__rest(_a, ["className"]);
42
+ return (jsxRuntime.jsx(index.List, Object.assign({ ref: ref, className: utils.cn("group flex flex-1 list-none items-center justify-center space-x-1", className) }, props)));
43
+ });
44
+ NavigationMenuList.displayName = index.List.displayName;
45
+ const NavigationMenuItem = index.Item;
46
+ const navigationMenuTriggerStyle = index$1.cva("group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=open]:text-accent-foreground data-[state=open]:bg-accent/50 data-[state=open]:hover:bg-accent data-[state=open]:focus:bg-accent");
47
+ const NavigationMenuTrigger = React__namespace.forwardRef((_a, ref) => {
48
+ var { className, children } = _a, props = tslib_es6.__rest(_a, ["className", "children"]);
49
+ return (jsxRuntime.jsxs(index.Trigger, Object.assign({ ref: ref, className: utils.cn(navigationMenuTriggerStyle(), "group", className) }, props, { children: [children, " ", jsxRuntime.jsx(chevronDown.default, { className: "relative top-[1px] ml-1 h-3 w-3 transition duration-300 group-data-[state=open]:rotate-180", "aria-hidden": "true" })] })));
50
+ });
51
+ NavigationMenuTrigger.displayName = index.Trigger.displayName;
52
+ const NavigationMenuContent = React__namespace.forwardRef((_a, ref) => {
53
+ var { className } = _a, props = tslib_es6.__rest(_a, ["className"]);
54
+ return (jsxRuntime.jsx(index.Content, Object.assign({ ref: ref, className: utils.cn("left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto ", className) }, props)));
55
+ });
56
+ NavigationMenuContent.displayName = index.Content.displayName;
57
+ const NavigationMenuLink = index.Link;
58
+ const NavigationMenuIndicator = React__namespace.forwardRef((_a, ref) => {
59
+ var { className } = _a, props = tslib_es6.__rest(_a, ["className"]);
60
+ return (jsxRuntime.jsx(index.Indicator, Object.assign({ ref: ref, className: utils.cn("top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in", className) }, props, { children: jsxRuntime.jsx("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" }) })));
61
+ });
62
+ NavigationMenuIndicator.displayName = index.Indicator.displayName;
63
+
64
+ exports.NavigationMenu = NavigationMenu;
65
+ exports.NavigationMenuContent = NavigationMenuContent;
66
+ exports.NavigationMenuIndicator = NavigationMenuIndicator;
67
+ exports.NavigationMenuItem = NavigationMenuItem;
68
+ exports.NavigationMenuLink = NavigationMenuLink;
69
+ exports.NavigationMenuList = NavigationMenuList;
70
+ exports.NavigationMenuTrigger = NavigationMenuTrigger;
71
+ exports.NavigationMenuViewport = NavigationMenuViewport;
72
+ exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle;
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ var tslib_es6 = require('../../../node_modules/tslib/tslib.es6.js');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var index = require('../../../node_modules/@radix-ui/react-collapsible/dist/index.js');
6
+
7
+ function Collapsible(_a) {
8
+ var props = tslib_es6.__rest(_a, []);
9
+ return jsxRuntime.jsx(index.Root, Object.assign({ "data-slot": "collapsible" }, props));
10
+ }
11
+ function CollapsibleTrigger(_a) {
12
+ var props = tslib_es6.__rest(_a, []);
13
+ return jsxRuntime.jsx(index.CollapsibleTrigger, Object.assign({ "data-slot": "collapsible-trigger" }, props));
14
+ }
15
+ function CollapsibleContent(_a) {
16
+ var props = tslib_es6.__rest(_a, []);
17
+ return jsxRuntime.jsx(index.CollapsibleContent, Object.assign({ "data-slot": "collapsible-content" }, props));
18
+ }
19
+
20
+ exports.Collapsible = Collapsible;
21
+ exports.CollapsibleContent = CollapsibleContent;
22
+ exports.CollapsibleTrigger = CollapsibleTrigger;
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ var tslib_es6 = require('../../../node_modules/tslib/tslib.es6.js');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var reactResizablePanels = require('../../../node_modules/react-resizable-panels/dist/react-resizable-panels.js');
6
+ var icon = require('../../media/icon/icon.js');
7
+ var utils = require('../../../lib/utils.js');
8
+
9
+ function ResizablePanelGroup(_a) {
10
+ var { className } = _a, props = tslib_es6.__rest(_a, ["className"]);
11
+ return (jsxRuntime.jsx(reactResizablePanels.PanelGroup, Object.assign({ "data-slot": "resizable-panel-group", className: utils.cn("flex h-full w-full data-[panel-group-direction=vertical]:flex-col", className) }, props)));
12
+ }
13
+ function ResizablePanel(_a) {
14
+ var props = tslib_es6.__rest(_a, []);
15
+ return jsxRuntime.jsx(reactResizablePanels.Panel, Object.assign({ "data-slot": "resizable-panel" }, props));
16
+ }
17
+ function ResizableHandle(_a) {
18
+ var { withHandle, className } = _a, props = tslib_es6.__rest(_a, ["withHandle", "className"]);
19
+ return (jsxRuntime.jsx(reactResizablePanels.PanelResizeHandle, Object.assign({ "data-slot": "resizable-handle", className: utils.cn("bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90", className) }, props, { children: withHandle && (jsxRuntime.jsx("div", { className: "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border", children: jsxRuntime.jsx(icon.Icon, { name: "grip-vertical", className: "size-2.5" }) })) })));
20
+ }
21
+
22
+ exports.ResizableHandle = ResizableHandle;
23
+ exports.ResizablePanel = ResizablePanel;
24
+ exports.ResizablePanelGroup = ResizablePanelGroup;