@scripso-homepad/ui 0.4.24 → 0.4.26

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.
@@ -48,41 +48,20 @@
48
48
  .table-scroll-area::-webkit-scrollbar-corner {
49
49
  background: transparent;
50
50
  }
51
- .table-sticky-right-shadow::before {
52
- content: "";
53
- position: absolute;
54
- top: 0;
55
- bottom: 0;
56
- left: 0;
57
- z-index: 0;
58
- width: 12px;
59
- transform: translateX(-100%);
60
- background:
61
- linear-gradient(
62
- 90deg,
63
- rgba(21, 26, 30, 0) 0%,
64
- rgba(21, 26, 30, 0.08) 100%);
65
- pointer-events: none;
66
- opacity: 0;
67
- transition: opacity 150ms ease;
68
- }
69
- .table-scroll-has-overflow:not(.table-scroll-at-end) .table-sticky-right-shadow::before {
70
- opacity: 1;
71
- }
72
- .table-sticky-right-head {
73
- background-color: var(--color-storm-gray-0, #fbfcfc);
74
- }
75
- .table-scroll-has-overflow:not(.table-scroll-at-end) .table-sticky-right-head {
76
- background-color: #fff;
77
- }
78
51
 
79
52
  /* src/web/components/drawer-scroll.css */
80
53
  .drawer-scroll-area {
81
54
  scrollbar-color: var(--color-storm-gray-200, #d5d9dd) transparent;
82
- scrollbar-width: thin;
55
+ scrollbar-width: unset;
56
+ }
57
+ @supports not selector(::-webkit-scrollbar) {
58
+ .drawer-scroll-area {
59
+ scrollbar-width: thin;
60
+ }
83
61
  }
84
62
  .drawer-scroll-area::-webkit-scrollbar {
85
- width: 4px;
63
+ width: 3px;
64
+ height: 3px;
86
65
  -webkit-appearance: none;
87
66
  appearance: none;
88
67
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/web/components/table-scroll.css","../../src/web/components/drawer-scroll.css","../../src/web/components/sonner-toast.css"],"sourcesContent":[".table-scroll-area {\n scrollbar-color: var(--color-storm-gray-50, #eceef0) transparent;\n scrollbar-width: thin;\n}\n\n.table-scroll-area::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.table-scroll-area::-webkit-scrollbar-button,\n.table-scroll-area::-webkit-scrollbar-button:single-button,\n.table-scroll-area::-webkit-scrollbar-button:double-button,\n.table-scroll-area::-webkit-scrollbar-button:horizontal:decrement,\n.table-scroll-area::-webkit-scrollbar-button:horizontal:increment,\n.table-scroll-area::-webkit-scrollbar-button:horizontal:start:decrement,\n.table-scroll-area::-webkit-scrollbar-button:horizontal:end:increment,\n.table-scroll-area::-webkit-scrollbar-button:vertical:decrement,\n.table-scroll-area::-webkit-scrollbar-button:vertical:increment,\n.table-scroll-area::-webkit-scrollbar-button:vertical:start:decrement,\n.table-scroll-area::-webkit-scrollbar-button:vertical:end:increment,\n.table-scroll-area::-webkit-scrollbar-button:start:decrement,\n.table-scroll-area::-webkit-scrollbar-button:end:increment,\n.table-scroll-area::-webkit-scrollbar-button:decrement,\n.table-scroll-area::-webkit-scrollbar-button:increment {\n display: none;\n width: 0;\n height: 0;\n max-width: 0;\n max-height: 0;\n min-width: 0;\n min-height: 0;\n padding: 0;\n margin: 0;\n border: 0;\n background: transparent;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.table-scroll-area::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.table-scroll-area::-webkit-scrollbar-thumb {\n background-color: var(--color-storm-gray-50, #eceef0);\n border-radius: 51px;\n}\n\n.table-scroll-area::-webkit-scrollbar-corner {\n background: transparent;\n}\n\n.table-sticky-right-shadow::before {\n content: '';\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n z-index: 0;\n width: 12px;\n transform: translateX(-100%);\n background: linear-gradient(90deg, rgba(21, 26, 30, 0) 0%, rgba(21, 26, 30, 0.08) 100%);\n pointer-events: none;\n opacity: 0;\n transition: opacity 150ms ease;\n}\n\n.table-scroll-has-overflow:not(.table-scroll-at-end) .table-sticky-right-shadow::before {\n opacity: 1;\n}\n\n.table-sticky-right-head {\n background-color: var(--color-storm-gray-0, #fbfcfc);\n}\n\n.table-scroll-has-overflow:not(.table-scroll-at-end) .table-sticky-right-head {\n background-color: #fff;\n}\n",".drawer-scroll-area {\n scrollbar-color: var(--color-storm-gray-200, #d5d9dd) transparent;\n scrollbar-width: thin;\n}\n\n.drawer-scroll-area::-webkit-scrollbar {\n width: 4px;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.drawer-scroll-area::-webkit-scrollbar-button,\n.drawer-scroll-area::-webkit-scrollbar-button:single-button,\n.drawer-scroll-area::-webkit-scrollbar-button:double-button,\n.drawer-scroll-area::-webkit-scrollbar-button:vertical:decrement,\n.drawer-scroll-area::-webkit-scrollbar-button:vertical:increment,\n.drawer-scroll-area::-webkit-scrollbar-button:vertical:start:decrement,\n.drawer-scroll-area::-webkit-scrollbar-button:vertical:end:increment,\n.drawer-scroll-area::-webkit-scrollbar-button:start:decrement,\n.drawer-scroll-area::-webkit-scrollbar-button:end:increment,\n.drawer-scroll-area::-webkit-scrollbar-button:decrement,\n.drawer-scroll-area::-webkit-scrollbar-button:increment {\n display: none;\n width: 0;\n height: 0;\n}\n\n.drawer-scroll-area::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.drawer-scroll-area::-webkit-scrollbar-thumb {\n background-color: var(--color-storm-gray-200, #d5d9dd);\n border-radius: 9999px;\n}\n",".homepad-toaster {\n --width: 409px;\n --gap: 12px;\n --border-radius: 20px;\n font-family: var(--font-sans, 'Noto Sans Armenian', ui-sans-serif, system-ui, sans-serif);\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] {\n align-items: center;\n gap: 16px;\n width: 409px;\n min-height: 72px;\n height: auto;\n padding: 12px 44px 12px 12px;\n background: #fff;\n border: 1px solid var(--color-storm-gray-50, #eceef0);\n border-radius: 20px;\n box-shadow: 0 1px 4px 0 #00000014;\n color: var(--color-slate-blue, #182e3c);\n overflow: visible;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'][data-front='true'] {\n height: auto !important;\n}\n\n.homepad-toaster\n [data-sonner-toast][data-styled='true'][data-mounted='true'][data-expanded='true'] {\n height: auto !important;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] [data-icon] {\n width: auto;\n height: auto;\n margin: 0;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] [data-content] {\n gap: 2px;\n min-width: 0;\n flex: 1;\n align-self: center;\n overflow: visible;\n}\n\n.homepad-toaster .homepad-toast__title {\n font-family: var(--font-sans, 'Noto Sans Armenian', ui-sans-serif, system-ui, sans-serif);\n font-size: 14px;\n font-weight: 700;\n line-height: 19px;\n letter-spacing: 0;\n color: var(--color-slate-blue, #182e3c);\n}\n\n.homepad-toaster .homepad-toast__description {\n font-family: var(--font-sans, 'Noto Sans Armenian', ui-sans-serif, system-ui, sans-serif);\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n letter-spacing: 0;\n color: var(--color-slate-blue, #182e3c);\n}\n\n.homepad-toaster .homepad-toast__icon-badge {\n display: flex;\n width: 48px;\n height: 48px;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n padding: 12px;\n border-radius: 12px;\n box-sizing: border-box;\n}\n\n.homepad-toaster .homepad-toast__icon-badge svg {\n width: 24px;\n height: 24px;\n margin: 0;\n flex-shrink: 0;\n}\n\n.homepad-toaster .homepad-toast__icon-badge--success {\n background: var(--color-emerald-green-0, #f0fbf5);\n}\n\n.homepad-toaster .homepad-toast__icon-badge--error {\n background: var(--color-ruby-red-0, #fff5f6);\n}\n\n.homepad-toaster .homepad-toast__icon-badge--warning {\n background: #f2a8001a;\n}\n\n.homepad-toaster .homepad-toast__icon-badge--info,\n.homepad-toaster .homepad-toast__icon-badge--default {\n background: #0f52c71a;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] [data-close-button] {\n top: 50%;\n right: 12px;\n left: auto;\n width: 20px;\n height: 20px;\n transform: translateY(-50%);\n border: 0;\n background: transparent;\n box-shadow: none;\n cursor: pointer;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true']:hover [data-close-button]:hover {\n background: transparent;\n border-color: transparent;\n cursor: pointer;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] [data-close-button] svg {\n width: 20px;\n height: 20px;\n}\n\n@media (max-width: 767px) {\n .homepad-toaster {\n --width: calc(100vw - 16px);\n }\n\n .homepad-toaster[data-sonner-toaster] {\n right: var(--mobile-offset-right, 8px);\n left: var(--mobile-offset-left, 8px);\n width: calc(100vw - 16px);\n max-width: calc(100vw - 16px);\n }\n\n .homepad-toaster [data-sonner-toast][data-styled='true'] {\n right: 0;\n left: 0;\n width: 100%;\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/web/components/table-scroll.css","../../src/web/components/drawer-scroll.css","../../src/web/components/sonner-toast.css"],"sourcesContent":[".table-scroll-area {\n scrollbar-color: var(--color-storm-gray-50, #eceef0) transparent;\n scrollbar-width: thin;\n}\n\n.table-scroll-area::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.table-scroll-area::-webkit-scrollbar-button,\n.table-scroll-area::-webkit-scrollbar-button:single-button,\n.table-scroll-area::-webkit-scrollbar-button:double-button,\n.table-scroll-area::-webkit-scrollbar-button:horizontal:decrement,\n.table-scroll-area::-webkit-scrollbar-button:horizontal:increment,\n.table-scroll-area::-webkit-scrollbar-button:horizontal:start:decrement,\n.table-scroll-area::-webkit-scrollbar-button:horizontal:end:increment,\n.table-scroll-area::-webkit-scrollbar-button:vertical:decrement,\n.table-scroll-area::-webkit-scrollbar-button:vertical:increment,\n.table-scroll-area::-webkit-scrollbar-button:vertical:start:decrement,\n.table-scroll-area::-webkit-scrollbar-button:vertical:end:increment,\n.table-scroll-area::-webkit-scrollbar-button:start:decrement,\n.table-scroll-area::-webkit-scrollbar-button:end:increment,\n.table-scroll-area::-webkit-scrollbar-button:decrement,\n.table-scroll-area::-webkit-scrollbar-button:increment {\n display: none;\n width: 0;\n height: 0;\n max-width: 0;\n max-height: 0;\n min-width: 0;\n min-height: 0;\n padding: 0;\n margin: 0;\n border: 0;\n background: transparent;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.table-scroll-area::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.table-scroll-area::-webkit-scrollbar-thumb {\n background-color: var(--color-storm-gray-50, #eceef0);\n border-radius: 51px;\n}\n\n.table-scroll-area::-webkit-scrollbar-corner {\n background: transparent;\n}\n",".drawer-scroll-area {\n scrollbar-color: var(--color-storm-gray-200, #d5d9dd) transparent;\n /* Chrome 121+ ignores ::-webkit-scrollbar width when scrollbar-width is set. */\n scrollbar-width: unset;\n}\n\n/* Firefox has no ::-webkit-scrollbar; thin is the slimmest standard option. */\n@supports not selector(::-webkit-scrollbar) {\n .drawer-scroll-area {\n scrollbar-width: thin;\n }\n}\n\n.drawer-scroll-area::-webkit-scrollbar {\n width: 3px;\n height: 3px;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.drawer-scroll-area::-webkit-scrollbar-button,\n.drawer-scroll-area::-webkit-scrollbar-button:single-button,\n.drawer-scroll-area::-webkit-scrollbar-button:double-button,\n.drawer-scroll-area::-webkit-scrollbar-button:vertical:decrement,\n.drawer-scroll-area::-webkit-scrollbar-button:vertical:increment,\n.drawer-scroll-area::-webkit-scrollbar-button:vertical:start:decrement,\n.drawer-scroll-area::-webkit-scrollbar-button:vertical:end:increment,\n.drawer-scroll-area::-webkit-scrollbar-button:start:decrement,\n.drawer-scroll-area::-webkit-scrollbar-button:end:increment,\n.drawer-scroll-area::-webkit-scrollbar-button:decrement,\n.drawer-scroll-area::-webkit-scrollbar-button:increment {\n display: none;\n width: 0;\n height: 0;\n}\n\n.drawer-scroll-area::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.drawer-scroll-area::-webkit-scrollbar-thumb {\n background-color: var(--color-storm-gray-200, #d5d9dd);\n border-radius: 9999px;\n}\n",".homepad-toaster {\n --width: 409px;\n --gap: 12px;\n --border-radius: 20px;\n font-family: var(--font-sans, 'Noto Sans Armenian', ui-sans-serif, system-ui, sans-serif);\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] {\n align-items: center;\n gap: 16px;\n width: 409px;\n min-height: 72px;\n height: auto;\n padding: 12px 44px 12px 12px;\n background: #fff;\n border: 1px solid var(--color-storm-gray-50, #eceef0);\n border-radius: 20px;\n box-shadow: 0 1px 4px 0 #00000014;\n color: var(--color-slate-blue, #182e3c);\n overflow: visible;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'][data-front='true'] {\n height: auto !important;\n}\n\n.homepad-toaster\n [data-sonner-toast][data-styled='true'][data-mounted='true'][data-expanded='true'] {\n height: auto !important;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] [data-icon] {\n width: auto;\n height: auto;\n margin: 0;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] [data-content] {\n gap: 2px;\n min-width: 0;\n flex: 1;\n align-self: center;\n overflow: visible;\n}\n\n.homepad-toaster .homepad-toast__title {\n font-family: var(--font-sans, 'Noto Sans Armenian', ui-sans-serif, system-ui, sans-serif);\n font-size: 14px;\n font-weight: 700;\n line-height: 19px;\n letter-spacing: 0;\n color: var(--color-slate-blue, #182e3c);\n}\n\n.homepad-toaster .homepad-toast__description {\n font-family: var(--font-sans, 'Noto Sans Armenian', ui-sans-serif, system-ui, sans-serif);\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n letter-spacing: 0;\n color: var(--color-slate-blue, #182e3c);\n}\n\n.homepad-toaster .homepad-toast__icon-badge {\n display: flex;\n width: 48px;\n height: 48px;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n padding: 12px;\n border-radius: 12px;\n box-sizing: border-box;\n}\n\n.homepad-toaster .homepad-toast__icon-badge svg {\n width: 24px;\n height: 24px;\n margin: 0;\n flex-shrink: 0;\n}\n\n.homepad-toaster .homepad-toast__icon-badge--success {\n background: var(--color-emerald-green-0, #f0fbf5);\n}\n\n.homepad-toaster .homepad-toast__icon-badge--error {\n background: var(--color-ruby-red-0, #fff5f6);\n}\n\n.homepad-toaster .homepad-toast__icon-badge--warning {\n background: #f2a8001a;\n}\n\n.homepad-toaster .homepad-toast__icon-badge--info,\n.homepad-toaster .homepad-toast__icon-badge--default {\n background: #0f52c71a;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] [data-close-button] {\n top: 50%;\n right: 12px;\n left: auto;\n width: 20px;\n height: 20px;\n transform: translateY(-50%);\n border: 0;\n background: transparent;\n box-shadow: none;\n cursor: pointer;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true']:hover [data-close-button]:hover {\n background: transparent;\n border-color: transparent;\n cursor: pointer;\n}\n\n.homepad-toaster [data-sonner-toast][data-styled='true'] [data-close-button] svg {\n width: 20px;\n height: 20px;\n}\n\n@media (max-width: 767px) {\n .homepad-toaster {\n --width: calc(100vw - 16px);\n }\n\n .homepad-toaster[data-sonner-toaster] {\n right: var(--mobile-offset-right, 8px);\n left: var(--mobile-offset-left, 8px);\n width: calc(100vw - 16px);\n max-width: calc(100vw - 16px);\n }\n\n .homepad-toaster [data-sonner-toast][data-styled='true'] {\n right: 0;\n left: 0;\n width: 100%;\n }\n}\n"],"mappings":"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","names":[]}
@@ -364,8 +364,6 @@ type TableRowProps = HTMLAttributes<HTMLTableRowElement> & {
364
364
  declare function TableRow({ className, disabled, ...props }: TableRowProps): react.JSX.Element;
365
365
  type TableHeadProps = ThHTMLAttributes<HTMLTableCellElement> & {
366
366
  align?: keyof typeof tableAlignClasses;
367
- /** Pins the column to the right edge during horizontal scroll (e.g. actions menu). */
368
- stickyRight?: boolean;
369
367
  /** Enables sort UI and click handler for this column header. */
370
368
  sortable?: boolean;
371
369
  /** Active sort direction for this column. Omit or `null` when unsorted. */
@@ -374,7 +372,7 @@ type TableHeadProps = ThHTMLAttributes<HTMLTableCellElement> & {
374
372
  onSort?: () => void;
375
373
  children?: ReactNode;
376
374
  };
377
- declare function TableHead({ className, align, stickyRight, sortable, sortDirection, onSort, children, ...props }: TableHeadProps): react.JSX.Element;
375
+ declare function TableHead({ className, align, sortable, sortDirection, onSort, children, ...props }: TableHeadProps): react.JSX.Element;
378
376
 
379
377
  type TableCellProps = TdHTMLAttributes<HTMLTableCellElement> & {
380
378
  variant?: TableCellVariant;
@@ -364,8 +364,6 @@ type TableRowProps = HTMLAttributes<HTMLTableRowElement> & {
364
364
  declare function TableRow({ className, disabled, ...props }: TableRowProps): react.JSX.Element;
365
365
  type TableHeadProps = ThHTMLAttributes<HTMLTableCellElement> & {
366
366
  align?: keyof typeof tableAlignClasses;
367
- /** Pins the column to the right edge during horizontal scroll (e.g. actions menu). */
368
- stickyRight?: boolean;
369
367
  /** Enables sort UI and click handler for this column header. */
370
368
  sortable?: boolean;
371
369
  /** Active sort direction for this column. Omit or `null` when unsorted. */
@@ -374,7 +372,7 @@ type TableHeadProps = ThHTMLAttributes<HTMLTableCellElement> & {
374
372
  onSort?: () => void;
375
373
  children?: ReactNode;
376
374
  };
377
- declare function TableHead({ className, align, stickyRight, sortable, sortDirection, onSort, children, ...props }: TableHeadProps): react.JSX.Element;
375
+ declare function TableHead({ className, align, sortable, sortDirection, onSort, children, ...props }: TableHeadProps): react.JSX.Element;
378
376
 
379
377
  type TableCellProps = TdHTMLAttributes<HTMLTableCellElement> & {
380
378
  variant?: TableCellVariant;
package/dist/web/index.js CHANGED
@@ -1,9 +1,9 @@
1
- import { __commonJS, __require, __toESM, Input, Button } from '../chunk-JNVYKEYT.js';
1
+ import { __commonJS, __require, __toESM, Input, Button } from '../chunk-N73KHOZ4.js';
2
2
  import { ChevronsUpDown, Search, LogOut, PanelLeftClose, PanelLeftOpen, X, Menu, ChevronLeft, ChevronRight } from 'lucide-react';
3
3
  import { clsx } from 'clsx';
4
4
  import { twMerge } from 'tailwind-merge';
5
5
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
6
- import { createContext, forwardRef, useRef, useEffect, useState, useId, useCallback, useMemo, useContext, useLayoutEffect } from 'react';
6
+ import { createContext, forwardRef, useRef, useEffect, useState, useId, useCallback, useMemo, useLayoutEffect, useContext } from 'react';
7
7
  import { Toaster as Toaster$1, toast } from 'sonner';
8
8
  export { toast } from 'sonner';
9
9
  import 'sonner/dist/styles.css';
@@ -7370,7 +7370,7 @@ var require_react_dom_development = __commonJS({
7370
7370
  var HostPortal = 4;
7371
7371
  var HostComponent = 5;
7372
7372
  var HostText = 6;
7373
- var Fragment4 = 7;
7373
+ var Fragment3 = 7;
7374
7374
  var Mode = 8;
7375
7375
  var ContextConsumer = 9;
7376
7376
  var ContextProvider = 10;
@@ -8525,7 +8525,7 @@ var require_react_dom_development = __commonJS({
8525
8525
  return "DehydratedFragment";
8526
8526
  case ForwardRef:
8527
8527
  return getWrappedName$1(type, type.render, "ForwardRef");
8528
- case Fragment4:
8528
+ case Fragment3:
8529
8529
  return "Fragment";
8530
8530
  case HostComponent:
8531
8531
  return type;
@@ -16950,7 +16950,7 @@ var require_react_dom_development = __commonJS({
16950
16950
  }
16951
16951
  }
16952
16952
  function updateFragment2(returnFiber, current2, fragment, lanes, key) {
16953
- if (current2 === null || current2.tag !== Fragment4) {
16953
+ if (current2 === null || current2.tag !== Fragment3) {
16954
16954
  var created = createFiberFromFragment(fragment, returnFiber.mode, lanes, key);
16955
16955
  created.return = returnFiber;
16956
16956
  return created;
@@ -17353,7 +17353,7 @@ var require_react_dom_development = __commonJS({
17353
17353
  if (child.key === key) {
17354
17354
  var elementType = element.type;
17355
17355
  if (elementType === REACT_FRAGMENT_TYPE) {
17356
- if (child.tag === Fragment4) {
17356
+ if (child.tag === Fragment3) {
17357
17357
  deleteRemainingChildren(returnFiber, child.sibling);
17358
17358
  var existing = useFiber(child, element.props.children);
17359
17359
  existing.return = returnFiber;
@@ -22827,7 +22827,7 @@ var require_react_dom_development = __commonJS({
22827
22827
  var _resolvedProps2 = workInProgress2.elementType === type ? _unresolvedProps2 : resolveDefaultProps(type, _unresolvedProps2);
22828
22828
  return updateForwardRef(current2, workInProgress2, type, _resolvedProps2, renderLanes2);
22829
22829
  }
22830
- case Fragment4:
22830
+ case Fragment3:
22831
22831
  return updateFragment(current2, workInProgress2, renderLanes2);
22832
22832
  case Mode:
22833
22833
  return updateMode(current2, workInProgress2, renderLanes2);
@@ -23099,7 +23099,7 @@ var require_react_dom_development = __commonJS({
23099
23099
  case SimpleMemoComponent:
23100
23100
  case FunctionComponent:
23101
23101
  case ForwardRef:
23102
- case Fragment4:
23102
+ case Fragment3:
23103
23103
  case Mode:
23104
23104
  case Profiler:
23105
23105
  case ContextConsumer:
@@ -27351,7 +27351,7 @@ var require_react_dom_development = __commonJS({
27351
27351
  return fiber;
27352
27352
  }
27353
27353
  function createFiberFromFragment(elements, mode, lanes, key) {
27354
- var fiber = createFiber(Fragment4, elements, key, mode);
27354
+ var fiber = createFiber(Fragment3, elements, key, mode);
27355
27355
  fiber.lanes = lanes;
27356
27356
  return fiber;
27357
27357
  }
@@ -28599,6 +28599,24 @@ function useOnClickOutside(ref, handler, enabled = true) {
28599
28599
  };
28600
28600
  }, [enabled]);
28601
28601
  }
28602
+ function useTruncatedTitle(text) {
28603
+ const ref = useRef(null);
28604
+ const [isTruncated, setIsTruncated] = useState(false);
28605
+ useLayoutEffect(() => {
28606
+ const element = ref.current;
28607
+ if (!element) {
28608
+ return;
28609
+ }
28610
+ const update = () => {
28611
+ setIsTruncated(element.scrollWidth > element.clientWidth + 1);
28612
+ };
28613
+ update();
28614
+ const observer = new ResizeObserver(update);
28615
+ observer.observe(element);
28616
+ return () => observer.disconnect();
28617
+ }, [text]);
28618
+ return { ref, title: isTruncated ? text : void 0 };
28619
+ }
28602
28620
  function BuildingSelect({
28603
28621
  options,
28604
28622
  value,
@@ -28617,6 +28635,7 @@ function BuildingSelect({
28617
28635
  const selectedOption = options.find((option) => option.value === value);
28618
28636
  const displayLabel = selectedOption?.label ?? labels.selectBuilding;
28619
28637
  const selectableOptions = options.filter((option) => !option.disabled);
28638
+ const { ref: labelRef, title: truncatedTitle } = useTruncatedTitle(displayLabel);
28620
28639
  const closeMenu = useCallback(() => {
28621
28640
  setOpen(false);
28622
28641
  setHighlightedIndex(-1);
@@ -28687,7 +28706,7 @@ function BuildingSelect({
28687
28706
  break;
28688
28707
  }
28689
28708
  };
28690
- return /* @__PURE__ */ jsxs("div", { ref: rootRef, className: cn("relative w-57.5", className), children: [
28709
+ return /* @__PURE__ */ jsxs("div", { ref: rootRef, className: cn("relative w-72", className), children: [
28691
28710
  /* @__PURE__ */ jsxs(
28692
28711
  "button",
28693
28712
  {
@@ -28697,17 +28716,25 @@ function BuildingSelect({
28697
28716
  "aria-expanded": open,
28698
28717
  "aria-controls": listboxId,
28699
28718
  "aria-label": labels.selectBuilding,
28719
+ title: truncatedTitle,
28700
28720
  onClick: () => open ? closeMenu() : openMenu(),
28701
28721
  onKeyDown: handleTriggerKeyDown,
28702
28722
  className: cn(
28703
- "flex h-11 w-full items-center gap-3 rounded-xl border border-storm-gray-50 bg-white p-3 text-left transition-colors",
28723
+ "flex h-11 w-full items-center gap-3 rounded-xl border border-storm-gray-50 bg-white px-3.5 py-3 text-left transition-colors",
28704
28724
  !disabled && "cursor-pointer hover:bg-storm-gray-50/60",
28705
28725
  open && "bg-storm-gray-50/60",
28706
28726
  disabled && "cursor-not-allowed opacity-60"
28707
28727
  ),
28708
28728
  children: [
28709
- buildingIcon ?? /* @__PURE__ */ jsx(BuildingIcon, { className: "shrink-0 text-navy" }),
28710
- /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate typography-14 font-medium text-slate-blue", children: displayLabel }),
28729
+ buildingIcon ?? /* @__PURE__ */ jsx(BuildingIcon, { className: "size-5 shrink-0 text-navy" }),
28730
+ /* @__PURE__ */ jsx(
28731
+ "span",
28732
+ {
28733
+ ref: labelRef,
28734
+ className: "min-w-0 flex-1 truncate typography-14 font-medium text-slate-blue",
28735
+ children: displayLabel
28736
+ }
28737
+ ),
28711
28738
  chevronIcon ?? /* @__PURE__ */ jsx(
28712
28739
  ChevronsUpDown,
28713
28740
  {
@@ -28760,7 +28787,7 @@ function BuildingSelect({
28760
28787
  (isSelected || isHighlighted) && !option.disabled && "bg-storm-gray-50",
28761
28788
  option.disabled && "cursor-not-allowed opacity-50"
28762
28789
  ),
28763
- children: /* @__PURE__ */ jsx("span", { className: "truncate", children: option.label })
28790
+ children: /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", title: option.label, children: option.label })
28764
28791
  }
28765
28792
  ) }, option.value);
28766
28793
  })
@@ -28905,9 +28932,9 @@ function SidebarNavItem({ item, isOpen, isActive, onNavigate }) {
28905
28932
  tabIndex: item.disabled ? -1 : void 0,
28906
28933
  className: cn(
28907
28934
  "relative flex items-center rounded-xl px-4 py-3 transition-[background-color,color,gap,padding] duration-300 ease-in-out",
28908
- isOpen ? "w-full gap-4" : "justify-center gap-0 px-3",
28935
+ isOpen ? "w-full gap-4" : "w-full justify-center gap-0 px-3",
28909
28936
  item.disabled && "pointer-events-none opacity-50",
28910
- isActive ? "bg-black/12 text-white" : "text-navy-100 hover:bg-white/5"
28937
+ isActive ? "bg-black/12 text-white shadow-none" : "text-navy-100 shadow-none hover:bg-white/5"
28911
28938
  ),
28912
28939
  children: [
28913
28940
  /* @__PURE__ */ jsx(
@@ -28942,6 +28969,7 @@ function getInitials(fullName, email) {
28942
28969
  }
28943
28970
  return email.slice(0, 2).toUpperCase();
28944
28971
  }
28972
+ var avatarCircleClassName = "flex size-11 shrink-0 items-center justify-center rounded-full bg-white/5";
28945
28973
  function SidebarUserCard({
28946
28974
  user,
28947
28975
  isOpen,
@@ -28950,39 +28978,110 @@ function SidebarUserCard({
28950
28978
  className
28951
28979
  }) {
28952
28980
  const initials = user.initials ?? getInitials(user.fullName, user.email);
28981
+ const [logoutOpen, setLogoutOpen] = useState(false);
28982
+ const rootRef = useRef(null);
28983
+ const logoutMenuId = useId();
28984
+ useEffect(() => {
28985
+ if (isOpen) {
28986
+ setLogoutOpen(false);
28987
+ }
28988
+ }, [isOpen]);
28989
+ useEffect(() => {
28990
+ if (isOpen || !logoutOpen) {
28991
+ return;
28992
+ }
28993
+ function handlePointerDown(event) {
28994
+ if (rootRef.current && !rootRef.current.contains(event.target)) {
28995
+ setLogoutOpen(false);
28996
+ }
28997
+ }
28998
+ function handleKeyDown(event) {
28999
+ if (event.key === "Escape") {
29000
+ setLogoutOpen(false);
29001
+ }
29002
+ }
29003
+ document.addEventListener("mousedown", handlePointerDown);
29004
+ document.addEventListener("keydown", handleKeyDown);
29005
+ return () => {
29006
+ document.removeEventListener("mousedown", handlePointerDown);
29007
+ document.removeEventListener("keydown", handleKeyDown);
29008
+ };
29009
+ }, [isOpen, logoutOpen]);
29010
+ const avatar = /* @__PURE__ */ jsx(
29011
+ "div",
29012
+ {
29013
+ className: cn(avatarCircleClassName, "typography-14 font-bold text-white"),
29014
+ "aria-hidden": true,
29015
+ children: initials
29016
+ }
29017
+ );
29018
+ if (!isOpen) {
29019
+ return /* @__PURE__ */ jsxs(
29020
+ "div",
29021
+ {
29022
+ ref: rootRef,
29023
+ className: cn("flex w-full flex-col items-center gap-2", className),
29024
+ children: [
29025
+ logoutOpen ? /* @__PURE__ */ jsx(
29026
+ "button",
29027
+ {
29028
+ type: "button",
29029
+ id: logoutMenuId,
29030
+ onClick: () => {
29031
+ setLogoutOpen(false);
29032
+ onLogout?.();
29033
+ },
29034
+ className: cn(
29035
+ avatarCircleClassName,
29036
+ "cursor-pointer bg-black/20 text-white",
29037
+ "transition-[background-color,transform] duration-300 ease-in-out",
29038
+ "hover:bg-white/10 active:scale-95"
29039
+ ),
29040
+ "aria-label": logoutLabel,
29041
+ children: /* @__PURE__ */ jsx(LogOut, { size: 20, strokeWidth: 1.75 })
29042
+ }
29043
+ ) : null,
29044
+ /* @__PURE__ */ jsx(
29045
+ "button",
29046
+ {
29047
+ type: "button",
29048
+ onClick: () => setLogoutOpen((open) => !open),
29049
+ className: "flex cursor-pointer items-center justify-center transition-transform duration-300 ease-in-out active:scale-95",
29050
+ "aria-expanded": logoutOpen,
29051
+ "aria-haspopup": "true",
29052
+ "aria-controls": logoutOpen ? logoutMenuId : void 0,
29053
+ "aria-label": user.fullName,
29054
+ children: avatar
29055
+ }
29056
+ )
29057
+ ]
29058
+ }
29059
+ );
29060
+ }
28953
29061
  return /* @__PURE__ */ jsxs(
28954
29062
  "div",
28955
29063
  {
28956
29064
  className: cn(
28957
- "flex w-full items-center rounded-xl transition-[background-color,justify-content,gap,padding] duration-300 ease-in-out",
28958
- isOpen ? "justify-between gap-3 bg-black/12 p-3" : "justify-center px-3 py-3",
29065
+ "flex w-full items-center justify-between gap-3 rounded-xl bg-black/12 p-3",
29066
+ "transition-[background-color,justify-content,gap,padding] duration-300 ease-in-out",
28959
29067
  className
28960
29068
  ),
28961
29069
  children: [
29070
+ avatar,
29071
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col overflow-hidden", children: [
29072
+ /* @__PURE__ */ jsx("p", { className: "truncate typography-14 font-bold text-white", children: user.fullName }),
29073
+ /* @__PURE__ */ jsx("p", { className: "truncate typography-12 text-storm-gray-100", children: user.email })
29074
+ ] }),
28962
29075
  /* @__PURE__ */ jsx(
28963
- "div",
29076
+ "button",
28964
29077
  {
28965
- className: "flex size-11 shrink-0 items-center justify-center rounded-full bg-white/5 typography-14 font-bold text-white",
28966
- "aria-hidden": true,
28967
- children: initials
29078
+ type: "button",
29079
+ onClick: () => onLogout?.(),
29080
+ className: "shrink-0 cursor-pointer text-navy-150 transition-[opacity,transform] duration-300 ease-in-out hover:opacity-80 active:scale-95",
29081
+ "aria-label": logoutLabel,
29082
+ children: /* @__PURE__ */ jsx(LogOut, { size: 20, strokeWidth: 1.75 })
28968
29083
  }
28969
- ),
28970
- isOpen ? /* @__PURE__ */ jsxs(Fragment, { children: [
28971
- /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col overflow-hidden", children: [
28972
- /* @__PURE__ */ jsx("p", { className: "truncate typography-14 font-bold text-white", children: user.fullName }),
28973
- /* @__PURE__ */ jsx("p", { className: "truncate typography-12 text-storm-gray-100", children: user.email })
28974
- ] }),
28975
- /* @__PURE__ */ jsx(
28976
- "button",
28977
- {
28978
- type: "button",
28979
- onClick: () => onLogout?.(),
28980
- className: "shrink-0 cursor-pointer text-navy-150 transition-[opacity,transform] duration-300 ease-in-out hover:opacity-80 active:scale-95",
28981
- "aria-label": logoutLabel,
28982
- children: /* @__PURE__ */ jsx(LogOut, { size: 20, strokeWidth: 1.75 })
28983
- }
28984
- )
28985
- ] }) : null
29084
+ )
28986
29085
  ]
28987
29086
  }
28988
29087
  );
@@ -29140,18 +29239,8 @@ function Sidebar({
29140
29239
  ]
29141
29240
  }
29142
29241
  ),
29143
- /* @__PURE__ */ jsx("nav", { className: "flex flex-1 flex-col gap-2 overflow-y-auto overflow-x-hidden", children: visibleNavItems.map((item) => /* @__PURE__ */ jsx(
29144
- SidebarNavItem,
29145
- {
29146
- item,
29147
- isOpen: isExpanded,
29148
- isActive: isNavItemActive(pathname, item),
29149
- onNavigate: handleNavItemNavigate
29150
- },
29151
- item.to
29152
- )) }),
29153
- /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-col gap-4", children: [
29154
- visibleFooterNavItems.map((item) => /* @__PURE__ */ jsx(
29242
+ /* @__PURE__ */ jsxs("nav", { className: "flex w-full min-h-0 flex-1 flex-col gap-2 overflow-x-hidden overflow-y-auto", children: [
29243
+ visibleNavItems.map((item) => /* @__PURE__ */ jsx(
29155
29244
  SidebarNavItem,
29156
29245
  {
29157
29246
  item,
@@ -29161,15 +29250,27 @@ function Sidebar({
29161
29250
  },
29162
29251
  item.to
29163
29252
  )),
29164
- user ? /* @__PURE__ */ jsx(
29165
- SidebarUserCard,
29166
- {
29167
- user,
29168
- isOpen: isExpanded,
29169
- logoutLabel: labels.logout,
29170
- onLogout
29171
- }
29172
- ) : null
29253
+ /* @__PURE__ */ jsxs("div", { className: "mt-auto flex w-full flex-col gap-2", children: [
29254
+ visibleFooterNavItems.map((item) => /* @__PURE__ */ jsx(
29255
+ SidebarNavItem,
29256
+ {
29257
+ item,
29258
+ isOpen: isExpanded,
29259
+ isActive: isNavItemActive(pathname, item),
29260
+ onNavigate: handleNavItemNavigate
29261
+ },
29262
+ item.to
29263
+ )),
29264
+ user ? /* @__PURE__ */ jsx(
29265
+ SidebarUserCard,
29266
+ {
29267
+ user,
29268
+ isOpen: isExpanded,
29269
+ logoutLabel: labels.logout,
29270
+ onLogout
29271
+ }
29272
+ ) : null
29273
+ ] })
29173
29274
  ] })
29174
29275
  ]
29175
29276
  }
@@ -29652,10 +29753,6 @@ function Pagination({
29652
29753
 
29653
29754
  // src/web/components/table/constants.ts
29654
29755
  var tableBorderClassName = "border-storm-gray-50";
29655
- var tableStickyRightShadowClassName = "table-sticky-right-shadow";
29656
- var tableStickyRightHeadClassName = "table-sticky-right-head";
29657
- var tableScrollAtEndClassName = "table-scroll-at-end";
29658
- var tableScrollHasOverflowClassName = "table-scroll-has-overflow";
29659
29756
  var tableRowDisabledCellClassName = "bg-[#ECEEF0]/30 [&>*]:opacity-70";
29660
29757
  var DEFAULT_TABLE_BODY_MIN_HEIGHT = 320;
29661
29758
  var tableCellPaddingClassName = "px-3 py-3";
@@ -29754,7 +29851,6 @@ function resolveAriaSort(sortDirection, isSortable) {
29754
29851
  function TableHead({
29755
29852
  className,
29756
29853
  align = "left",
29757
- stickyRight = false,
29758
29854
  sortable = false,
29759
29855
  sortDirection = null,
29760
29856
  onSort,
@@ -29784,11 +29880,6 @@ function TableHead({
29784
29880
  "sticky top-0 z-10",
29785
29881
  tableHeadPaddingClassName,
29786
29882
  tableHeaderClassName,
29787
- stickyRight && [
29788
- "sticky right-0 z-20",
29789
- tableStickyRightHeadClassName,
29790
- tableStickyRightShadowClassName
29791
- ],
29792
29883
  !isSortable && tableAlignClasses[align],
29793
29884
  className
29794
29885
  ),
@@ -29829,16 +29920,14 @@ function TableActionsCell({ className, children, ...props }) {
29829
29920
  "td",
29830
29921
  {
29831
29922
  className: cn(
29832
- "sticky right-0 z-10 whitespace-nowrap bg-white",
29923
+ "whitespace-nowrap",
29833
29924
  tableCellPaddingClassName,
29834
29925
  tableBodyClassName,
29835
- tableStickyRightShadowClassName,
29836
- // Keep an opaque sticky background so scrolled cells never bleed through.
29837
- disabled && "bg-white [&>*]:opacity-70",
29926
+ disabled && tableRowDisabledCellClassName,
29838
29927
  className
29839
29928
  ),
29840
29929
  ...props,
29841
- children: /* @__PURE__ */ jsx("div", { className: "relative z-[1] flex items-center justify-end gap-2", children })
29930
+ children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-end gap-2", children })
29842
29931
  }
29843
29932
  );
29844
29933
  }
@@ -30075,57 +30164,6 @@ function TableStatusActionsCell({
30075
30164
  }
30076
30165
  );
30077
30166
  }
30078
- var useIsomorphicLayoutEffect2 = typeof window === "undefined" ? useEffect : useLayoutEffect;
30079
- function getHorizontalScrollState(element) {
30080
- const inner = element.firstElementChild;
30081
- const table = inner?.querySelector("table");
30082
- const contentWidth = table?.scrollWidth ?? inner?.scrollWidth ?? element.scrollWidth;
30083
- const viewportWidth = element.clientWidth;
30084
- const maxScrollLeft = element.scrollWidth - element.clientWidth;
30085
- const hasOverflow = contentWidth > viewportWidth + 1;
30086
- const atEnd = !hasOverflow || element.scrollLeft >= maxScrollLeft - 1;
30087
- return { hasOverflow, atEnd };
30088
- }
30089
- function useHorizontalScrollState() {
30090
- const scrollRef = useRef(null);
30091
- const [scrollState, setScrollState] = useState({
30092
- hasOverflow: false,
30093
- atEnd: true
30094
- });
30095
- const updateScrollState = useCallback(() => {
30096
- const element = scrollRef.current;
30097
- if (!element) {
30098
- return;
30099
- }
30100
- setScrollState(getHorizontalScrollState(element));
30101
- }, []);
30102
- useIsomorphicLayoutEffect2(() => {
30103
- const element = scrollRef.current;
30104
- if (!element) {
30105
- return;
30106
- }
30107
- updateScrollState();
30108
- element.addEventListener("scroll", updateScrollState, { passive: true });
30109
- if (typeof ResizeObserver === "undefined") {
30110
- window.addEventListener("resize", updateScrollState);
30111
- return () => {
30112
- element.removeEventListener("scroll", updateScrollState);
30113
- window.removeEventListener("resize", updateScrollState);
30114
- };
30115
- }
30116
- const resizeObserver = new ResizeObserver(updateScrollState);
30117
- resizeObserver.observe(element);
30118
- const inner = element.firstElementChild;
30119
- if (inner) {
30120
- resizeObserver.observe(inner);
30121
- }
30122
- return () => {
30123
- element.removeEventListener("scroll", updateScrollState);
30124
- resizeObserver.disconnect();
30125
- };
30126
- }, [updateScrollState]);
30127
- return { scrollRef, scrollState };
30128
- }
30129
30167
  function TableScrollArea({
30130
30168
  children,
30131
30169
  minWidth = 980,
@@ -30134,15 +30172,11 @@ function TableScrollArea({
30134
30172
  height,
30135
30173
  fillHeight = false
30136
30174
  }) {
30137
- const { scrollRef, scrollState } = useHorizontalScrollState();
30138
30175
  return /* @__PURE__ */ jsx(
30139
30176
  "div",
30140
30177
  {
30141
- ref: scrollRef,
30142
30178
  className: cn(
30143
30179
  "table-scroll-area w-full overflow-auto",
30144
- scrollState.hasOverflow && tableScrollHasOverflowClassName,
30145
- scrollState.atEnd && tableScrollAtEndClassName,
30146
30180
  fillHeight && "min-h-0 flex-1",
30147
30181
  className
30148
30182
  ),
@@ -30383,7 +30417,7 @@ function Modal({
30383
30417
  ) : null
30384
30418
  ] })
30385
30419
  ] }),
30386
- /* @__PURE__ */ jsx("div", { className: cn("min-h-0 min-w-0 flex-1 overflow-y-auto", contentClassName), children }),
30420
+ /* @__PURE__ */ jsx("div", { className: cn("drawer-scroll-area min-h-0 min-w-0 flex-1 overflow-y-auto", contentClassName), children }),
30387
30421
  /* @__PURE__ */ jsxs(
30388
30422
  "footer",
30389
30423
  {