baaz-custom-components 5.0.32 → 5.1.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.css CHANGED
@@ -47,6 +47,7 @@
47
47
  --tracking-widest: 0.1em;
48
48
  --radius-xs: 0.125rem;
49
49
  --radius-2xl: 1rem;
50
+ --ease-out: cubic-bezier(0, 0, 0.2, 1);
50
51
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
51
52
  --animate-spin: spin 1s linear infinite;
52
53
  --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
@@ -247,6 +248,9 @@
247
248
  }
248
249
  }
249
250
  @layer utilities {
251
+ .pointer-events-auto {
252
+ pointer-events: auto;
253
+ }
250
254
  .pointer-events-none {
251
255
  pointer-events: none;
252
256
  }
@@ -342,6 +346,9 @@
342
346
  .z-20 {
343
347
  z-index: 20;
344
348
  }
349
+ .z-30 {
350
+ z-index: 30;
351
+ }
345
352
  .z-40 {
346
353
  z-index: 40;
347
354
  }
@@ -481,6 +488,9 @@
481
488
  width: 100%;
482
489
  height: 100%;
483
490
  }
491
+ .h-1 {
492
+ height: calc(var(--spacing) * 1);
493
+ }
484
494
  .h-1\.5 {
485
495
  height: calc(var(--spacing) * 1.5);
486
496
  }
@@ -562,12 +572,18 @@
562
572
  .min-h-0 {
563
573
  min-height: calc(var(--spacing) * 0);
564
574
  }
575
+ .\!w-0 {
576
+ width: calc(var(--spacing) * 0) !important;
577
+ }
565
578
  .\!w-md {
566
579
  width: var(--container-md) !important;
567
580
  }
568
581
  .w-\(--sidebar-width\) {
569
582
  width: var(--sidebar-width);
570
583
  }
584
+ .w-1 {
585
+ width: calc(var(--spacing) * 1);
586
+ }
571
587
  .w-2 {
572
588
  width: calc(var(--spacing) * 2);
573
589
  }
@@ -598,6 +614,9 @@
598
614
  .w-80 {
599
615
  width: calc(var(--spacing) * 80);
600
616
  }
617
+ .w-\[18px\] {
618
+ width: 18px;
619
+ }
601
620
  .w-\[40px\] {
602
621
  width: 40px;
603
622
  }
@@ -671,10 +690,18 @@
671
690
  --tw-translate-x: calc(calc(1/2 * 100%) * -1);
672
691
  translate: var(--tw-translate-x) var(--tw-translate-y);
673
692
  }
693
+ .-translate-x-full {
694
+ --tw-translate-x: -100%;
695
+ translate: var(--tw-translate-x) var(--tw-translate-y);
696
+ }
674
697
  .-translate-x-px {
675
698
  --tw-translate-x: -1px;
676
699
  translate: var(--tw-translate-x) var(--tw-translate-y);
677
700
  }
701
+ .translate-x-0 {
702
+ --tw-translate-x: calc(var(--spacing) * 0);
703
+ translate: var(--tw-translate-x) var(--tw-translate-y);
704
+ }
678
705
  .translate-x-\[-50\%\] {
679
706
  --tw-translate-x: -50%;
680
707
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -757,6 +784,9 @@
757
784
  .gap-2 {
758
785
  gap: calc(var(--spacing) * 2);
759
786
  }
787
+ .gap-2\.5 {
788
+ gap: calc(var(--spacing) * 2.5);
789
+ }
760
790
  .gap-3 {
761
791
  gap: calc(var(--spacing) * 3);
762
792
  }
@@ -795,6 +825,9 @@
795
825
  .overflow-y-auto {
796
826
  overflow-y: auto;
797
827
  }
828
+ .rounded {
829
+ border-radius: 0.25rem;
830
+ }
798
831
  .rounded-\[2px\] {
799
832
  border-radius: 2px;
800
833
  }
@@ -851,6 +884,10 @@
851
884
  border-right-style: var(--tw-border-style);
852
885
  border-right-width: 1px;
853
886
  }
887
+ .border-r-0 {
888
+ border-right-style: var(--tw-border-style);
889
+ border-right-width: 0px;
890
+ }
854
891
  .border-b {
855
892
  border-bottom-style: var(--tw-border-style);
856
893
  border-bottom-width: 1px;
@@ -867,6 +904,10 @@
867
904
  border-left-style: var(--tw-border-style);
868
905
  border-left-width: 1px;
869
906
  }
907
+ .border-l-2 {
908
+ border-left-style: var(--tw-border-style);
909
+ border-left-width: 2px;
910
+ }
870
911
  .border-none {
871
912
  --tw-border-style: none;
872
913
  border-style: none;
@@ -883,6 +924,9 @@
883
924
  .border-sidebar-border {
884
925
  border-color: var(--sidebar-border);
885
926
  }
927
+ .border-transparent {
928
+ border-color: transparent;
929
+ }
886
930
  .border-t-transparent {
887
931
  border-top-color: transparent;
888
932
  }
@@ -937,6 +981,12 @@
937
981
  .bg-destructive {
938
982
  background-color: var(--destructive);
939
983
  }
984
+ .bg-foreground\/20 {
985
+ background-color: var(--foreground);
986
+ @supports (color: color-mix(in lab, red, red)) {
987
+ background-color: color-mix(in oklab, var(--foreground) 20%, transparent);
988
+ }
989
+ }
940
990
  .bg-input {
941
991
  background-color: var(--input);
942
992
  }
@@ -970,6 +1020,9 @@
970
1020
  .bg-sidebar-border {
971
1021
  background-color: var(--sidebar-border);
972
1022
  }
1023
+ .bg-surface-alt {
1024
+ background-color: var(--surface-alt);
1025
+ }
973
1026
  .bg-transparent {
974
1027
  background-color: transparent;
975
1028
  }
@@ -994,9 +1047,15 @@
994
1047
  .p-1 {
995
1048
  padding: calc(var(--spacing) * 1);
996
1049
  }
1050
+ .p-1\.5 {
1051
+ padding: calc(var(--spacing) * 1.5);
1052
+ }
997
1053
  .p-2 {
998
1054
  padding: calc(var(--spacing) * 2);
999
1055
  }
1056
+ .p-2\.5 {
1057
+ padding: calc(var(--spacing) * 2.5);
1058
+ }
1000
1059
  .p-4 {
1001
1060
  padding: calc(var(--spacing) * 4);
1002
1061
  }
@@ -1045,6 +1104,9 @@
1045
1104
  .py-2 {
1046
1105
  padding-block: calc(var(--spacing) * 2);
1047
1106
  }
1107
+ .py-2\.5 {
1108
+ padding-block: calc(var(--spacing) * 2.5);
1109
+ }
1048
1110
  .py-4 {
1049
1111
  padding-block: calc(var(--spacing) * 4);
1050
1112
  }
@@ -1094,6 +1156,9 @@
1094
1156
  font-size: var(--text-xs);
1095
1157
  line-height: var(--tw-leading, var(--text-xs--line-height));
1096
1158
  }
1159
+ .text-\[9px\] {
1160
+ font-size: 9px;
1161
+ }
1097
1162
  .leading-none {
1098
1163
  --tw-leading: 1;
1099
1164
  line-height: 1;
@@ -1118,6 +1183,18 @@
1118
1183
  --tw-font-weight: var(--font-weight-semibold);
1119
1184
  font-weight: var(--font-weight-semibold);
1120
1185
  }
1186
+ .tracking-\[0\.1em\] {
1187
+ --tw-tracking: 0.1em;
1188
+ letter-spacing: 0.1em;
1189
+ }
1190
+ .tracking-\[0\.14em\] {
1191
+ --tw-tracking: 0.14em;
1192
+ letter-spacing: 0.14em;
1193
+ }
1194
+ .tracking-\[0\.15em\] {
1195
+ --tw-tracking: 0.15em;
1196
+ letter-spacing: 0.15em;
1197
+ }
1121
1198
  .tracking-\[0\.25rem\] {
1122
1199
  --tw-tracking: 0.25rem;
1123
1200
  letter-spacing: 0.25rem;
@@ -1148,6 +1225,30 @@
1148
1225
  .text-foreground {
1149
1226
  color: var(--foreground);
1150
1227
  }
1228
+ .text-foreground\/25 {
1229
+ color: var(--foreground);
1230
+ @supports (color: color-mix(in lab, red, red)) {
1231
+ color: color-mix(in oklab, var(--foreground) 25%, transparent);
1232
+ }
1233
+ }
1234
+ .text-foreground\/30 {
1235
+ color: var(--foreground);
1236
+ @supports (color: color-mix(in lab, red, red)) {
1237
+ color: color-mix(in oklab, var(--foreground) 30%, transparent);
1238
+ }
1239
+ }
1240
+ .text-foreground\/50 {
1241
+ color: var(--foreground);
1242
+ @supports (color: color-mix(in lab, red, red)) {
1243
+ color: color-mix(in oklab, var(--foreground) 50%, transparent);
1244
+ }
1245
+ }
1246
+ .text-foreground\/70 {
1247
+ color: var(--foreground);
1248
+ @supports (color: color-mix(in lab, red, red)) {
1249
+ color: color-mix(in oklab, var(--foreground) 70%, transparent);
1250
+ }
1251
+ }
1151
1252
  .text-green-800 {
1152
1253
  color: var(--color-green-800);
1153
1254
  }
@@ -1184,6 +1285,9 @@
1184
1285
  .capitalize {
1185
1286
  text-transform: capitalize;
1186
1287
  }
1288
+ .uppercase {
1289
+ text-transform: uppercase;
1290
+ }
1187
1291
  .tabular-nums {
1188
1292
  --tw-numeric-spacing: tabular-nums;
1189
1293
  font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);
@@ -1195,12 +1299,18 @@
1195
1299
  -webkit-font-smoothing: antialiased;
1196
1300
  -moz-osx-font-smoothing: grayscale;
1197
1301
  }
1302
+ .opacity-0 {
1303
+ opacity: 0%;
1304
+ }
1198
1305
  .opacity-50 {
1199
1306
  opacity: 50%;
1200
1307
  }
1201
1308
  .opacity-70 {
1202
1309
  opacity: 70%;
1203
1310
  }
1311
+ .opacity-100 {
1312
+ opacity: 100%;
1313
+ }
1204
1314
  .shadow {
1205
1315
  --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
1206
1316
  box-shadow:
@@ -1219,6 +1329,15 @@
1219
1329
  var(--tw-ring-shadow),
1220
1330
  var(--tw-shadow);
1221
1331
  }
1332
+ .shadow-\[4px_0_24px_rgba\(0\,0\,0\,0\.5\)\] {
1333
+ --tw-shadow: 4px 0 24px var(--tw-shadow-color, rgba(0,0,0,0.5));
1334
+ box-shadow:
1335
+ var(--tw-inset-shadow),
1336
+ var(--tw-inset-ring-shadow),
1337
+ var(--tw-ring-offset-shadow),
1338
+ var(--tw-ring-shadow),
1339
+ var(--tw-shadow);
1340
+ }
1222
1341
  .shadow-lg {
1223
1342
  --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
1224
1343
  box-shadow:
@@ -1388,6 +1507,10 @@
1388
1507
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
1389
1508
  transition-duration: var(--tw-duration, var(--default-transition-duration));
1390
1509
  }
1510
+ .duration-100 {
1511
+ --tw-duration: 100ms;
1512
+ transition-duration: 100ms;
1513
+ }
1391
1514
  .duration-200 {
1392
1515
  --tw-duration: 200ms;
1393
1516
  transition-duration: 200ms;
@@ -1404,6 +1527,10 @@
1404
1527
  --tw-ease: linear;
1405
1528
  transition-timing-function: linear;
1406
1529
  }
1530
+ .ease-out {
1531
+ --tw-ease: var(--ease-out);
1532
+ transition-timing-function: var(--ease-out);
1533
+ }
1407
1534
  .fade-in-0 {
1408
1535
  --tw-enter-opacity: calc(0/100);
1409
1536
  --tw-enter-opacity: 0;
@@ -1425,6 +1552,16 @@
1425
1552
  opacity: 100%;
1426
1553
  }
1427
1554
  }
1555
+ .group-hover\:text-foreground\/90 {
1556
+ &:is(:where(.group):hover *) {
1557
+ @media (hover: hover) {
1558
+ color: var(--foreground);
1559
+ @supports (color: color-mix(in lab, red, red)) {
1560
+ color: color-mix(in oklab, var(--foreground) 90%, transparent);
1561
+ }
1562
+ }
1563
+ }
1564
+ }
1428
1565
  .group-hover\/menu-item\:opacity-100 {
1429
1566
  &:is(:where(.group\/menu-item):hover *) {
1430
1567
  @media (hover: hover) {
@@ -1765,6 +1902,13 @@
1765
1902
  }
1766
1903
  }
1767
1904
  }
1905
+ .hover\:border-primary {
1906
+ &:hover {
1907
+ @media (hover: hover) {
1908
+ border-color: var(--primary);
1909
+ }
1910
+ }
1911
+ }
1768
1912
  .hover\:bg-accent {
1769
1913
  &:hover {
1770
1914
  @media (hover: hover) {
@@ -1772,6 +1916,13 @@
1772
1916
  }
1773
1917
  }
1774
1918
  }
1919
+ .hover\:bg-border {
1920
+ &:hover {
1921
+ @media (hover: hover) {
1922
+ background-color: var(--border);
1923
+ }
1924
+ }
1925
+ }
1775
1926
  .hover\:bg-card-foreground {
1776
1927
  &:hover {
1777
1928
  @media (hover: hover) {
@@ -1840,6 +1991,13 @@
1840
1991
  }
1841
1992
  }
1842
1993
  }
1994
+ .hover\:bg-surface-alt {
1995
+ &:hover {
1996
+ @media (hover: hover) {
1997
+ background-color: var(--surface-alt);
1998
+ }
1999
+ }
2000
+ }
1843
2001
  .hover\:text-accent-foreground {
1844
2002
  &:hover {
1845
2003
  @media (hover: hover) {
@@ -7760,6 +7918,7 @@ i.wx-U0Bx7pIR {
7760
7918
  .main {
7761
7919
  flex: 1;
7762
7920
  overflow-y: auto;
7921
+ position: relative;
7763
7922
  height: 100%;
7764
7923
  padding: clamp(12px, 3.4vh, 32px) clamp(12px, 1.8vw, 32px);
7765
7924
  }
package/dist/index.d.mts CHANGED
@@ -1,4 +1,5 @@
1
1
  import * as react from 'react';
2
+ import { ReactNode } from 'react';
2
3
  import { IApi } from '@svar-ui/react-grid';
3
4
 
4
5
  type NavbarData = NavbarEntry[];
@@ -108,6 +109,7 @@ type GridProps = {
108
109
  onFilterChange?: (payload: MultiFilterPayload) => void;
109
110
  onApiReady?: (api: IApi) => void;
110
111
  initialFilters?: any[];
112
+ children?: React.ReactNode;
111
113
  };
112
114
  type FilterCondition = ActiveFilter & {
113
115
  id: string;
@@ -156,4 +158,22 @@ type Pagination$1 = {
156
158
 
157
159
  declare function Pagination({ totalCount, count, currentPage, totalPages, pageSize, onPageChange, onPageSizeChange, showSizeChanger, sizeChangerOptions, }: Pagination$1): react.JSX.Element;
158
160
 
159
- export { type BreadcrumbProps, CustomBreadcrumb, Grid, type GridProps, Navbar, type NavbarData, type NavbarEntry, type NavbarProps, type NotificationDataTypes, Pagination, type Pagination$1 as PaginationProps, type RouteTree, type RouterAdapter, SortableHeaderCell, type UserData };
161
+ interface ToolbarItem {
162
+ id: string;
163
+ label: string;
164
+ icon: ReactNode;
165
+ }
166
+ interface SlideToolbarProps {
167
+ items?: ToolbarItem[];
168
+ children?: ReactNode;
169
+ onAction?: (id: string) => void;
170
+ title?: string;
171
+ footerLabel?: string;
172
+ panelWidth?: number;
173
+ closeOnBackdrop?: boolean;
174
+ className?: string;
175
+ }
176
+
177
+ declare const SlideToolbar: React.FC<SlideToolbarProps>;
178
+
179
+ export { type BreadcrumbProps, CustomBreadcrumb, Grid, type GridProps, Navbar, type NavbarData, type NavbarEntry, type NavbarProps, type NotificationDataTypes, Pagination, type Pagination$1 as PaginationProps, type RouteTree, type RouterAdapter, SlideToolbar, type SlideToolbarProps, SortableHeaderCell, type ToolbarItem, type UserData };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import * as react from 'react';
2
+ import { ReactNode } from 'react';
2
3
  import { IApi } from '@svar-ui/react-grid';
3
4
 
4
5
  type NavbarData = NavbarEntry[];
@@ -108,6 +109,7 @@ type GridProps = {
108
109
  onFilterChange?: (payload: MultiFilterPayload) => void;
109
110
  onApiReady?: (api: IApi) => void;
110
111
  initialFilters?: any[];
112
+ children?: React.ReactNode;
111
113
  };
112
114
  type FilterCondition = ActiveFilter & {
113
115
  id: string;
@@ -156,4 +158,22 @@ type Pagination$1 = {
156
158
 
157
159
  declare function Pagination({ totalCount, count, currentPage, totalPages, pageSize, onPageChange, onPageSizeChange, showSizeChanger, sizeChangerOptions, }: Pagination$1): react.JSX.Element;
158
160
 
159
- export { type BreadcrumbProps, CustomBreadcrumb, Grid, type GridProps, Navbar, type NavbarData, type NavbarEntry, type NavbarProps, type NotificationDataTypes, Pagination, type Pagination$1 as PaginationProps, type RouteTree, type RouterAdapter, SortableHeaderCell, type UserData };
161
+ interface ToolbarItem {
162
+ id: string;
163
+ label: string;
164
+ icon: ReactNode;
165
+ }
166
+ interface SlideToolbarProps {
167
+ items?: ToolbarItem[];
168
+ children?: ReactNode;
169
+ onAction?: (id: string) => void;
170
+ title?: string;
171
+ footerLabel?: string;
172
+ panelWidth?: number;
173
+ closeOnBackdrop?: boolean;
174
+ className?: string;
175
+ }
176
+
177
+ declare const SlideToolbar: React.FC<SlideToolbarProps>;
178
+
179
+ export { type BreadcrumbProps, CustomBreadcrumb, Grid, type GridProps, Navbar, type NavbarData, type NavbarEntry, type NavbarProps, type NotificationDataTypes, Pagination, type Pagination$1 as PaginationProps, type RouteTree, type RouterAdapter, SlideToolbar, type SlideToolbarProps, SortableHeaderCell, type ToolbarItem, type UserData };
package/dist/index.js CHANGED
@@ -63,6 +63,7 @@ __export(index_exports, {
63
63
  Grid: () => grid_default,
64
64
  Navbar: () => Navbar,
65
65
  Pagination: () => pagination_default,
66
+ SlideToolbar: () => toolbar_default,
66
67
  SortableHeaderCell: () => sortableHeaderCell_default
67
68
  });
68
69
  module.exports = __toCommonJS(index_exports);
@@ -2360,7 +2361,8 @@ var GridHeader = ({
2360
2361
  searchkey = "",
2361
2362
  filterList,
2362
2363
  onFilterChange,
2363
- initialFilters = []
2364
+ initialFilters = [],
2365
+ children
2364
2366
  }) => {
2365
2367
  const [downloadMenu, setDownloadMenu] = (0, import_react6.useState)(false);
2366
2368
  const [searchOpen, setSearchOpen] = (0, import_react6.useState)(false);
@@ -2425,6 +2427,7 @@ var GridHeader = ({
2425
2427
  ] })
2426
2428
  ] })
2427
2429
  ] }),
2430
+ children,
2428
2431
  search && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "relative h-[40px] flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2429
2432
  "div",
2430
2433
  {
@@ -2479,7 +2482,8 @@ var Grid = (0, import_react7.forwardRef)(
2479
2482
  fileName,
2480
2483
  fonts,
2481
2484
  onFilterChange,
2482
- initialFilters
2485
+ initialFilters,
2486
+ children
2483
2487
  } = _b, rest = __objRest(_b, [
2484
2488
  "data",
2485
2489
  "columns",
@@ -2492,7 +2496,8 @@ var Grid = (0, import_react7.forwardRef)(
2492
2496
  "fileName",
2493
2497
  "fonts",
2494
2498
  "onFilterChange",
2495
- "initialFilters"
2499
+ "initialFilters",
2500
+ "children"
2496
2501
  ]);
2497
2502
  const apiRef = (0, import_react7.useRef)(null);
2498
2503
  const containerRef = (0, import_react7.useRef)(null);
@@ -2592,7 +2597,8 @@ var Grid = (0, import_react7.forwardRef)(
2592
2597
  searchValue: rest.searchValue,
2593
2598
  filterList: rest.filterList,
2594
2599
  onFilterChange,
2595
- initialFilters
2600
+ initialFilters,
2601
+ children
2596
2602
  }
2597
2603
  ),
2598
2604
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "flex-1 w-full overflow-hidden", ref: containerRef, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_grid.WillowDark, { fonts, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "w-full h-full relative", children: rest.loading ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "absolute inset-0 bg-background/60 backdrop-blur-sm flex items-center justify-center z-10", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: "animate-spin rounded-full h-8 w-8 border-2 border-primary border-t-transparent" }) }) : /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_grid.Grid, __spreadProps(__spreadValues({}, rest), { data, columns, init })) }) }) })
@@ -2749,11 +2755,130 @@ function Pagination({
2749
2755
  ] });
2750
2756
  }
2751
2757
  var pagination_default = Pagination;
2758
+
2759
+ // src/components/custom/toolbar/index.tsx
2760
+ var import_lucide_react16 = require("lucide-react");
2761
+ var import_react8 = require("react");
2762
+ var import_jsx_runtime28 = require("react/jsx-runtime");
2763
+ var SlideToolbar = ({
2764
+ items,
2765
+ children,
2766
+ onAction,
2767
+ title = "Toolbar",
2768
+ footerLabel,
2769
+ panelWidth = 210,
2770
+ closeOnBackdrop = true,
2771
+ className = ""
2772
+ }) => {
2773
+ const resolvedItems = items != null ? items : children ? void 0 : [];
2774
+ const [open, setOpen] = (0, import_react8.useState)(false);
2775
+ const panelRef = (0, import_react8.useRef)(null);
2776
+ (0, import_react8.useEffect)(() => {
2777
+ if (!open || !closeOnBackdrop) return;
2778
+ const handlePointerDown = (e) => {
2779
+ if (panelRef.current && !panelRef.current.contains(e.target)) {
2780
+ setOpen(false);
2781
+ }
2782
+ };
2783
+ document.addEventListener("pointerdown", handlePointerDown);
2784
+ return () => document.removeEventListener("pointerdown", handlePointerDown);
2785
+ }, [open, closeOnBackdrop]);
2786
+ const handleItem = (item) => {
2787
+ onAction == null ? void 0 : onAction(item.id);
2788
+ };
2789
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_jsx_runtime28.Fragment, { children: [
2790
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2791
+ "div",
2792
+ {
2793
+ role: "button",
2794
+ tabIndex: 0,
2795
+ "aria-label": `Open ${title}`,
2796
+ onClick: () => setOpen(true),
2797
+ className: [
2798
+ "absolute inset-y-0 left-0 z-20 w-[18px] flex items-center justify-center",
2799
+ "bg-card border-r border-border cursor-pointer",
2800
+ "hover:bg-surface-alt transition-all duration-200",
2801
+ open ? "opacity-0 pointer-events-none !w-0 border-r-0" : "opacity-100 pointer-events-auto"
2802
+ ].join(" "),
2803
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react16.ChevronRight, { className: "text-foreground/50", size: 50 })
2804
+ }
2805
+ ),
2806
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
2807
+ "div",
2808
+ {
2809
+ ref: panelRef,
2810
+ role: "dialog",
2811
+ "aria-label": title,
2812
+ "aria-hidden": !open,
2813
+ className: [
2814
+ "absolute inset-y-0 left-0 z-30 flex flex-col",
2815
+ "bg-card border-r border-border",
2816
+ "shadow-[4px_0_24px_rgba(0,0,0,0.5)]",
2817
+ "transition-transform duration-200 ease-out",
2818
+ open ? "translate-x-0" : "-translate-x-full",
2819
+ className
2820
+ ].join(" "),
2821
+ style: { width: `${panelWidth}px` },
2822
+ children: [
2823
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center justify-between px-3 py-2.5 bg-surface-alt border-b border-border shrink-0", children: [
2824
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-xs font-semibold tracking-[0.15em] uppercase text-foreground", children: title }),
2825
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2826
+ "button",
2827
+ {
2828
+ onClick: () => setOpen(false),
2829
+ "aria-label": "Close toolbar",
2830
+ className: "flex items-center justify-center w-5 h-5 rounded cursor-pointer\n text-foreground hover:text-foreground hover:bg-border\n transition-colors duration-100",
2831
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react16.X, { size: 14 })
2832
+ }
2833
+ )
2834
+ ] }),
2835
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "flex-1 overflow-y-auto overflow-x-hidden p-1.5 scrollbar-none", children: resolvedItems ? /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_jsx_runtime28.Fragment, { children: [
2836
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: "p-2 text-xs font-semibold tracking-[0.14em] uppercase text-foreground/30", children: "Actions" }),
2837
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("nav", { className: "flex flex-col gap-2", children: resolvedItems.map((item) => {
2838
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
2839
+ "button",
2840
+ {
2841
+ onClick: () => handleItem(item),
2842
+ className: [
2843
+ "group flex items-center gap-2.5 p-2.5 rounded w-full",
2844
+ "text-left text-sm cursor-pointer border-l-2",
2845
+ "transition-colors duration-100",
2846
+ "border-transparent text-foreground/70 hover:text-foreground hover:bg-surface-alt hover:border-primary"
2847
+ ].join(" "),
2848
+ children: [
2849
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2850
+ "span",
2851
+ {
2852
+ className: [
2853
+ "flex shrink-0 transition-colors duration-100",
2854
+ "text-foreground/70 group-hover:text-foreground/90"
2855
+ ].join(" "),
2856
+ children: item.icon
2857
+ }
2858
+ ),
2859
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "flex-1 leading-none", children: item.label })
2860
+ ]
2861
+ },
2862
+ item.id
2863
+ );
2864
+ }) })
2865
+ ] }) : children }),
2866
+ footerLabel && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "flex items-center gap-2 px-3 py-2 border-t border-border bg-surface-alt shrink-0", children: [
2867
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "w-1 h-1 rounded-full bg-foreground/20 shrink-0" }),
2868
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "text-[9px] tracking-[0.1em] uppercase text-foreground/25", children: footerLabel })
2869
+ ] })
2870
+ ]
2871
+ }
2872
+ )
2873
+ ] });
2874
+ };
2875
+ var toolbar_default = SlideToolbar;
2752
2876
  // Annotate the CommonJS export names for ESM import in node:
2753
2877
  0 && (module.exports = {
2754
2878
  CustomBreadcrumb,
2755
2879
  Grid,
2756
2880
  Navbar,
2757
2881
  Pagination,
2882
+ SlideToolbar,
2758
2883
  SortableHeaderCell
2759
2884
  });