@eztrak/shared 0.15.3 → 0.16.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.
package/dist/index.js CHANGED
@@ -31,11 +31,15 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  var src_exports = {};
32
32
  __export(src_exports, {
33
33
  ActionMenuItem: () => ActionMenuItem,
34
+ Breadcrumbs: () => Breadcrumbs,
35
+ Button: () => Button,
36
+ Card: () => Card,
34
37
  CardSkeleton: () => CardSkeleton,
35
38
  CustomCellEditor: () => CustomCellEditor,
36
39
  CustomPagination: () => CustomPagination,
37
40
  DropdownFilter: () => DropdownFilter,
38
41
  EztrakTabs: () => EztrakTabs,
42
+ Header: () => Header,
39
43
  Loader: () => Loader,
40
44
  Modal: () => Modal,
41
45
  PopupCellRenderer: () => PopupCellRenderer,
@@ -48,6 +52,7 @@ __export(src_exports, {
48
52
  ResetFiltersButton: () => ResetFiltersButton,
49
53
  RowActions: () => RowActions,
50
54
  SearchInput: () => SearchInput,
55
+ Sidebar: () => Sidebar,
51
56
  TableErrorBoundary: () => TableErrorBoundary,
52
57
  TableLayoutToolbarControls: () => TableLayoutToolbarControls,
53
58
  ToolTip: () => ToolTip,
@@ -1722,8 +1727,473 @@ function Modal({
1722
1727
  return (0, import_react_dom.createPortal)(modalContent, modalRoot);
1723
1728
  }
1724
1729
 
1725
- // src/components/skeleton/CardSkeleton.tsx
1730
+ // src/components/button/Button.tsx
1731
+ var import_react7 = require("react");
1726
1732
  var import_jsx_runtime8 = require("react/jsx-runtime");
1733
+ var BASE_STYLES2 = "flex gap-1 items-center font-medium text-sm px-5 py-3 rounded-md transition-colors duration-200 disabled:opacity-50 disabled:cursor-not-allowed";
1734
+ var VARIANTS2 = {
1735
+ primary: "bg-white text-secondary border-secondary hover:bg-lightGray hover:text-black",
1736
+ "primary-outline": "bg-white text-primary-150 border-primary-150 hover:bg-primary-100 hover:text-white font-bold",
1737
+ "primary-fill": "bg-primary-150 text-white border-primary hover:bg-primary/90",
1738
+ secondary: "bg-primary-150 text-white border-primary hover:bg-primary/90",
1739
+ danger: "bg-red-600 text-white border-red-600 hover:bg-red-700",
1740
+ outline: "bg-white text-primary border-primary hover:bg-primary/10",
1741
+ ghost: "bg-transparent text-secondary border-transparent hover:bg-primary/10 p-2",
1742
+ inline: "bg-transparent text-gray-500 border-none hover:text-gray-600 underline shadow-none p-0 m-0"
1743
+ };
1744
+ var SIZES = {
1745
+ sm: "px-3 py-2 text-xs",
1746
+ md: "px-5 py-3 text-sm",
1747
+ lg: "px-6 py-4 text-base"
1748
+ };
1749
+ var Button = (0, import_react7.forwardRef)(
1750
+ ({
1751
+ children,
1752
+ className = "",
1753
+ type = "button",
1754
+ onClick,
1755
+ disabled = false,
1756
+ variant = "primary",
1757
+ size = "md",
1758
+ ...props
1759
+ }, ref) => {
1760
+ const variantStyles = VARIANTS2[variant] || VARIANTS2.primary;
1761
+ const sizeStyles = SIZES[size];
1762
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1763
+ "button",
1764
+ {
1765
+ ref,
1766
+ type,
1767
+ className: cn(
1768
+ BASE_STYLES2,
1769
+ variantStyles,
1770
+ size !== "md" && sizeStyles,
1771
+ className
1772
+ ),
1773
+ onClick,
1774
+ disabled,
1775
+ ...props,
1776
+ children
1777
+ }
1778
+ );
1779
+ }
1780
+ );
1781
+ Button.displayName = "Button";
1782
+
1783
+ // src/components/card/Card.tsx
1784
+ var import_jsx_runtime9 = require("react/jsx-runtime");
1785
+ function Card({
1786
+ title,
1787
+ content,
1788
+ icon,
1789
+ onClick,
1790
+ containerClassName = "shadow p-6",
1791
+ iconClassName = "",
1792
+ titleClassName = "",
1793
+ contentClassName = "",
1794
+ cardBodyClassName = ""
1795
+ }) {
1796
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1797
+ "div",
1798
+ {
1799
+ className: cn(
1800
+ "transform transition duration-300 cursor-pointer select-none",
1801
+ containerClassName
1802
+ ),
1803
+ onClick,
1804
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: cn("flex space-x-4", cardBodyClassName), children: [
1805
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: cn("text-primary text-3xl", iconClassName), children: icon }),
1806
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { children: [
1807
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h3", { className: cn("font-semibold text-lg text-primary", titleClassName), children: title }),
1808
+ content != null && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: cn("text-sm text-secondary", contentClassName), children: content })
1809
+ ] })
1810
+ ] })
1811
+ }
1812
+ );
1813
+ }
1814
+
1815
+ // src/components/header/Header.tsx
1816
+ var import_jsx_runtime10 = require("react/jsx-runtime");
1817
+ function Header({
1818
+ title = "Header",
1819
+ className = "p-2 gap-2 flex-col",
1820
+ containerClass = "",
1821
+ breadcrumbs = "",
1822
+ titleStyle = "text-4xl h-fit font-bold",
1823
+ breadcrumbsStyle = "text-sm",
1824
+ children
1825
+ }) {
1826
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: `flex ${className}`, children: [
1827
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "title-wrapper", children: [
1828
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h1", { className: titleStyle, children: title }),
1829
+ breadcrumbs && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: `breadcrumbs-wraper ${breadcrumbsStyle}`, children: breadcrumbs })
1830
+ ] }),
1831
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: `flex flex-row justify-between items-center ${containerClass}`, children })
1832
+ ] });
1833
+ }
1834
+
1835
+ // src/components/breadcrumbs/Breadcrumbs.tsx
1836
+ var import_react8 = require("react");
1837
+ var import_react_router_dom5 = require("react-router-dom");
1838
+ var import_jsx_runtime11 = require("react/jsx-runtime");
1839
+ var INACTIVE_LINK_CLASS = "inline-flex items-center justify-center text-[#5D6D7F] bg-white px-4 py-2 rounded-lg transition-colors duration-300 hover:text-[#516378]";
1840
+ function asTitleMap(customTitles) {
1841
+ if (Object.prototype.toString.call(customTitles) !== "[object Object]") {
1842
+ return {};
1843
+ }
1844
+ return customTitles;
1845
+ }
1846
+ function findRoute(pathname, routes, parentPath = "") {
1847
+ for (const route of routes) {
1848
+ const fullPath = `${parentPath}/${route.path}`.replace(/\/+/g, "/");
1849
+ if (fullPath === pathname) {
1850
+ return route;
1851
+ }
1852
+ if (route.children) {
1853
+ const childRoute = findRoute(pathname, route.children, fullPath);
1854
+ if (childRoute) {
1855
+ return childRoute;
1856
+ }
1857
+ }
1858
+ }
1859
+ return null;
1860
+ }
1861
+ function getLastParam(str) {
1862
+ return str.endsWith("/") ? str.slice(0, -1).split("/").pop() : str.split("/").pop();
1863
+ }
1864
+ function Breadcrumbs({
1865
+ routes = [],
1866
+ containerClassName,
1867
+ linkClassName = "",
1868
+ separatorClassName = "",
1869
+ separator = "/",
1870
+ activeClassName = "font-bold whitespace-pre",
1871
+ customTitles = {},
1872
+ customIcons = {},
1873
+ prefix,
1874
+ suffix,
1875
+ nonClickablePaths = []
1876
+ }) {
1877
+ const location = (0, import_react_router_dom5.useLocation)();
1878
+ const pathnames = location.pathname.split("/").filter((segment) => segment);
1879
+ const titles = asTitleMap(customTitles);
1880
+ const inactiveLinkClassName = cn(INACTIVE_LINK_CLASS, linkClassName);
1881
+ const getTitle = (pathname) => {
1882
+ const match = findRoute(pathname, routes);
1883
+ if (match && match.title) {
1884
+ return match.title;
1885
+ }
1886
+ const titleKeys = Object.keys(titles);
1887
+ const paramMatch = pathname.split("/").find((segment) => titleKeys.includes(segment)) || "";
1888
+ if (paramMatch && titles[paramMatch]) {
1889
+ return titles[paramMatch];
1890
+ }
1891
+ const lastParamPath = getLastParam(pathname);
1892
+ if (lastParamPath) {
1893
+ return lastParamPath;
1894
+ }
1895
+ return pathname;
1896
+ };
1897
+ const getIcon = (pathname) => {
1898
+ const iconKeys = Object.keys(customIcons);
1899
+ const matchedSegment = pathname.split("/").find((segment) => iconKeys.includes(segment));
1900
+ if (matchedSegment && customIcons[matchedSegment]) {
1901
+ return customIcons[matchedSegment];
1902
+ }
1903
+ return null;
1904
+ };
1905
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
1906
+ "div",
1907
+ {
1908
+ className: cn(
1909
+ "flex flex-row gap-2 items-center text-sm text-secondary",
1910
+ containerClassName
1911
+ ),
1912
+ children: [
1913
+ prefix && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "breadcrumb-prefix", children: prefix }),
1914
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_react_router_dom5.Link, { to: "/", className: inactiveLinkClassName, children: [
1915
+ customIcons.home && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "mr-1", children: customIcons.home }),
1916
+ titles.home || "Home"
1917
+ ] }),
1918
+ pathnames.map((segment, index) => {
1919
+ const to = `/${pathnames.slice(0, index + 1).join("/")}`;
1920
+ const isLast = index === pathnames.length - 1;
1921
+ const title = getTitle(to);
1922
+ const icon = getIcon(to);
1923
+ const isNonClickable = nonClickablePaths.some(
1924
+ (token) => to.includes(token) || segment === token
1925
+ );
1926
+ const crumb = /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
1927
+ icon && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "mr-1", children: icon }),
1928
+ title
1929
+ ] });
1930
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_react8.Fragment, { children: [
1931
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: separatorClassName, children: separator }),
1932
+ isLast || isNonClickable ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: isLast ? activeClassName : linkClassName, children: crumb }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_react_router_dom5.Link, { to, className: inactiveLinkClassName, children: crumb })
1933
+ ] }, to);
1934
+ }),
1935
+ suffix && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "breadcrumb-suffix", children: suffix })
1936
+ ]
1937
+ }
1938
+ );
1939
+ }
1940
+
1941
+ // src/components/sidebar/Sidebar.tsx
1942
+ var import_react10 = require("react");
1943
+ var import_react_router_dom6 = require("react-router-dom");
1944
+
1945
+ // src/components/tooltip/ToolTip.tsx
1946
+ var import_react9 = require("react");
1947
+ var import_react_tooltip = require("react-tooltip");
1948
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1949
+ var defaultTooltipStyle = {
1950
+ color: "#fff",
1951
+ borderRadius: "5px",
1952
+ zIndex: 999,
1953
+ textAlign: "justify",
1954
+ maxWidth: "300px",
1955
+ whiteSpace: "pre-wrap",
1956
+ wordWrap: "break-word",
1957
+ overflowWrap: "break-word"
1958
+ };
1959
+ function ToolTip({
1960
+ text = "tool tip",
1961
+ placement = "top",
1962
+ delayShow,
1963
+ delayHide,
1964
+ className,
1965
+ tooltipClassName,
1966
+ tooltipStyle,
1967
+ wrapperTabIndex,
1968
+ disabled = false,
1969
+ children
1970
+ }) {
1971
+ const generatedId = (0, import_react9.useId)();
1972
+ const tooltipId = `eztrak-tooltip-${generatedId.replace(/:/g, "")}`;
1973
+ const tooltipText = String(text ?? "");
1974
+ if (disabled || !tooltipText) {
1975
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className, children });
1976
+ }
1977
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
1978
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1979
+ "span",
1980
+ {
1981
+ className,
1982
+ "data-tooltip-id": tooltipId,
1983
+ "data-tooltip-content": tooltipText,
1984
+ tabIndex: wrapperTabIndex,
1985
+ children
1986
+ }
1987
+ ),
1988
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1989
+ import_react_tooltip.Tooltip,
1990
+ {
1991
+ id: tooltipId,
1992
+ place: placement,
1993
+ positionStrategy: "fixed",
1994
+ delayShow,
1995
+ delayHide,
1996
+ className: tooltipClassName,
1997
+ style: { ...defaultTooltipStyle, ...tooltipStyle }
1998
+ }
1999
+ )
2000
+ ] });
2001
+ }
2002
+
2003
+ // src/components/sidebar/Sidebar.tsx
2004
+ var import_jsx_runtime13 = require("react/jsx-runtime");
2005
+ function Sidebar({
2006
+ className,
2007
+ sideCollapseWidth = "w-20",
2008
+ sidebarWidth = "w-48",
2009
+ header,
2010
+ children,
2011
+ footer,
2012
+ items = [],
2013
+ logoUrl = "",
2014
+ logoAltText = "Logo",
2015
+ collapseButtonText = "\u2B05\uFE0F Collapse",
2016
+ expandButtonText = "\u27A1\uFE0F",
2017
+ location: _location,
2018
+ classNames = {},
2019
+ onCollapseChange,
2020
+ isCollapsed = false,
2021
+ itemDropdownIcon = /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { children: "\u25BC" }),
2022
+ ...rest
2023
+ }) {
2024
+ const location = (0, import_react_router_dom6.useLocation)();
2025
+ const [collapsed, setCollapsed] = (0, import_react10.useState)(isCollapsed);
2026
+ const [, setActiveLink] = (0, import_react10.useState)(location.pathname);
2027
+ const [subItemsCollapsed, setSubItemsCollapsed] = (0, import_react10.useState)({});
2028
+ (0, import_react10.useEffect)(() => {
2029
+ if (onCollapseChange) {
2030
+ onCollapseChange(collapsed);
2031
+ }
2032
+ }, [collapsed, onCollapseChange]);
2033
+ (0, import_react10.useEffect)(() => {
2034
+ setActiveLink(location.pathname);
2035
+ }, [location]);
2036
+ const toggleGroup = (group) => {
2037
+ setSubItemsCollapsed((prevState) => ({
2038
+ ...prevState,
2039
+ [group]: !prevState[group]
2040
+ }));
2041
+ };
2042
+ const isActive = (link) => {
2043
+ return location.pathname.startsWith(link);
2044
+ };
2045
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
2046
+ "div",
2047
+ {
2048
+ className: `flex flex-col h-screen overflow-hidden ${collapsed ? `${sideCollapseWidth} justify-center items-center collapsed` : `${sidebarWidth}`} transition-all duration-100 ${className ?? ""}`,
2049
+ ...rest,
2050
+ children: [
2051
+ logoUrl && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2052
+ "div",
2053
+ {
2054
+ className: cn(
2055
+ "flex items-center justify-center h-16 border-b border-gray-300",
2056
+ classNames.logoSection
2057
+ ),
2058
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("img", { src: logoUrl, alt: logoAltText, className: "h-10" })
2059
+ }
2060
+ ),
2061
+ header && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "flex items-center justify-between p-4 border-b border-gray-300", children: header }),
2062
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("nav", { className: cn("flex-grow", classNames.navSection), children: items.map((item, index) => {
2063
+ if (item.subItems) {
2064
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
2065
+ "div",
2066
+ {
2067
+ className: `my-2 ${item?.subItems && "has-sub-items"}`,
2068
+ children: [
2069
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
2070
+ "div",
2071
+ {
2072
+ onClick: () => toggleGroup(item.name),
2073
+ "data-sidebar-item": item.name,
2074
+ "data-tooltip-id": item.name,
2075
+ className: `flex cursor-pointer dropdown-title-wrapper ${classNames?.navItem ?? ""}`,
2076
+ children: [
2077
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2078
+ ToolTip,
2079
+ {
2080
+ text: item.tooltip || item.name,
2081
+ placement: item.tooltipPlacement || "top",
2082
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex items-center space-x-2", children: [
2083
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: classNames?.navItemText, children: item.icon }),
2084
+ !collapsed && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: classNames?.navItemText, children: item.name })
2085
+ ] })
2086
+ }
2087
+ ),
2088
+ !collapsed && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2089
+ "span",
2090
+ {
2091
+ className: `transform transition-transform ${subItemsCollapsed[item.name] ? "rotate-180" : "rotate-0"}`,
2092
+ children: itemDropdownIcon
2093
+ }
2094
+ )
2095
+ ]
2096
+ }
2097
+ ),
2098
+ subItemsCollapsed[item.name] && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: cn("collapse-btn-wrapper", classNames.subItem), children: item.subItems.map((subItem, subIndex) => {
2099
+ if (subItem.component) {
2100
+ const SubItemComponent = subItem.component;
2101
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SubItemComponent, {}, `${index}-${subIndex}`);
2102
+ }
2103
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2104
+ "div",
2105
+ {
2106
+ className: "w-full",
2107
+ "data-sidebar-item": subItem.name,
2108
+ "data-tooltip-id": subItem.name,
2109
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2110
+ ToolTip,
2111
+ {
2112
+ text: item.tooltip || item.name,
2113
+ placement: item.tooltipPlacement || "top",
2114
+ className: "block w-full",
2115
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
2116
+ import_react_router_dom6.Link,
2117
+ {
2118
+ to: subItem.link || "#",
2119
+ className: `flex ${classNames?.navItem ?? ""} ${isActive(subItem?.link ?? "") ? "active" : ""} ${item?.itemClassName}`,
2120
+ onClick: () => subItem.link && setActiveLink(subItem.link || ""),
2121
+ title: subItem.tooltip || subItem.name,
2122
+ children: [
2123
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2124
+ "span",
2125
+ {
2126
+ className: classNames.navItemText ?? "text-orange-600",
2127
+ children: subItem.icon
2128
+ }
2129
+ ),
2130
+ !collapsed && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: classNames.navItemText, children: subItem.name })
2131
+ ]
2132
+ }
2133
+ )
2134
+ }
2135
+ )
2136
+ },
2137
+ `${index}-${subIndex}`
2138
+ );
2139
+ }) })
2140
+ ]
2141
+ },
2142
+ index
2143
+ );
2144
+ }
2145
+ if (item.component) {
2146
+ const ItemComponent = item.component;
2147
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ItemComponent, {}, index);
2148
+ }
2149
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2150
+ "div",
2151
+ {
2152
+ className: "w-full",
2153
+ "data-sidebar-item": item.name,
2154
+ "data-tooltip-id": item.name,
2155
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2156
+ ToolTip,
2157
+ {
2158
+ text: item.tooltip || item.name,
2159
+ placement: item.tooltipPlacement || "top",
2160
+ className: "block w-full",
2161
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
2162
+ import_react_router_dom6.Link,
2163
+ {
2164
+ to: item.link || "#",
2165
+ className: `flex ${classNames?.navItem ?? ""} ${isActive(item.link || "") ? "active" : ""} ${item?.itemClassName}`,
2166
+ onClick: () => setActiveLink(item.link || ""),
2167
+ title: item.tooltip || item.name,
2168
+ children: [
2169
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: classNames.navItemText ?? "text-orange-600", children: item.icon }),
2170
+ !collapsed && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: classNames.navItemText, children: item.name })
2171
+ ]
2172
+ }
2173
+ )
2174
+ }
2175
+ )
2176
+ },
2177
+ index
2178
+ );
2179
+ }) }),
2180
+ children,
2181
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2182
+ "button",
2183
+ {
2184
+ onClick: () => setCollapsed(!collapsed),
2185
+ className: cn("", classNames.collapseButton) ?? "p-4 border-t border-gray-300",
2186
+ children: collapsed ? expandButtonText : collapseButtonText
2187
+ }
2188
+ ),
2189
+ footer && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: classNames?.footer ?? "p-4 border-t border-gray-300", children: footer })
2190
+ ]
2191
+ }
2192
+ );
2193
+ }
2194
+
2195
+ // src/components/skeleton/CardSkeleton.tsx
2196
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1727
2197
  var DEFAULT_LINE_WIDTHS = ["w-32", "w-48"];
1728
2198
  function shouldShowAvatar(variant, showAvatar) {
1729
2199
  return showAvatar ?? variant === "profile";
@@ -1732,7 +2202,7 @@ function shouldShowImage(variant, showImage) {
1732
2202
  return showImage ?? variant === "image";
1733
2203
  }
1734
2204
  function AvatarSkeleton({ className }) {
1735
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2205
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1736
2206
  "svg",
1737
2207
  {
1738
2208
  className: cn("w-10 h-10 text-gray-200 dark:text-gray-700", className),
@@ -1740,7 +2210,7 @@ function AvatarSkeleton({ className }) {
1740
2210
  xmlns: "http://www.w3.org/2000/svg",
1741
2211
  fill: "currentColor",
1742
2212
  viewBox: "0 0 20 20",
1743
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M10 0a10 10 0 1 0 10 10A10.011 10.011 0 0 0 10 0Zm0 5a3 3 0 1 1 0 6 3 3 0 0 1 0-6Zm0 13a8.949 8.949 0 0 1-4.951-1.488A3.987 3.987 0 0 1 9 13h2a3.987 3.987 0 0 1 3.951 3.512A8.949 8.949 0 0 1 10 18Z" })
2213
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("path", { d: "M10 0a10 10 0 1 0 10 10A10.011 10.011 0 0 0 10 0Zm0 5a3 3 0 1 1 0 6 3 3 0 0 1 0-6Zm0 13a8.949 8.949 0 0 1-4.951-1.488A3.987 3.987 0 0 1 9 13h2a3.987 3.987 0 0 1 3.951 3.512A8.949 8.949 0 0 1 10 18Z" })
1744
2214
  }
1745
2215
  );
1746
2216
  }
@@ -1749,7 +2219,7 @@ function SkeletonBlock({
1749
2219
  className,
1750
2220
  isFirst
1751
2221
  }) {
1752
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2222
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1753
2223
  "div",
1754
2224
  {
1755
2225
  className: cn(
@@ -1781,14 +2251,14 @@ function CardSkeleton({
1781
2251
  const skeletons = Array.from({ length: Math.max(1, count) }, (_, index) => {
1782
2252
  const renderAvatar = shouldShowAvatar(variant, showAvatar);
1783
2253
  const renderImage = shouldShowImage(variant, showImage);
1784
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
2254
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1785
2255
  "div",
1786
2256
  {
1787
2257
  className: cn("animate-pulse md:p-6 dark:border-gray-700", className),
1788
2258
  style: { animationDuration, ...style },
1789
2259
  ...props,
1790
2260
  children: [
1791
- renderImage ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2261
+ renderImage ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1792
2262
  "div",
1793
2263
  {
1794
2264
  className: cn(
@@ -1797,9 +2267,9 @@ function CardSkeleton({
1797
2267
  )
1798
2268
  }
1799
2269
  ) : null,
1800
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: cn("flex items-center mt-4 gap-4", contentClassName), children: [
1801
- renderAvatar ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(AvatarSkeleton, { className: avatarClassName }) : null,
1802
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { children: Array.from({ length: Math.max(1, lines) }, (_2, lineIndex) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
2270
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: cn("flex items-center mt-4 gap-4", contentClassName), children: [
2271
+ renderAvatar ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(AvatarSkeleton, { className: avatarClassName }) : null,
2272
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { children: Array.from({ length: Math.max(1, lines) }, (_2, lineIndex) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1803
2273
  SkeletonBlock,
1804
2274
  {
1805
2275
  widthClass: lineWidths[lineIndex] ?? lineWidths[lineWidths.length - 1] ?? DEFAULT_LINE_WIDTHS[1],
@@ -1809,75 +2279,17 @@ function CardSkeleton({
1809
2279
  lineIndex
1810
2280
  )) })
1811
2281
  ] }),
1812
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "sr-only", children: srLabel })
2282
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "sr-only", children: srLabel })
1813
2283
  ]
1814
2284
  },
1815
2285
  index
1816
2286
  );
1817
2287
  });
1818
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_jsx_runtime8.Fragment, { children: skeletons });
1819
- }
1820
-
1821
- // src/components/tooltip/ToolTip.tsx
1822
- var import_react7 = require("react");
1823
- var import_react_tooltip = require("react-tooltip");
1824
- var import_jsx_runtime9 = require("react/jsx-runtime");
1825
- var defaultTooltipStyle = {
1826
- color: "#fff",
1827
- borderRadius: "5px",
1828
- zIndex: 999,
1829
- textAlign: "justify",
1830
- maxWidth: "300px",
1831
- whiteSpace: "pre-wrap",
1832
- wordWrap: "break-word",
1833
- overflowWrap: "break-word"
1834
- };
1835
- function ToolTip({
1836
- text = "tool tip",
1837
- placement = "top",
1838
- delayShow,
1839
- delayHide,
1840
- className,
1841
- tooltipClassName,
1842
- tooltipStyle,
1843
- wrapperTabIndex,
1844
- disabled = false,
1845
- children
1846
- }) {
1847
- const generatedId = (0, import_react7.useId)();
1848
- const tooltipId = `eztrak-tooltip-${generatedId.replace(/:/g, "")}`;
1849
- const tooltipText = String(text ?? "");
1850
- if (disabled || !tooltipText) {
1851
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className, children });
1852
- }
1853
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
1854
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1855
- "span",
1856
- {
1857
- className,
1858
- "data-tooltip-id": tooltipId,
1859
- "data-tooltip-content": tooltipText,
1860
- tabIndex: wrapperTabIndex,
1861
- children
1862
- }
1863
- ),
1864
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1865
- import_react_tooltip.Tooltip,
1866
- {
1867
- id: tooltipId,
1868
- place: placement,
1869
- positionStrategy: "fixed",
1870
- delayShow,
1871
- delayHide,
1872
- className: tooltipClassName,
1873
- style: { ...defaultTooltipStyle, ...tooltipStyle }
1874
- }
1875
- )
1876
- ] });
2288
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, { children: skeletons });
1877
2289
  }
1878
2290
 
1879
2291
  // src/components/tooltip/TooltipText.tsx
1880
- var import_jsx_runtime10 = require("react/jsx-runtime");
2292
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1881
2293
  function TooltipText({
1882
2294
  text = "",
1883
2295
  maxLength = 20,
@@ -1897,7 +2309,7 @@ function TooltipText({
1897
2309
  const displayText = truncateText(fullText, maxLength);
1898
2310
  const isTruncated = displayText !== fullText;
1899
2311
  const tooltipDisabled = !showTooltip || !hasValue || tooltipWhenTruncatedOnly && !isTruncated;
1900
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
2312
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1901
2313
  ToolTip,
1902
2314
  {
1903
2315
  text: fullText,
@@ -1909,17 +2321,17 @@ function TooltipText({
1909
2321
  tooltipStyle,
1910
2322
  wrapperTabIndex: tooltipDisabled ? void 0 : 0,
1911
2323
  disabled: tooltipDisabled,
1912
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: cn("inline-block max-w-full align-bottom", textClassName), children: displayText })
2324
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: cn("inline-block max-w-full align-bottom", textClassName), children: displayText })
1913
2325
  }
1914
2326
  );
1915
2327
  }
1916
2328
 
1917
2329
  // src/components/cell-editor/CustomCellEditor.tsx
1918
- var import_react8 = require("react");
2330
+ var import_react11 = require("react");
1919
2331
  var import_react_hot_toast2 = __toESM(require("react-hot-toast"));
1920
- var import_jsx_runtime11 = require("react/jsx-runtime");
2332
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1921
2333
  function ButtonSpinner() {
1922
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
2334
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1923
2335
  "svg",
1924
2336
  {
1925
2337
  className: "animate-spin",
@@ -1929,7 +2341,7 @@ function ButtonSpinner() {
1929
2341
  fill: "none",
1930
2342
  "aria-hidden": true,
1931
2343
  children: [
1932
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2344
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1933
2345
  "circle",
1934
2346
  {
1935
2347
  cx: "12",
@@ -1940,7 +2352,7 @@ function ButtonSpinner() {
1940
2352
  strokeOpacity: "0.25"
1941
2353
  }
1942
2354
  ),
1943
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2355
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1944
2356
  "path",
1945
2357
  {
1946
2358
  d: "M12 2a10 10 0 0 1 10 10",
@@ -1962,7 +2374,7 @@ function normalizeInitialValue(initialValue, inputType) {
1962
2374
  }
1963
2375
  return initialValue;
1964
2376
  }
1965
- var CustomCellEditor = (0, import_react8.forwardRef)(
2377
+ var CustomCellEditor = (0, import_react11.forwardRef)(
1966
2378
  ({
1967
2379
  value: initialValue,
1968
2380
  name,
@@ -1987,11 +2399,11 @@ var CustomCellEditor = (0, import_react8.forwardRef)(
1987
2399
  cancelButtonClassName
1988
2400
  }, ref) => {
1989
2401
  const normalizedInitial = normalizeInitialValue(initialValue, inputType);
1990
- const [value, setValue] = (0, import_react8.useState)(normalizedInitial);
1991
- const [isLoading, setIsLoading] = (0, import_react8.useState)(false);
1992
- const inputRef = (0, import_react8.useRef)(null);
1993
- const selectRef = (0, import_react8.useRef)(null);
1994
- const normalizedOptions = (0, import_react8.useMemo)(() => {
2402
+ const [value, setValue] = (0, import_react11.useState)(normalizedInitial);
2403
+ const [isLoading, setIsLoading] = (0, import_react11.useState)(false);
2404
+ const inputRef = (0, import_react11.useRef)(null);
2405
+ const selectRef = (0, import_react11.useRef)(null);
2406
+ const normalizedOptions = (0, import_react11.useMemo)(() => {
1995
2407
  if (customOptions && customOptions.length > 0) {
1996
2408
  return customOptions.map((opt) => ({
1997
2409
  value: String(opt[valueKey] ?? ""),
@@ -2001,13 +2413,13 @@ var CustomCellEditor = (0, import_react8.forwardRef)(
2001
2413
  return dropdownOptions;
2002
2414
  }, [customOptions, dropdownOptions, valueKey, labelKey]);
2003
2415
  const isDropdown = inputType === "dropdown" || normalizedOptions.length > 0;
2004
- (0, import_react8.useImperativeHandle)(ref, () => ({
2416
+ (0, import_react11.useImperativeHandle)(ref, () => ({
2005
2417
  getValue: () => value,
2006
2418
  isCancelBeforeStart: () => false,
2007
2419
  isCancelAfterEnd: () => false,
2008
2420
  isPopup: () => true
2009
2421
  }));
2010
- (0, import_react8.useEffect)(() => {
2422
+ (0, import_react11.useEffect)(() => {
2011
2423
  if (isDropdown) {
2012
2424
  selectRef.current?.focus();
2013
2425
  return;
@@ -2076,7 +2488,7 @@ var CustomCellEditor = (0, import_react8.forwardRef)(
2076
2488
  const defaultInputClass = "w-48 px-2 py-1 text-sm border border-gray-200 rounded-md bg-white focus:outline-none focus:ring-1 focus:ring-blue-400";
2077
2489
  const defaultSaveBtnClass = "px-3 py-1 text-sm font-medium text-white bg-green-500 rounded-md hover:bg-green-600 disabled:opacity-50 whitespace-nowrap shrink-0";
2078
2490
  const defaultCancelBtnClass = "px-3 py-1 text-sm font-medium text-white bg-red-500 rounded-md hover:bg-red-600 disabled:opacity-50 whitespace-nowrap shrink-0";
2079
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
2491
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
2080
2492
  "div",
2081
2493
  {
2082
2494
  className: cn(
@@ -2085,7 +2497,7 @@ var CustomCellEditor = (0, import_react8.forwardRef)(
2085
2497
  ),
2086
2498
  style: containerStyle,
2087
2499
  children: [
2088
- isDropdown ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
2500
+ isDropdown ? /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
2089
2501
  "select",
2090
2502
  {
2091
2503
  ref: selectRef,
@@ -2095,11 +2507,11 @@ var CustomCellEditor = (0, import_react8.forwardRef)(
2095
2507
  className: inputClassName ?? defaultInputClass,
2096
2508
  disabled: isLoading,
2097
2509
  children: [
2098
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("option", { value: "", disabled: true, children: "Select option..." }),
2099
- normalizedOptions.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("option", { value: opt.value, children: opt.label }, opt.value))
2510
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("option", { value: "", disabled: true, children: "Select option..." }),
2511
+ normalizedOptions.map((opt) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("option", { value: opt.value, children: opt.label }, opt.value))
2100
2512
  ]
2101
2513
  }
2102
- ) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2514
+ ) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2103
2515
  "input",
2104
2516
  {
2105
2517
  ref: inputRef,
@@ -2112,7 +2524,7 @@ var CustomCellEditor = (0, import_react8.forwardRef)(
2112
2524
  disabled: isLoading
2113
2525
  }
2114
2526
  ),
2115
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2527
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2116
2528
  "button",
2117
2529
  {
2118
2530
  type: "button",
@@ -2121,10 +2533,10 @@ var CustomCellEditor = (0, import_react8.forwardRef)(
2121
2533
  className: saveButtonClassName ?? (saveButtonStyle ? void 0 : defaultSaveBtnClass),
2122
2534
  style: saveButtonStyle,
2123
2535
  title: "Save (Enter)",
2124
- children: isLoading ? loadingIndicator ?? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ButtonSpinner, {}) : saveButtonContent ?? "Save"
2536
+ children: isLoading ? loadingIndicator ?? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(ButtonSpinner, {}) : saveButtonContent ?? "Save"
2125
2537
  }
2126
2538
  ),
2127
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
2539
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2128
2540
  "button",
2129
2541
  {
2130
2542
  type: "button",
@@ -2144,10 +2556,10 @@ var CustomCellEditor = (0, import_react8.forwardRef)(
2144
2556
  CustomCellEditor.displayName = "CustomCellEditor";
2145
2557
 
2146
2558
  // src/components/popup-cell-renderer/PopupCellRenderer.tsx
2147
- var import_react9 = require("react");
2148
- var import_react10 = __toESM(require("@tippyjs/react"));
2559
+ var import_react12 = require("react");
2560
+ var import_react13 = __toESM(require("@tippyjs/react"));
2149
2561
  var import_bi = require("react-icons/bi");
2150
- var import_jsx_runtime12 = require("react/jsx-runtime");
2562
+ var import_jsx_runtime17 = require("react/jsx-runtime");
2151
2563
  function PopupCellRenderer({
2152
2564
  dropDownContent,
2153
2565
  actionIcon: ActionIcon = import_bi.BiDotsVerticalRounded,
@@ -2161,8 +2573,8 @@ function PopupCellRenderer({
2161
2573
  ariaLabel = "Row actions",
2162
2574
  openOnHover = false
2163
2575
  }) {
2164
- const [visible, setVisible] = (0, import_react9.useState)(false);
2165
- const instanceRef = (0, import_react9.useRef)(null);
2576
+ const [visible, setVisible] = (0, import_react12.useState)(false);
2577
+ const instanceRef = (0, import_react12.useRef)(null);
2166
2578
  const show = () => setVisible(true);
2167
2579
  const hide = () => {
2168
2580
  setVisible(false);
@@ -2182,8 +2594,8 @@ function PopupCellRenderer({
2182
2594
  visible,
2183
2595
  onClickOutside: hide
2184
2596
  };
2185
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "flex h-full", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
2186
- import_react10.default,
2597
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "flex h-full", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2598
+ import_react13.default,
2187
2599
  {
2188
2600
  content,
2189
2601
  allowHTML: true,
@@ -2200,7 +2612,7 @@ function PopupCellRenderer({
2200
2612
  },
2201
2613
  ...hoverOrClickProps,
2202
2614
  ...tippyProps,
2203
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
2615
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
2204
2616
  "button",
2205
2617
  {
2206
2618
  type: "button",
@@ -2212,7 +2624,7 @@ function PopupCellRenderer({
2212
2624
  "aria-label": ariaLabel,
2213
2625
  children: [
2214
2626
  !hideTitle && title,
2215
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ActionIcon, { "aria-hidden": true })
2627
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ActionIcon, { "aria-hidden": true })
2216
2628
  ]
2217
2629
  }
2218
2630
  )
@@ -2240,7 +2652,7 @@ var ROW_ACTION_PRESETS = {
2240
2652
  };
2241
2653
 
2242
2654
  // src/components/row-actions/ActionMenuItem.tsx
2243
- var import_jsx_runtime13 = require("react/jsx-runtime");
2655
+ var import_jsx_runtime18 = require("react/jsx-runtime");
2244
2656
  function ActionMenuItem({
2245
2657
  label,
2246
2658
  icon: Icon,
@@ -2261,7 +2673,7 @@ function ActionMenuItem({
2261
2673
  onClick
2262
2674
  }) {
2263
2675
  const tooltipText = tooltip ?? label;
2264
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2676
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2265
2677
  ToolTip,
2266
2678
  {
2267
2679
  text: tooltipText,
@@ -2272,7 +2684,7 @@ function ActionMenuItem({
2272
2684
  tooltipClassName,
2273
2685
  tooltipStyle: { ...ROW_ACTION_DEFAULT_MENU_TOOLTIP_STYLE, ...tooltipStyle },
2274
2686
  className: showLabel ? "block w-full" : "inline-flex",
2275
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
2687
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
2276
2688
  "button",
2277
2689
  {
2278
2690
  type: "button",
@@ -2292,7 +2704,7 @@ function ActionMenuItem({
2292
2704
  className
2293
2705
  ),
2294
2706
  children: [
2295
- Icon ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2707
+ Icon ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2296
2708
  Icon,
2297
2709
  {
2298
2710
  className: cn("shrink-0", iconClassName),
@@ -2300,7 +2712,7 @@ function ActionMenuItem({
2300
2712
  size: iconSize
2301
2713
  }
2302
2714
  ) : null,
2303
- showLabel ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: labelClassName, children: label }) : null
2715
+ showLabel ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: labelClassName, children: label }) : null
2304
2716
  ]
2305
2717
  }
2306
2718
  )
@@ -2358,7 +2770,7 @@ function resolveActions(actions, data, hasPermission, presets) {
2358
2770
  }
2359
2771
 
2360
2772
  // src/components/row-actions/RowActions.tsx
2361
- var import_jsx_runtime14 = require("react/jsx-runtime");
2773
+ var import_jsx_runtime19 = require("react/jsx-runtime");
2362
2774
  function runAction(action, data, hide, confirmFn = confirmationAlert) {
2363
2775
  if (!action.onClick) {
2364
2776
  if (action.closeOnClick) hide?.();
@@ -2412,7 +2824,7 @@ function RowActions({
2412
2824
  };
2413
2825
  const renderDefaultItem = (action, hide, showLabel = true) => {
2414
2826
  if (action.type === "divider") {
2415
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2827
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2416
2828
  "div",
2417
2829
  {
2418
2830
  role: "separator",
@@ -2422,9 +2834,9 @@ function RowActions({
2422
2834
  );
2423
2835
  }
2424
2836
  if (action.content) {
2425
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: action.className, children: action.content }, action.key);
2837
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: action.className, children: action.content }, action.key);
2426
2838
  }
2427
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2839
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2428
2840
  ActionMenuItem,
2429
2841
  {
2430
2842
  label: action.label,
@@ -2451,15 +2863,15 @@ function RowActions({
2451
2863
  const renderItems = (hide, showLabel = true) => resolved.map((action) => {
2452
2864
  const defaultItem = renderDefaultItem(action, hide, showLabel);
2453
2865
  if (!renderItem) return defaultItem;
2454
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { children: renderItem(action, { data, hide: hide ?? (() => void 0), defaultItem }) }, action.key);
2866
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { children: renderItem(action, { data, hide: hide ?? (() => void 0), defaultItem }) }, action.key);
2455
2867
  });
2456
2868
  if (mode === "inline") {
2457
2869
  const inlineItems = renderItems(void 0, false);
2458
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: cn("flex h-full items-center justify-center gap-1", className), children: inlineItems });
2870
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: cn("flex h-full items-center justify-center gap-1", className), children: inlineItems });
2459
2871
  }
2460
2872
  const triggerTooltipText = triggerTooltip === false ? void 0 : triggerTooltip;
2461
2873
  const buildMenu = (hide) => {
2462
- const defaultMenu = /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2874
+ const defaultMenu = /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2463
2875
  "div",
2464
2876
  {
2465
2877
  className: cn(
@@ -2478,14 +2890,14 @@ function RowActions({
2478
2890
  });
2479
2891
  };
2480
2892
  if (renderTrigger) {
2481
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, { children: renderTrigger({
2893
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_jsx_runtime19.Fragment, { children: renderTrigger({
2482
2894
  data,
2483
2895
  actions: resolved,
2484
2896
  hide: () => void 0,
2485
2897
  defaultMenu: buildMenu(() => void 0)
2486
2898
  }) });
2487
2899
  }
2488
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2900
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2489
2901
  ToolTip,
2490
2902
  {
2491
2903
  text: triggerTooltipText,
@@ -2496,7 +2908,7 @@ function RowActions({
2496
2908
  tooltipClassName,
2497
2909
  tooltipStyle,
2498
2910
  className: "flex h-full items-center justify-center",
2499
- children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2911
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2500
2912
  PopupCellRenderer,
2501
2913
  {
2502
2914
  params: { data },
@@ -2515,9 +2927,9 @@ function RowActions({
2515
2927
  }
2516
2928
 
2517
2929
  // src/components/table-error-boundary/TableErrorBoundary.tsx
2518
- var import_react11 = require("react");
2930
+ var import_react14 = require("react");
2519
2931
  var import_fa6 = require("react-icons/fa6");
2520
- var import_jsx_runtime15 = require("react/jsx-runtime");
2932
+ var import_jsx_runtime20 = require("react/jsx-runtime");
2521
2933
  var TableErrorBoundary = ({
2522
2934
  isError,
2523
2935
  isLoading = false,
@@ -2528,13 +2940,13 @@ var TableErrorBoundary = ({
2528
2940
  className,
2529
2941
  minHeight = "280px"
2530
2942
  }) => {
2531
- const message = (0, import_react11.useMemo)(() => {
2943
+ const message = (0, import_react14.useMemo)(() => {
2532
2944
  if (errorMessage) return errorMessage;
2533
2945
  if (error) return classifyError(error).userMessage;
2534
2946
  return "Unable to load table data. Please try again.";
2535
2947
  }, [error, errorMessage]);
2536
2948
  if (isLoading && !isError) {
2537
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2949
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2538
2950
  "div",
2539
2951
  {
2540
2952
  className: cn(
@@ -2545,12 +2957,12 @@ var TableErrorBoundary = ({
2545
2957
  role: "status",
2546
2958
  "aria-live": "polite",
2547
2959
  "aria-busy": "true",
2548
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Loader, { size: "40px" })
2960
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Loader, { size: "40px" })
2549
2961
  }
2550
2962
  );
2551
2963
  }
2552
2964
  if (isError) {
2553
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
2965
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
2554
2966
  "div",
2555
2967
  {
2556
2968
  className: cn(
@@ -2561,7 +2973,7 @@ var TableErrorBoundary = ({
2561
2973
  role: "alert",
2562
2974
  "aria-live": "assertive",
2563
2975
  children: [
2564
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2976
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2565
2977
  import_fa6.FaTriangleExclamation,
2566
2978
  {
2567
2979
  className: "text-red-500",
@@ -2569,11 +2981,11 @@ var TableErrorBoundary = ({
2569
2981
  "aria-hidden": true
2570
2982
  }
2571
2983
  ),
2572
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "max-w-md space-y-1", children: [
2573
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "text-base font-semibold text-gray-800", children: "Failed to load data" }),
2574
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "text-sm text-gray-600", children: message })
2984
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "max-w-md space-y-1", children: [
2985
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: "text-base font-semibold text-gray-800", children: "Failed to load data" }),
2986
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: "text-sm text-gray-600", children: message })
2575
2987
  ] }),
2576
- refetch && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
2988
+ refetch && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
2577
2989
  "button",
2578
2990
  {
2579
2991
  type: "button",
@@ -2581,7 +2993,7 @@ var TableErrorBoundary = ({
2581
2993
  disabled: isLoading,
2582
2994
  className: "inline-flex items-center gap-2 rounded-lg bg-primary-150 px-4 py-2 text-sm font-medium text-white transition-colors hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60",
2583
2995
  children: [
2584
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_fa6.FaArrowsRotate, { className: cn(isLoading && "animate-spin") }),
2996
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_fa6.FaArrowsRotate, { className: cn(isLoading && "animate-spin") }),
2585
2997
  isLoading ? "Retrying..." : "Try again"
2586
2998
  ]
2587
2999
  }
@@ -2590,16 +3002,20 @@ var TableErrorBoundary = ({
2590
3002
  }
2591
3003
  );
2592
3004
  }
2593
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_jsx_runtime15.Fragment, { children });
3005
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_jsx_runtime20.Fragment, { children });
2594
3006
  };
2595
3007
  // Annotate the CommonJS export names for ESM import in node:
2596
3008
  0 && (module.exports = {
2597
3009
  ActionMenuItem,
3010
+ Breadcrumbs,
3011
+ Button,
3012
+ Card,
2598
3013
  CardSkeleton,
2599
3014
  CustomCellEditor,
2600
3015
  CustomPagination,
2601
3016
  DropdownFilter,
2602
3017
  EztrakTabs,
3018
+ Header,
2603
3019
  Loader,
2604
3020
  Modal,
2605
3021
  PopupCellRenderer,
@@ -2612,6 +3028,7 @@ var TableErrorBoundary = ({
2612
3028
  ResetFiltersButton,
2613
3029
  RowActions,
2614
3030
  SearchInput,
3031
+ Sidebar,
2615
3032
  TableErrorBoundary,
2616
3033
  TableLayoutToolbarControls,
2617
3034
  ToolTip,