@bwp-web/components 1.4.2 → 1.5.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/README.md CHANGED
@@ -22,36 +22,36 @@ For `BiampTable` only:
22
22
 
23
23
  ## Components
24
24
 
25
- | Component | Description |
26
- | ---------------------------- | ---------------------------------------------------------------------------------------- |
27
- | `BiampLayout` | Full-page layout shell with optional header and sidebar slots |
28
- | `BiampWrapper` | Full-page content wrapper with padding, rounded corners, and scrollable overflow |
29
- | `BiampSidebar` | Expandable vertical sidebar (48px ↔ 240px) with animated toggle and copyright caption |
30
- | `BiampSidebarIconList` | Scrollable vertical list with 4px gaps for sidebar items |
31
- | `BiampSidebarIcon` | Selectable 48px-tall icon button for sidebar navigation, with optional `name` label |
32
- | `BiampSidebarComponent` | 48×48px rounded box for arbitrary sidebar content |
33
- | `BiampHeader` | Horizontal header container with padding |
34
- | `BiampHeaderTitle` | Title section with icon, optional title, and optional subtitle |
35
- | `BiampHeaderSearch` | Search input with leading search icon |
36
- | `BiampHeaderActions` | Flex container for grouping action buttons and profile |
37
- | `BiampHeaderButtonList` | Horizontal list with 4px gaps for header buttons |
38
- | `BiampHeaderButton` | Selectable 40×40px icon button for header actions |
39
- | `BiampHeaderProfile` | Profile button with image or custom children (e.g. `UserInitialsIcon`) |
40
- | `BiampAppPopover` | Styled popover for the app-launcher content |
41
- | `BiampBuildAppContent` | 2-column grid container for "Configure & Build" app tiles |
42
- | `BiampBuildAppContentItem` | App tile with image, name, description, and optional action button |
43
- | `BiampEndUserAppContent` | Responsive container for end-user app items: stack for one child, 2-column grid for many |
44
- | `BiampEndUserAppContentItem` | Row-style app item with image, name, description, and external link; supports `href` |
45
- | `BiampBanner` | Full-width animated notification banner |
46
- | `BiampBannerIcon` | Leading icon slot for `BiampBanner` |
47
- | `BiampBannerContent` | Center message slot for `BiampBanner` |
48
- | `BiampBannerActions` | Trailing actions slot for `BiampBanner` |
49
- | `BiampGlobalSearch` | Searchable autocomplete with icons, subtitles, chips, and keyboard hints |
50
- | `SegmentedButtonGroup` | Horizontal container for grouping segmented toggle buttons |
51
- | `SegmentedButton` | Individual toggle button for use inside `SegmentedButtonGroup` |
52
- | `BiampTable` | Composable data table with sorting, selection, pagination, and more |
53
- | `UserInitialsIcon` | Avatar-style icon showing a user's initials with a deterministic color |
54
- | `DynamicSvgIcon` | Renders a remotely-fetched SVG with a skeleton loader and required fallback |
25
+ | Component | Description |
26
+ | ---------------------------- | ------------------------------------------------------------------------------------------------------------------- |
27
+ | `BiampLayout` | Full-page layout shell with optional header and sidebar slots |
28
+ | `BiampWrapper` | Full-page content wrapper with padding, rounded corners, scrollable overflow, and an optional debounced loading bar |
29
+ | `BiampSidebar` | Expandable vertical sidebar (48px ↔ 240px) with animated toggle and copyright caption |
30
+ | `BiampSidebarIconList` | Scrollable vertical list with 4px gaps for sidebar items; suppresses overscroll bounce |
31
+ | `BiampSidebarIcon` | Selectable 48px-tall icon button for sidebar navigation, with optional `name` label |
32
+ | `BiampSidebarComponent` | 48×48px rounded box for arbitrary sidebar content |
33
+ | `BiampHeader` | Horizontal header container with padding |
34
+ | `BiampHeaderTitle` | Title section with icon, optional title, and optional subtitle |
35
+ | `BiampHeaderSearch` | Search input with leading search icon |
36
+ | `BiampHeaderActions` | Flex container for grouping action buttons and profile |
37
+ | `BiampHeaderButtonList` | Horizontal list with 4px gaps for header buttons |
38
+ | `BiampHeaderButton` | Selectable 40×40px icon button for header actions |
39
+ | `BiampHeaderProfile` | Profile button with image or custom children (e.g. `UserInitialsIcon`) |
40
+ | `BiampAppPopover` | Styled popover for the app-launcher content |
41
+ | `BiampBuildAppContent` | 2-column grid container for "Configure & Build" app tiles |
42
+ | `BiampBuildAppContentItem` | App tile with image, name, description, and optional action button |
43
+ | `BiampEndUserAppContent` | Responsive container for end-user app items: stack for one child, 2-column grid for many |
44
+ | `BiampEndUserAppContentItem` | Row-style app item with image, name, description, and external link; supports `href` |
45
+ | `BiampBanner` | Full-width animated notification banner |
46
+ | `BiampBannerIcon` | Leading icon slot for `BiampBanner` |
47
+ | `BiampBannerContent` | Center message slot for `BiampBanner` |
48
+ | `BiampBannerActions` | Trailing actions slot for `BiampBanner` |
49
+ | `BiampGlobalSearch` | Searchable autocomplete with icons, subtitles, chips, and keyboard hints |
50
+ | `SegmentedButtonGroup` | Horizontal container for grouping segmented toggle buttons |
51
+ | `SegmentedButton` | Individual toggle button for use inside `SegmentedButtonGroup` |
52
+ | `BiampTable` | Composable data table with sorting, selection, pagination, and more |
53
+ | `UserInitialsIcon` | Avatar-style icon showing a user's initials with a deterministic color |
54
+ | `DynamicSvgIcon` | Renders a remotely-fetched SVG with a skeleton loader and required fallback |
55
55
 
56
56
  ## Usage
57
57
 
@@ -196,6 +196,18 @@ Full-page content wrapper with 16px padding, 8px border-radius, scrollable overf
196
196
  <BiampWrapper>{/* page content */}</BiampWrapper>
197
197
  ```
198
198
 
199
+ Pass `loading` to show a debounced `LinearProgress` bar pinned to the top of the wrapper. The bar appears 150ms after `loading` flips true and stays visible for at least 500ms once shown, so fast loads don't flicker.
200
+
201
+ ```tsx
202
+ <BiampWrapper loading={isLoading}>{/* page content */}</BiampWrapper>
203
+ ```
204
+
205
+ #### BiampWrapper Props
206
+
207
+ | Prop | Type | Default | Description |
208
+ | --------- | --------- | ------- | ----------------------------------------------------------------------------- |
209
+ | `loading` | `boolean` | `false` | Shows a debounced `LinearProgress` bar at the top of the wrapper while truthy |
210
+
199
211
  ### BiampSidebar
200
212
 
201
213
  Vertical sidebar that animates between a collapsed (48px) and expanded (240px) width. A toggle button is rendered between the children and the bottom logo by default; pass `expandable={false}` to hide it. When expanded, each `BiampSidebarIcon`'s `name` fades in next to its icon and the optional `bottomLogoText` (auto-prefixed with `© [current year]`) appears next to the logo.
@@ -13,6 +13,9 @@ export declare function BiampSidebar({ children, bottomLogoIcon, bottomLogoText,
13
13
  type BiampSidebarIconList = StackProps & {
14
14
  children: React.ReactNode;
15
15
  };
16
+ /**
17
+ * Vertical, scrollable list container for sidebar items with 4px gaps.
18
+ */
16
19
  export declare function BiampSidebarIconList({ children, sx, ...props }: BiampSidebarIconList): import("react/jsx-runtime").JSX.Element;
17
20
  type BiampSidebarIconProps = ListItemButtonProps & {
18
21
  selected?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"BiampSidebar.d.ts","sourceRoot":"","sources":["../../src/BiampSidebar/BiampSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EAEnB,UAAU,EAEX,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,GAAG,EAAuC,MAAM,OAAO,CAAC;AAUjE,KAAK,iBAAiB,GAAG,UAAU,GAAG;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,cAAc,EACd,cAAc,EACd,UAAiB,EACjB,QAAQ,EAAE,YAAY,EACtB,eAAuB,EACvB,gBAAgB,EAChB,EAAE,EACF,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAmFnB;AAED,KAAK,oBAAoB,GAAG,UAAU,GAAG;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,EAAE,EACF,GAAG,KAAK,EACT,EAAE,oBAAoB,2CAetB;AAED,KAAK,qBAAqB,GAAG,mBAAmB,GAAG;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,EAAE,EACF,GAAG,KAAK,EACT,EAAE,qBAAqB,2CAwDvB;AAED,KAAK,0BAA0B,GAAG,mBAAmB,GAAG;IACtD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,EAAE,EACF,GAAG,KAAK,EACT,EAAE,0BAA0B,2CAoB5B"}
1
+ {"version":3,"file":"BiampSidebar.d.ts","sourceRoot":"","sources":["../../src/BiampSidebar/BiampSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EAEnB,UAAU,EAEX,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,GAAG,EAAuC,MAAM,OAAO,CAAC;AAUjE,KAAK,iBAAiB,GAAG,UAAU,GAAG;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,cAAc,EACd,cAAc,EACd,UAAiB,EACjB,QAAQ,EAAE,YAAY,EACtB,eAAuB,EACvB,gBAAgB,EAChB,EAAE,EACF,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAmFnB;AAED,KAAK,oBAAoB,GAAG,UAAU,GAAG;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,EAAE,EACF,GAAG,KAAK,EACT,EAAE,oBAAoB,2CAgBtB;AAED,KAAK,qBAAqB,GAAG,mBAAmB,GAAG;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,EAAE,EACF,GAAG,KAAK,EACT,EAAE,qBAAqB,2CAwDvB;AAED,KAAK,0BAA0B,GAAG,mBAAmB,GAAG;IACtD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,EAAE,EACF,GAAG,KAAK,EACT,EAAE,0BAA0B,2CAoB5B"}
@@ -1,12 +1,16 @@
1
1
  import React from 'react';
2
2
  import { StackProps } from '@mui/material';
3
3
  export type BiampWrapperProps = StackProps & {
4
+ loading?: boolean;
4
5
  children?: React.ReactNode;
5
6
  };
6
7
  /**
7
8
  * A full-page content wrapper that stretches to fill all available space
8
9
  * with 16px padding, 8px border radius, and scrollable overflow.
9
10
  * Background: white (light) / `grey.800` (dark).
11
+ *
12
+ * Optional `loading` shows a `LinearProgress` bar pinned to the top,
13
+ * debounced via `useLoadingDelay` so fast loads don't flicker.
10
14
  */
11
- export declare function BiampWrapper({ children, sx, ...props }: BiampWrapperProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function BiampWrapper({ loading, children, sx, ...props }: BiampWrapperProps): import("react/jsx-runtime").JSX.Element;
12
16
  //# sourceMappingURL=BiampWrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BiampWrapper.d.ts","sourceRoot":"","sources":["../../src/BiampWrapper/BiampWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAS,UAAU,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG;IAC3C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,2CAsBzE"}
1
+ {"version":3,"file":"BiampWrapper.d.ts","sourceRoot":"","sources":["../../src/BiampWrapper/BiampWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAA8B,UAAU,EAAE,MAAM,eAAe,CAAC;AAGvE,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAe,EACf,QAAQ,EACR,EAAE,EACF,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAsCnB"}
@@ -0,0 +1,2 @@
1
+ export { useLoadingDelay } from './useLoadingDelay';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLoadingDelay.d.ts","sourceRoot":"","sources":["../../src/hooks/useLoadingDelay.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,EAAE,KAAW,EAAE,WAAiB,EAAE;;;CAAK,GACtC,OAAO,CAoCT"}
package/dist/index.cjs CHANGED
@@ -465,15 +465,55 @@ module.exports = __toCommonJS(index_exports);
465
465
 
466
466
  // src/BiampWrapper/BiampWrapper.tsx
467
467
  var import_material = require("@mui/material");
468
+
469
+ // src/hooks/useLoadingDelay.ts
470
+ var import_react = require("react");
471
+ function useLoadingDelay(loading, { delay = 150, minDuration = 500 } = {}) {
472
+ const [status, setStatus] = (0, import_react.useState)("idle");
473
+ const timeoutRef = (0, import_react.useRef)(null);
474
+ function clearPending() {
475
+ if (timeoutRef.current !== null) {
476
+ clearTimeout(timeoutRef.current);
477
+ timeoutRef.current = null;
478
+ }
479
+ }
480
+ (0, import_react.useEffect)(() => {
481
+ if (loading && status === "idle") {
482
+ clearPending();
483
+ timeoutRef.current = setTimeout(() => {
484
+ timeoutRef.current = setTimeout(() => {
485
+ setStatus("ending");
486
+ }, minDuration);
487
+ setStatus("loading");
488
+ }, delay);
489
+ setStatus("delaying");
490
+ }
491
+ if (!loading && status !== "loading") {
492
+ clearPending();
493
+ setStatus("idle");
494
+ }
495
+ }, [loading, delay, minDuration, status]);
496
+ (0, import_react.useEffect)(() => clearPending, []);
497
+ return status === "loading" || status === "ending";
498
+ }
499
+
500
+ // src/BiampWrapper/BiampWrapper.tsx
468
501
  var import_jsx_runtime = require("react/jsx-runtime");
469
- function BiampWrapper({ children, sx, ...props }) {
470
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
502
+ function BiampWrapper({
503
+ loading = false,
504
+ children,
505
+ sx,
506
+ ...props
507
+ }) {
508
+ const showLoading = useLoadingDelay(loading);
509
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
471
510
  import_material.Stack,
472
511
  {
473
512
  direction: "column",
474
513
  padding: "16px",
475
514
  alignItems: "flex-start",
476
515
  sx: {
516
+ position: "relative",
477
517
  flex: 1,
478
518
  height: "100%",
479
519
  width: "100%",
@@ -484,7 +524,22 @@ function BiampWrapper({ children, sx, ...props }) {
484
524
  ...sx
485
525
  },
486
526
  ...props,
487
- children
527
+ children: [
528
+ showLoading && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
529
+ import_material.Box,
530
+ {
531
+ sx: ({ zIndex }) => ({
532
+ position: "absolute",
533
+ top: 0,
534
+ left: 0,
535
+ width: "100%",
536
+ zIndex: zIndex.appBar + 1
537
+ }),
538
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_material.LinearProgress, {})
539
+ }
540
+ ),
541
+ children
542
+ ]
488
543
  }
489
544
  );
490
545
  }
@@ -492,9 +547,9 @@ function BiampWrapper({ children, sx, ...props }) {
492
547
  // src/BiampSidebar/BiampSidebar.tsx
493
548
  var import_material2 = require("@mui/material");
494
549
  var import_assets = require("@bwp-web/assets");
495
- var import_react = require("react");
550
+ var import_react2 = require("react");
496
551
  var import_jsx_runtime2 = require("react/jsx-runtime");
497
- var BiampSidebarContext = (0, import_react.createContext)({
552
+ var BiampSidebarContext = (0, import_react2.createContext)({
498
553
  expanded: false
499
554
  });
500
555
  function BiampSidebar({
@@ -508,7 +563,7 @@ function BiampSidebar({
508
563
  sx,
509
564
  ...props
510
565
  }) {
511
- const [internalExpanded, setInternalExpanded] = (0, import_react.useState)(defaultExpanded);
566
+ const [internalExpanded, setInternalExpanded] = (0, import_react2.useState)(defaultExpanded);
512
567
  const isControlled = expandedProp !== void 0;
513
568
  const expanded = isControlled ? expandedProp : internalExpanded;
514
569
  const toggleExpanded = () => {
@@ -570,7 +625,7 @@ function BiampSidebar({
570
625
  {
571
626
  variant: "caption",
572
627
  fontWeight: 500,
573
- color: "sidebar.main",
628
+ color: "text.secondary",
574
629
  noWrap: true,
575
630
  sx: {
576
631
  opacity: expanded ? 1 : 0,
@@ -601,6 +656,7 @@ function BiampSidebarIconList({
601
656
  minHeight: 0,
602
657
  gap: "4px",
603
658
  overflowY: "auto",
659
+ overscrollBehavior: "none",
604
660
  ...sx
605
661
  },
606
662
  ...props,
@@ -616,7 +672,7 @@ function BiampSidebarIcon({
616
672
  sx,
617
673
  ...props
618
674
  }) {
619
- const { expanded } = (0, import_react.useContext)(BiampSidebarContext);
675
+ const { expanded } = (0, import_react2.useContext)(BiampSidebarContext);
620
676
  const displayedSelectedIcon = selectedIcon ?? icon;
621
677
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
622
678
  import_material2.ListItemButton,
@@ -701,7 +757,7 @@ function BiampSidebarComponent({
701
757
 
702
758
  // src/BiampHeader/BiampHeader.tsx
703
759
  var import_material3 = require("@mui/material");
704
- var import_react2 = require("react");
760
+ var import_react3 = require("react");
705
761
  var import_assets2 = require("@bwp-web/assets");
706
762
  var import_jsx_runtime3 = require("react/jsx-runtime");
707
763
  function BiampHeader({ children, sx, ...props }) {
@@ -944,7 +1000,7 @@ function BiampEndUserAppContent({
944
1000
  sx,
945
1001
  ...props
946
1002
  }) {
947
- const isGrid = import_react2.Children.count(children) > 1;
1003
+ const isGrid = import_react3.Children.count(children) > 1;
948
1004
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
949
1005
  import_material3.Stack,
950
1006
  {
@@ -1099,7 +1155,7 @@ var import_assets3 = require("@bwp-web/assets");
1099
1155
 
1100
1156
  // src/BiampTable/BiampTableStatusMessage.tsx
1101
1157
  var import_material5 = require("@mui/material");
1102
- var import_react3 = require("react");
1158
+ var import_react4 = require("react");
1103
1159
  var import_jsx_runtime5 = require("react/jsx-runtime");
1104
1160
  function BiampTableStatusMessage({
1105
1161
  icon,
@@ -1109,7 +1165,7 @@ function BiampTableStatusMessage({
1109
1165
  ...stackProps
1110
1166
  }) {
1111
1167
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_material5.Stack, { alignItems: "center", gap: 1.5, ...stackProps, children: [
1112
- (0, import_react3.cloneElement)(icon, {
1168
+ (0, import_react4.cloneElement)(icon, {
1113
1169
  "aria-hidden": true,
1114
1170
  sx: { width: 56, height: 56, ...icon.props.sx }
1115
1171
  }),
@@ -1152,24 +1208,24 @@ function BiampTableErrorState({
1152
1208
  var import_material8 = require("@mui/material");
1153
1209
  var import_assets5 = require("@bwp-web/assets");
1154
1210
  var import_react_table = require("@tanstack/react-table");
1155
- var import_react5 = __toESM(require("react"), 1);
1211
+ var import_react6 = __toESM(require("react"), 1);
1156
1212
 
1157
1213
  // src/BiampTable/BiampTableTruncatedCell.tsx
1158
1214
  var import_material6 = require("@mui/material");
1159
- var import_react4 = require("react");
1215
+ var import_react5 = require("react");
1160
1216
  var import_jsx_runtime8 = require("react/jsx-runtime");
1161
1217
  function BiampTableTruncatedCell({
1162
1218
  children
1163
1219
  }) {
1164
- const textRef = (0, import_react4.useRef)(null);
1165
- const [open, setOpen] = (0, import_react4.useState)(false);
1166
- const handleMouseEnter = (0, import_react4.useCallback)(() => {
1220
+ const textRef = (0, import_react5.useRef)(null);
1221
+ const [open, setOpen] = (0, import_react5.useState)(false);
1222
+ const handleMouseEnter = (0, import_react5.useCallback)(() => {
1167
1223
  const el = textRef.current;
1168
1224
  if (el && el.scrollWidth > el.clientWidth) {
1169
1225
  setOpen(true);
1170
1226
  }
1171
1227
  }, []);
1172
- const handleMouseLeave = (0, import_react4.useCallback)(() => {
1228
+ const handleMouseLeave = (0, import_react5.useCallback)(() => {
1173
1229
  setOpen(false);
1174
1230
  }, []);
1175
1231
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
@@ -1563,42 +1619,11 @@ function BiampTableRowInner({
1563
1619
  function biampTableRowPropsAreEqual(prev, next) {
1564
1620
  return prev.row.id === next.row.id && prev.row.original === next.row.original && prev.isSelected === next.isSelected && prev.isExpanded === next.isExpanded && prev.row.getVisibleCells().length === next.row.getVisibleCells().length && prev.enableRowSelection === next.enableRowSelection && prev.enableExpanding === next.enableExpanding && prev.alwaysExpanded === next.alwaysExpanded && prev.hasExpandableRows === next.hasExpandableRows && prev.selectChildrenWithParent === next.selectChildrenWithParent && prev.showExpandGuidelines === next.showExpandGuidelines && prev.onRowClick === next.onRowClick && prev.isRowClickable === next.isRowClickable && prev.getRowLabel === next.getRowLabel && prev.customColor === next.customColor && prev.rowSlotProps === next.rowSlotProps && prev.cellSlotProps === next.cellSlotProps;
1565
1621
  }
1566
- var BiampTableRow = import_react5.default.memo(
1622
+ var BiampTableRow = import_react6.default.memo(
1567
1623
  BiampTableRowInner,
1568
1624
  biampTableRowPropsAreEqual
1569
1625
  );
1570
1626
 
1571
- // src/BiampTable/useLoadingDelay.ts
1572
- var import_react6 = require("react");
1573
- function useLoadingDelay(loading, { delay = 150, minDuration = 500 } = {}) {
1574
- const [status, setStatus] = (0, import_react6.useState)("idle");
1575
- const timeoutRef = (0, import_react6.useRef)(null);
1576
- function clearPending() {
1577
- if (timeoutRef.current !== null) {
1578
- clearTimeout(timeoutRef.current);
1579
- timeoutRef.current = null;
1580
- }
1581
- }
1582
- (0, import_react6.useEffect)(() => {
1583
- if (loading && status === "idle") {
1584
- clearPending();
1585
- timeoutRef.current = setTimeout(() => {
1586
- timeoutRef.current = setTimeout(() => {
1587
- setStatus("ending");
1588
- }, minDuration);
1589
- setStatus("loading");
1590
- }, delay);
1591
- setStatus("delaying");
1592
- }
1593
- if (!loading && status !== "loading") {
1594
- clearPending();
1595
- setStatus("idle");
1596
- }
1597
- }, [loading, delay, minDuration, status]);
1598
- (0, import_react6.useEffect)(() => clearPending, []);
1599
- return status === "loading" || status === "ending";
1600
- }
1601
-
1602
1627
  // src/BiampTable/BiampTable.tsx
1603
1628
  var import_jsx_runtime11 = require("react/jsx-runtime");
1604
1629
  var overlaySx = {