funuicss 3.3.10 → 3.4.1

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.
package/css/fun.css CHANGED
@@ -3067,16 +3067,15 @@ color: var(--text-color);
3067
3067
  padding: 1rem;
3068
3068
  z-index: 5;
3069
3069
  position: fixed;
3070
- animation: SlideDownBar 0.3s ease-in-out ;
3071
3070
  transition: all 0.3s;
3072
3071
  overflow-x: hidden !important;
3073
3072
  }
3074
3073
  @keyframes SlideDownBar {
3075
3074
  from {
3076
- transform: translateX(-100%);
3075
+ opacity: 0;
3077
3076
  }
3078
3077
  to {
3079
- transform: translateX(0);
3078
+ opacity: 1;
3080
3079
  }
3081
3080
  }
3082
3081
  .sidebar:hover{overflow-y: auto;}
@@ -3519,11 +3518,12 @@ background-color: rgba(var(--borderRgb), 0.3);
3519
3518
  }
3520
3519
 
3521
3520
 
3522
- .custom-select {position: relative; width: 100%; border-radius: var(--InputButtonBorderRadius);}
3521
+ .custom-select {position: relative; width: 100%; border-radius: var(--InputButtonBorderRadius); isolation: isolate;}
3523
3522
 
3524
3523
  .custom-select.fullWidth {max-width: none;}
3525
3524
 
3526
3525
 
3526
+
3527
3527
  .select-trigger {
3528
3528
  display: flex;
3529
3529
  align-items: center;
@@ -3625,13 +3625,12 @@ position: absolute;
3625
3625
  top: 100%;
3626
3626
  left: 0;
3627
3627
  right: 0;
3628
- background-color: var(--raiseOpaque);
3629
- backdrop-filter: blur(10px);
3628
+ background-color: var(--page-bg);
3630
3629
  border-top: none;
3631
- border-radius: 0 0 8px 8px;
3630
+ border-radius: 0 0 0.5rem 0.5rem;
3632
3631
  max-height: 250px;
3633
3632
  overflow: hidden;
3634
- z-index: 1000;
3633
+ z-index: 20;
3635
3634
  opacity: 0;
3636
3635
  visibility: hidden;
3637
3636
  transform: translateY(-10px);
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.3.10",
2
+ "version": "3.4.1",
3
3
  "name": "funuicss",
4
4
  "description": "React and Next.js component UI Library for creating Easy and good looking websites with fewer lines of code. Elevate your web development experience with our cutting-edge React/Next.js component UI Library. Craft stunning websites effortlessly, boasting both seamless functionality and aesthetic appeal—all achieved with minimal lines of code. Unleash the power of simplicity and style in your projects!",
5
5
  "main": "index.js",
@@ -110,6 +110,7 @@ var Carousel = function (_a) {
110
110
  gap: gap + 'rem',
111
111
  overflowX: 'auto',
112
112
  display: 'flex',
113
+ justifyItems: (isScrollable || isPhone) ? 'flex-start' : 'centers',
113
114
  scrollSnapType: 'x mandatory',
114
115
  scrollBehavior: 'smooth',
115
116
  } }, react_1.default.Children.map(children, function (child) { return (react_1.default.createElement("div", { className: "carousel-item", style: { flexShrink: 0 } },
@@ -117,7 +118,7 @@ var Carousel = function (_a) {
117
118
  !isPhone && isScrollable && (react_1.default.createElement("div", null,
118
119
  react_1.default.createElement(Circle_1.default, { onClick: function () { return scroll('right'); } },
119
120
  react_1.default.createElement(pi_1.PiCaretRight, { size: 24 }))))),
120
- showDashes && (react_1.default.createElement("div", { className: "center padding-top-10" },
121
+ (showDashes && isScrollable) && (react_1.default.createElement("div", { className: "center padding-top-10" },
121
122
  react_1.default.createElement(RowFlex_1.default, { gap: 0.5, justify: "center" }, ['start', 'middle', 'end'].map(function (pos) { return (react_1.default.createElement("div", { className: 'pointer ', key: pos, onClick: function () {
122
123
  var _a, _b;
123
124
  if (pos === 'start') {
@@ -23,6 +23,10 @@ interface SideBarProps {
23
23
  links?: SideBarLink[];
24
24
  children?: ReactNode;
25
25
  onClose?: () => void;
26
+ onOpen?: () => void;
27
+ swipeEnabled?: boolean;
28
+ swipeThreshold?: number;
29
+ swipeArea?: number;
26
30
  }
27
- export default function SideBar({ funcss, position, open, header, content, footer, top, sidebarWidth, iconCSS, sidebarCss, activeCss, bodyCss, popIcon, dividers, links, children, onClose, }: SideBarProps): React.JSX.Element;
31
+ export default function SideBar({ funcss, position, open, header, content, footer, top, sidebarWidth, iconCSS, sidebarCss, activeCss, bodyCss, popIcon, dividers, links, children, onClose, onOpen, swipeEnabled, swipeThreshold, swipeArea, }: SideBarProps): React.JSX.Element;
28
32
  export {};
@@ -42,15 +42,22 @@ var react_1 = __importStar(require("react"));
42
42
  var RowFlex_1 = __importDefault(require("../specials/RowFlex"));
43
43
  var Text_1 = __importDefault(require("../text/Text"));
44
44
  var navigation_1 = require("next/navigation");
45
+ var pi_1 = require("react-icons/pi");
45
46
  var link_1 = __importDefault(require("next/link"));
46
47
  function SideBar(_a) {
47
- var _b;
48
- var _c = _a.funcss, funcss = _c === void 0 ? '' : _c, _d = _a.position, position = _d === void 0 ? 'left' : _d, _e = _a.open, open = _e === void 0 ? false : _e, header = _a.header, content = _a.content, footer = _a.footer, _f = _a.top, top = _f === void 0 ? 0 : _f, _g = _a.sidebarWidth, sidebarWidth = _g === void 0 ? 250 : _g, _h = _a.iconCSS, iconCSS = _h === void 0 ? '' : _h, _j = _a.sidebarCss, sidebarCss = _j === void 0 ? '' : _j, activeCss = _a.activeCss, _k = _a.bodyCss, bodyCss = _k === void 0 ? '' : _k, _l = _a.popIcon, popIcon = _l === void 0 ? false : _l, _m = _a.dividers, dividers = _m === void 0 ? false : _m, _o = _a.links, links = _o === void 0 ? [] : _o, children = _a.children, onClose = _a.onClose;
49
- var _p = (0, react_1.useState)(false), isMobile = _p[0], setIsMobile = _p[1];
50
- var _q = (0, react_1.useState)(open), internalOpen = _q[0], setInternalOpen = _q[1];
51
- var _r = (0, react_1.useState)('0px'), appBarHeight = _r[0], setAppBarHeight = _r[1];
48
+ var _b, _c;
49
+ var _d = _a.funcss, funcss = _d === void 0 ? '' : _d, _e = _a.position, position = _e === void 0 ? 'left' : _e, _f = _a.open, open = _f === void 0 ? false : _f, header = _a.header, content = _a.content, footer = _a.footer, _g = _a.top, top = _g === void 0 ? 0 : _g, _h = _a.sidebarWidth, sidebarWidth = _h === void 0 ? 250 : _h, _j = _a.iconCSS, iconCSS = _j === void 0 ? '' : _j, _k = _a.sidebarCss, sidebarCss = _k === void 0 ? '' : _k, activeCss = _a.activeCss, _l = _a.bodyCss, bodyCss = _l === void 0 ? '' : _l, _m = _a.popIcon, popIcon = _m === void 0 ? false : _m, _o = _a.dividers, dividers = _o === void 0 ? false : _o, _p = _a.links, links = _p === void 0 ? [] : _p, children = _a.children, onClose = _a.onClose, onOpen = _a.onOpen, _q = _a.swipeEnabled, swipeEnabled = _q === void 0 ? true : _q, _r = _a.swipeThreshold, swipeThreshold = _r === void 0 ? 100 : _r, _s = _a.swipeArea, swipeArea = _s === void 0 ? 20 : _s;
50
+ var _t = (0, react_1.useState)(false), isMobile = _t[0], setIsMobile = _t[1];
51
+ var _u = (0, react_1.useState)(open), internalOpen = _u[0], setInternalOpen = _u[1];
52
+ var _v = (0, react_1.useState)('0px'), appBarHeight = _v[0], setAppBarHeight = _v[1];
53
+ var _w = (0, react_1.useState)(false), isTransitioning = _w[0], setIsTransitioning = _w[1];
54
+ var _x = (0, react_1.useState)(0), dragOffset = _x[0], setDragOffset = _x[1];
52
55
  var pathname = (0, navigation_1.usePathname)();
53
56
  var sidebarRef = (0, react_1.useRef)(null);
57
+ var mainContentRef = (0, react_1.useRef)(null);
58
+ // Touch gesture state
59
+ var _y = (0, react_1.useState)(null), touchStart = _y[0], setTouchStart = _y[1];
60
+ var _z = (0, react_1.useState)(false), isDragging = _z[0], setIsDragging = _z[1];
54
61
  var updateIsMobile = (0, react_1.useCallback)(function () {
55
62
  setIsMobile(window.innerWidth <= 992);
56
63
  }, []);
@@ -69,6 +76,7 @@ function SideBar(_a) {
69
76
  setAppBarHeight("".concat(appBar.offsetHeight, "px"));
70
77
  }
71
78
  }, []);
79
+ // Handle outside clicks on mobile
72
80
  (0, react_1.useEffect)(function () {
73
81
  if (!isMobile || !internalOpen)
74
82
  return;
@@ -84,9 +92,120 @@ function SideBar(_a) {
84
92
  document.removeEventListener('touchstart', handleOutsideClick);
85
93
  };
86
94
  }, [isMobile, internalOpen]);
95
+ // Touch gesture handlers
96
+ var handleTouchStart = (0, react_1.useCallback)(function (e) {
97
+ var _a;
98
+ if (!isMobile || !swipeEnabled)
99
+ return;
100
+ var touch = e.touches[0];
101
+ var clientX = touch.clientX, clientY = touch.clientY;
102
+ var now = Date.now();
103
+ // Only initiate swipe from edge areas
104
+ var isLeftEdge = position === 'left' && clientX < swipeArea;
105
+ var isRightEdge = position === 'right' && clientX > window.innerWidth - swipeArea;
106
+ var isOnSidebar = internalOpen && ((_a = sidebarRef.current) === null || _a === void 0 ? void 0 : _a.contains(e.target));
107
+ if (isLeftEdge || isRightEdge || isOnSidebar) {
108
+ setTouchStart({ x: clientX, y: clientY, time: now });
109
+ setIsDragging(false);
110
+ e.preventDefault();
111
+ }
112
+ }, [isMobile, swipeEnabled, position, swipeArea, internalOpen]);
113
+ var handleTouchMove = (0, react_1.useCallback)(function (e) {
114
+ if (!touchStart || !isMobile || !swipeEnabled)
115
+ return;
116
+ var touch = e.touches[0];
117
+ var clientX = touch.clientX, clientY = touch.clientY;
118
+ var deltaX = clientX - touchStart.x;
119
+ var deltaY = clientY - touchStart.y;
120
+ // Check if it's a horizontal swipe (not vertical scroll)
121
+ if (Math.abs(deltaX) > Math.abs(deltaY) && Math.abs(deltaX) > 10) {
122
+ if (!isDragging) {
123
+ setIsDragging(true);
124
+ }
125
+ // Calculate drag offset based on position and gesture direction
126
+ var offset = 0;
127
+ if (position === 'left') {
128
+ if (internalOpen) {
129
+ // Closing gesture: drag left
130
+ offset = Math.min(0, deltaX);
131
+ }
132
+ else {
133
+ // Opening gesture: drag right
134
+ offset = Math.max(0, deltaX);
135
+ }
136
+ }
137
+ else {
138
+ if (internalOpen) {
139
+ // Closing gesture: drag right
140
+ offset = Math.max(0, deltaX);
141
+ }
142
+ else {
143
+ // Opening gesture: drag left
144
+ offset = Math.min(0, deltaX);
145
+ }
146
+ }
147
+ setDragOffset(offset);
148
+ e.preventDefault();
149
+ }
150
+ }, [touchStart, isMobile, swipeEnabled, position, internalOpen, isDragging]);
151
+ var handleTouchEnd = (0, react_1.useCallback)(function (e) {
152
+ if (!touchStart || !isMobile || !swipeEnabled)
153
+ return;
154
+ var touch = e.changedTouches[0];
155
+ var clientX = touch.clientX;
156
+ var deltaX = clientX - touchStart.x;
157
+ var deltaTime = Date.now() - touchStart.time;
158
+ var velocity = Math.abs(deltaX) / deltaTime;
159
+ // Determine if gesture should trigger sidebar action
160
+ var shouldTrigger = Math.abs(deltaX) > swipeThreshold || velocity > 0.5;
161
+ if (shouldTrigger && isDragging) {
162
+ if (position === 'left') {
163
+ if (!internalOpen && deltaX > 0) {
164
+ handleOpen();
165
+ }
166
+ else if (internalOpen && deltaX < 0) {
167
+ handleClose();
168
+ }
169
+ }
170
+ else {
171
+ if (!internalOpen && deltaX < 0) {
172
+ handleOpen();
173
+ }
174
+ else if (internalOpen && deltaX > 0) {
175
+ handleClose();
176
+ }
177
+ }
178
+ }
179
+ // Reset touch state
180
+ setTouchStart(null);
181
+ setIsDragging(false);
182
+ setDragOffset(0);
183
+ }, [touchStart, isMobile, swipeEnabled, position, internalOpen, isDragging, swipeThreshold]);
184
+ // Add touch event listeners
185
+ (0, react_1.useEffect)(function () {
186
+ if (!isMobile || !swipeEnabled)
187
+ return;
188
+ var element = mainContentRef.current || document.body;
189
+ element.addEventListener('touchstart', handleTouchStart, { passive: false });
190
+ element.addEventListener('touchmove', handleTouchMove, { passive: false });
191
+ element.addEventListener('touchend', handleTouchEnd, { passive: false });
192
+ return function () {
193
+ element.removeEventListener('touchstart', handleTouchStart);
194
+ element.removeEventListener('touchmove', handleTouchMove);
195
+ element.removeEventListener('touchend', handleTouchEnd);
196
+ };
197
+ }, [handleTouchStart, handleTouchMove, handleTouchEnd, isMobile, swipeEnabled]);
87
198
  var handleClose = function () {
199
+ setIsTransitioning(true);
88
200
  setInternalOpen(false);
89
201
  onClose === null || onClose === void 0 ? void 0 : onClose();
202
+ setTimeout(function () { return setIsTransitioning(false); }, 300);
203
+ };
204
+ var handleOpen = function () {
205
+ setIsTransitioning(true);
206
+ setInternalOpen(true);
207
+ onOpen === null || onOpen === void 0 ? void 0 : onOpen();
208
+ setTimeout(function () { return setIsTransitioning(false); }, 300);
90
209
  };
91
210
  var groupedLinks = links.reduce(function (acc, link) {
92
211
  acc[link.section] = acc[link.section] || [];
@@ -94,17 +213,48 @@ function SideBar(_a) {
94
213
  return acc;
95
214
  }, {});
96
215
  var isOverlay = isMobile;
216
+ // Calculate transform for drag gesture
217
+ var getSidebarTransform = function () {
218
+ if (!isDragging || !isOverlay)
219
+ return '';
220
+ if (position === 'left') {
221
+ var baseTransform = internalOpen ? 0 : -sidebarWidth;
222
+ return "translateX(".concat(baseTransform + dragOffset, "px)");
223
+ }
224
+ else {
225
+ var baseTransform = internalOpen ? 0 : sidebarWidth;
226
+ return "translateX(".concat(baseTransform + dragOffset, "px)");
227
+ }
228
+ };
97
229
  return (react_1.default.createElement("div", { className: "sidebar-container ".concat(isOverlay ? '' : 'with-content') },
98
- internalOpen && (react_1.default.createElement("aside", { role: "complementary", ref: sidebarRef, className: "sidebar ".concat(funcss, " ").concat(sidebarCss, " ").concat(isOverlay ? 'nav_overlay' : ''), style: (_b = {
99
- width: isOverlay ? '100%' : "".concat(sidebarWidth, "px"),
230
+ isOverlay && (internalOpen || isDragging) && (react_1.default.createElement("div", { className: "sidebar-backdrop", style: {
231
+ position: 'fixed',
232
+ top: 0,
233
+ left: 0,
234
+ right: 0,
235
+ bottom: 0,
236
+ backgroundColor: 'rgba(0, 0, 0, 0.5)',
237
+ zIndex: 998,
238
+ opacity: isDragging ? Math.abs(dragOffset) / sidebarWidth : 1,
239
+ transition: isDragging ? 'none' : 'opacity 0.3s ease',
240
+ }, onClick: handleClose })),
241
+ (internalOpen || isDragging) && (react_1.default.createElement("aside", { role: "complementary", ref: sidebarRef, className: "sidebar ".concat(funcss, " ").concat(sidebarCss, " ").concat(isOverlay ? 'nav_overlay' : ''), style: (_b = {
242
+ width: isOverlay ? "".concat(sidebarWidth, "px") : "".concat(sidebarWidth, "px"),
100
243
  height: "calc(100vh - ".concat(appBarHeight || top || '0px', ")"),
101
244
  position: 'fixed',
102
245
  top: appBarHeight || top
103
246
  },
104
247
  _b[position] = 0,
105
248
  _b.padding = '1rem',
249
+ _b.zIndex = 999,
250
+ _b.transform = getSidebarTransform(),
251
+ _b.transition = isDragging || isTransitioning ? 'none' : 'transform 0.3s ease',
252
+ _b.willChange = 'transform',
106
253
  _b) },
107
- react_1.default.createElement(RowFlex_1.default, { justify: "space-between", funcss: "pl-2 pr-2" }, header && react_1.default.createElement("div", null, header)),
254
+ react_1.default.createElement(RowFlex_1.default, { justify: "space-between", funcss: "pl-2 pr-2" },
255
+ header && react_1.default.createElement("div", null, header),
256
+ isMobile && (react_1.default.createElement("div", { className: "hover-text-error pointer", onClick: handleClose, style: { cursor: 'pointer', zIndex: 1000 } },
257
+ react_1.default.createElement(pi_1.PiX, { size: 25 })))),
108
258
  react_1.default.createElement("section", { className: "sidebar-body mt-3" },
109
259
  links.length > 0 && (react_1.default.createElement("nav", { className: "sidebar-links" }, Object.entries(groupedLinks).map(function (_a) {
110
260
  var section = _a[0], sectionLinks = _a[1];
@@ -117,14 +267,14 @@ function SideBar(_a) {
117
267
  handleClose();
118
268
  }
119
269
  }, key: link.uri, href: link.uri },
120
- react_1.default.createElement("div", { className: "p-1 pl-2 pr-2 sidebar-link ".concat(isActive ? "primary50 outline-primary200 ".concat(activeCss || '') : 'hoverable') },
270
+ react_1.default.createElement("div", { className: "p-1 pl-2 pr-2 sidebar-link ".concat(isActive ? "primary50 outline-primary200 ".concat(activeCss || '') : 'hoverable') },
121
271
  react_1.default.createElement("span", { className: "".concat(iconCSS || '', " ").concat(popIcon ? "p-1 border lighter central" : ""), style: { lineHeight: 0, borderRadius: "0.4rem" } }, link.icon),
122
272
  react_1.default.createElement(Text_1.default, { text: link.text, size: "sm", weight: 400 }))));
123
273
  })));
124
274
  }))),
125
275
  content),
126
276
  footer && react_1.default.createElement("footer", { className: "sidebar-footer mt-2" }, footer))),
127
- react_1.default.createElement("main", { className: "main-content ".concat(bodyCss), style: {
277
+ react_1.default.createElement("main", { ref: mainContentRef, className: "main-content fade-in ".concat(bodyCss), style: {
128
278
  flex: 1,
129
279
  marginLeft: position === 'left' && !isOverlay && internalOpen ? "".concat(sidebarWidth, "px") : 0,
130
280
  marginRight: position === 'right' && !isOverlay && internalOpen ? "".concat(sidebarWidth, "px") : 0,
@@ -132,5 +282,20 @@ function SideBar(_a) {
132
282
  height: '100vh',
133
283
  paddingTop: appBarHeight || top,
134
284
  transition: 'margin 0.3s ease',
135
- } }, children)));
285
+ touchAction: swipeEnabled ? 'pan-y' : 'auto',
286
+ } }, children),
287
+ isMobile && swipeEnabled && !internalOpen && (react_1.default.createElement("div", { className: "swipe-indicator", style: (_c = {
288
+ position: 'fixed'
289
+ },
290
+ _c[position] = 0,
291
+ _c.top = '50%',
292
+ _c.transform = 'translateY(-50%)',
293
+ _c.width = '4px',
294
+ _c.height = '40px',
295
+ _c.backgroundColor = 'rgba(128, 128, 128, 0.3)',
296
+ _c.borderRadius = position === 'left' ? '0 4px 4px 0' : '4px 0 0 4px',
297
+ _c.zIndex = 1000,
298
+ _c.pointerEvents = 'none',
299
+ _c.transition = 'opacity 0.3s ease',
300
+ _c) }))));
136
301
  }
package/ui/table/Table.js CHANGED
@@ -201,7 +201,7 @@ function Table(_a) {
201
201
  React.createElement("div", null,
202
202
  React.createElement(Flex_1.default, { width: '100%', wrap: 'nowrap', alignItems: 'center', gap: 0.7 },
203
203
  !selectedField && !showSearch &&
204
- React.createElement(ScrollInView_1.default, null,
204
+ React.createElement("div", { className: '' },
205
205
  React.createElement(Select_1.default, { fullWidth: true, searchable: true, funcss: 'min-w-300 w-full', rounded: true, value: selectedField || '', onChange: function (e) { return handleFieldChange(e); }, options: __spreadArray([
206
206
  { text: '🔍 Filter', value: '' },
207
207
  { text: 'All*', value: '' }
@@ -209,7 +209,7 @@ function Table(_a) {
209
209
  text: field,
210
210
  value: field
211
211
  }); }), true) })),
212
- selectedField && !showSearch && (React.createElement(ScrollInView_1.default, null,
212
+ selectedField && !showSearch && (React.createElement("div", { className: '' },
213
213
  React.createElement(Select_1.default, { rounded: true, searchable: true, funcss: 'min-w-300 w-full', fullWidth: true, value: selectedValue || '', onChange: function (e) {
214
214
  if (e === 'clear_all') {
215
215
  setSelectedField('');
@@ -230,15 +230,15 @@ function Table(_a) {
230
230
  ], false) }))),
231
231
  showSearch ?
232
232
  React.createElement(Flex_1.default, { gap: 0.5, wrap: 'nowrap', alignItems: 'center' },
233
- React.createElement(ScrollInView_1.default, null,
233
+ React.createElement("div", { className: 'animated slide-up' },
234
234
  React.createElement(Input_1.default, { borderless: true, funcss: 'min-w-300', fullWidth: true, rounded: true, value: searchQuery, onChange: function (e) { return setsearchQuery(e.target.value); }, label: "Search..." })),
235
- React.createElement(ScrollInView_1.default, { delay: 0.2 },
235
+ React.createElement("div", { className: 'animated fade-in' },
236
236
  React.createElement("div", { onClick: function () { return setshowSearch(false); } },
237
237
  React.createElement(ToolTip_1.default, null,
238
238
  React.createElement(pi_1.PiXThin, { className: 'pointer', size: 23, onClick: function () { return setshowSearch(false); } }),
239
239
  React.createElement(Tip_1.default, { tip: "bottom", animation: "Opacity", duration: 1, content: "Close Search" })))))
240
240
  :
241
- React.createElement(ScrollInView_1.default, { delay: 0.2 },
241
+ React.createElement("div", { className: 'animated fade-in' },
242
242
  React.createElement(ToolTip_1.default, null,
243
243
  React.createElement(ci_1.CiSearch, { className: 'pointer', size: 23, onClick: function () { return setshowSearch(true); } }),
244
244
  React.createElement(Tip_1.default, { tip: "bottom", animation: "Opacity", duration: 1, content: "Search Data" })))))
@@ -247,13 +247,16 @@ function Table(_a) {
247
247
  React.createElement(RowFlex_1.default, { gap: 0.5 },
248
248
  right && right,
249
249
  !hideExport &&
250
- React.createElement(ToolTip_1.default, null,
251
- React.createElement(Circle_1.default, { bg: 'lighter', bordered: true, onClick: Export },
252
- React.createElement(pi_1.PiExportThin, null)),
253
- React.createElement(Tip_1.default, { tip: "bottom", animation: "Opacity", duration: 1, content: "Export Data" })))))),
250
+ React.createElement("div", { className: 'animated slide-up' },
251
+ React.createElement(ToolTip_1.default, null,
252
+ React.createElement(Circle_1.default, { bg: 'lighter', bordered: true, onClick: Export },
253
+ React.createElement(pi_1.PiExportThin, null)),
254
+ React.createElement(Tip_1.default, { tip: "bottom", animation: "Opacity", duration: 1, content: "Export Data" }))))))),
254
255
  React.createElement("main", { style: { overflow: "auto", width: "100%" } },
255
256
  React.createElement("table", __assign({ className: "table ".concat(bordered ? 'border' : '', " ").concat(noStripped ? '' : 'stripped', " ").concat(hoverable ? 'hoverableTr' : '', " ").concat(light ? 'light' : '', " ").concat(dark ? 'dark' : ''), style: {
256
- height: height ? height + "px" : ""
257
+ height: height ? height + "px" : "",
258
+ position: 'relative',
259
+ zIndex: 1
257
260
  } }, rest),
258
261
  data &&
259
262
  (data === null || data === void 0 ? void 0 : data.titles) &&
@@ -290,7 +293,7 @@ function Table(_a) {
290
293
  else {
291
294
  return true; // If no search query, return all items
292
295
  }
293
- }).slice(startIndex, endIndex).map(function (mdoc, index) { return (React.createElement(Row_1.default, { funcss: 'animated slide-down', rowKey: index },
296
+ }).slice(startIndex, endIndex).map(function (mdoc, index) { return (React.createElement("tr", { className: 'animated slide-up', key: index },
294
297
  data.fields.map(function (fdoc, findex) {
295
298
  var _a;
296
299
  return (React.createElement(Data_1.default, { key: fdoc, funcss: data.funcss ? ((_a = data === null || data === void 0 ? void 0 : data.funcss) === null || _a === void 0 ? void 0 : _a[findex]) || '' : '' }, getNestedValue(mdoc, fdoc)));