@flamingo-stack/openframe-frontend-core 0.0.202 → 0.0.203

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.
Files changed (105) hide show
  1. package/dist/{chunk-OII2IERE.cjs → chunk-25LVV26X.cjs} +4 -4
  2. package/dist/chunk-25LVV26X.cjs.map +1 -0
  3. package/dist/{chunk-JIKTMXTZ.cjs → chunk-3YH2M76N.cjs} +896 -740
  4. package/dist/chunk-3YH2M76N.cjs.map +1 -0
  5. package/dist/{chunk-55HF462A.js → chunk-CPXLQ57U.js} +6 -7
  6. package/dist/chunk-CPXLQ57U.js.map +1 -0
  7. package/dist/{chunk-IDULPYOU.js → chunk-E6Q6UGDK.js} +1897 -1741
  8. package/dist/chunk-E6Q6UGDK.js.map +1 -0
  9. package/dist/{chunk-3B43AHYE.cjs → chunk-RMB5DVED.cjs} +6 -7
  10. package/dist/chunk-RMB5DVED.cjs.map +1 -0
  11. package/dist/{chunk-4ML3NA2L.js → chunk-XGL5FKIK.js} +4 -4
  12. package/dist/chunk-XGL5FKIK.js.map +1 -0
  13. package/dist/components/chat/chat-ticket-item.d.ts.map +1 -1
  14. package/dist/components/features/index.cjs +4 -4
  15. package/dist/components/features/index.js +3 -3
  16. package/dist/components/features/select-button.d.ts.map +1 -1
  17. package/dist/components/index.cjs +6 -4
  18. package/dist/components/index.cjs.map +1 -1
  19. package/dist/components/index.js +5 -3
  20. package/dist/components/navigation/index.cjs +4 -4
  21. package/dist/components/navigation/index.js +3 -3
  22. package/dist/components/navigation/navigation-sidebar.d.ts.map +1 -1
  23. package/dist/components/resizable.d.ts +1 -1
  24. package/dist/components/ui/button/split-button.d.ts.map +1 -1
  25. package/dist/components/ui/data-table/data-table-row.d.ts +16 -4
  26. package/dist/components/ui/data-table/data-table-row.d.ts.map +1 -1
  27. package/dist/components/ui/file-manager/index.cjs +52 -52
  28. package/dist/components/ui/file-manager/index.cjs.map +1 -1
  29. package/dist/components/ui/file-manager/index.js +3 -3
  30. package/dist/components/ui/file-manager/index.js.map +1 -1
  31. package/dist/components/ui/floating-tooltip.d.ts +3 -1
  32. package/dist/components/ui/floating-tooltip.d.ts.map +1 -1
  33. package/dist/components/ui/index.cjs +6 -4
  34. package/dist/components/ui/index.cjs.map +1 -1
  35. package/dist/components/ui/index.d.ts +1 -0
  36. package/dist/components/ui/index.d.ts.map +1 -1
  37. package/dist/components/ui/index.js +5 -3
  38. package/dist/components/ui/input-trigger.d.ts.map +1 -1
  39. package/dist/components/ui/radio-group.d.ts.map +1 -1
  40. package/dist/components/ui/ticket-info-section.d.ts.map +1 -1
  41. package/dist/components/ui/ticket-note-card.d.ts.map +1 -1
  42. package/dist/components/ui/truncate-text.d.ts +33 -0
  43. package/dist/components/ui/truncate-text.d.ts.map +1 -0
  44. package/dist/components/user-summary-stub.d.ts.map +1 -1
  45. package/dist/hooks/index.cjs +2 -2
  46. package/dist/hooks/index.js +1 -1
  47. package/dist/index.cjs +6 -4
  48. package/dist/index.cjs.map +1 -1
  49. package/dist/index.js +5 -3
  50. package/package.json +1 -1
  51. package/src/components/chat/chat-container.tsx +2 -2
  52. package/src/components/chat/chat-ticket-item.tsx +2 -3
  53. package/src/components/features/board/ticket-card.tsx +2 -2
  54. package/src/components/features/filters-dropdown.tsx +1 -1
  55. package/src/components/features/notifications/notification-tile.tsx +2 -2
  56. package/src/components/features/policy-configuration-panel.tsx +1 -1
  57. package/src/components/features/push-button-selector.tsx +1 -1
  58. package/src/components/features/select-button.tsx +2 -3
  59. package/src/components/features/video-bites-display.tsx +1 -1
  60. package/src/components/features/waitlist-form.tsx +1 -1
  61. package/src/components/filter-chip.tsx +1 -1
  62. package/src/components/layout/title-block.tsx +2 -2
  63. package/src/components/navigation/header-organization-filter.tsx +1 -1
  64. package/src/components/navigation/navigation-sidebar.tsx +107 -54
  65. package/src/components/platform/ScriptInfoSection.tsx +1 -1
  66. package/src/components/shared/onboarding/onboarding-step-card.tsx +2 -2
  67. package/src/components/shared/product-release/product-release-card.tsx +6 -6
  68. package/src/components/shared/product-release/release-detail-page.tsx +1 -1
  69. package/src/components/ui/assignee-dropdown.tsx +3 -3
  70. package/src/components/ui/autocomplete.tsx +2 -2
  71. package/src/components/ui/button/split-button.tsx +3 -5
  72. package/src/components/ui/checkbox-block.tsx +1 -1
  73. package/src/components/ui/data-table/data-table-row.tsx +82 -48
  74. package/src/components/ui/device-card-compact.tsx +2 -2
  75. package/src/components/ui/device-card.tsx +2 -2
  76. package/src/components/ui/entity-image.tsx +1 -1
  77. package/src/components/ui/field-wrapper.tsx +1 -1
  78. package/src/components/ui/file-manager/file-manager-table-row.tsx +2 -2
  79. package/src/components/ui/file-upload.tsx +2 -2
  80. package/src/components/ui/filter-list.tsx +1 -1
  81. package/src/components/ui/floating-tooltip.tsx +9 -5
  82. package/src/components/ui/hidden-tags-popup.tsx +1 -1
  83. package/src/components/ui/index.ts +1 -0
  84. package/src/components/ui/info-card.tsx +2 -2
  85. package/src/components/ui/input-trigger.tsx +1 -2
  86. package/src/components/ui/organization-card.tsx +3 -3
  87. package/src/components/ui/radio-group.tsx +2 -3
  88. package/src/components/ui/search-input.tsx +2 -2
  89. package/src/components/ui/service-card.tsx +3 -3
  90. package/src/components/ui/tag.tsx +1 -1
  91. package/src/components/ui/tags-manager.tsx +2 -2
  92. package/src/components/ui/ticket-attachments-list.tsx +1 -1
  93. package/src/components/ui/ticket-info-section.tsx +2 -3
  94. package/src/components/ui/ticket-note-card.tsx +4 -1
  95. package/src/components/ui/toaster.tsx +3 -3
  96. package/src/components/ui/truncate-text.tsx +116 -0
  97. package/src/components/user-summary-stub.tsx +32 -26
  98. package/src/components/vendor-display-button.tsx +1 -1
  99. package/src/stories/SplitButton.stories.tsx +7 -1
  100. package/dist/chunk-3B43AHYE.cjs.map +0 -1
  101. package/dist/chunk-4ML3NA2L.js.map +0 -1
  102. package/dist/chunk-55HF462A.js.map +0 -1
  103. package/dist/chunk-IDULPYOU.js.map +0 -1
  104. package/dist/chunk-JIKTMXTZ.cjs.map +0 -1
  105. package/dist/chunk-OII2IERE.cjs.map +0 -1
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- var _chunk3B43AHYEcjs = require('../../../chunk-3B43AHYE.cjs');
13
+ var _chunkRMB5DVEDcjs = require('../../../chunk-RMB5DVED.cjs');
14
14
 
15
15
 
16
16
 
@@ -55,7 +55,7 @@ function FileManagerBreadcrumb({
55
55
  }
56
56
 
57
57
  // src/components/ui/file-manager/file-manager-action-bar.tsx
58
- _chunk3B43AHYEcjs.init_button2.call(void 0, );
58
+ _chunkRMB5DVEDcjs.init_button2.call(void 0, );
59
59
  _chunkUC43NICZcjs.init_cn.call(void 0, );
60
60
 
61
61
 
@@ -72,7 +72,7 @@ function FileManagerActionBar({
72
72
  }) {
73
73
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkUC43NICZcjs.cn.call(void 0, "flex items-center gap-4 flex-wrap md:justify-end", className), children: [
74
74
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
75
- _chunk3B43AHYEcjs.Button,
75
+ _chunkRMB5DVEDcjs.Button,
76
76
  {
77
77
  variant: "outline",
78
78
  size: "small-legacy",
@@ -82,7 +82,7 @@ function FileManagerActionBar({
82
82
  }
83
83
  ),
84
84
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
85
- _chunk3B43AHYEcjs.Button,
85
+ _chunkRMB5DVEDcjs.Button,
86
86
  {
87
87
  variant: "outline",
88
88
  size: "small-legacy",
@@ -93,7 +93,7 @@ function FileManagerActionBar({
93
93
  }
94
94
  ),
95
95
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
96
- _chunk3B43AHYEcjs.Button,
96
+ _chunkRMB5DVEDcjs.Button,
97
97
  {
98
98
  variant: "outline",
99
99
  size: "small-legacy",
@@ -104,7 +104,7 @@ function FileManagerActionBar({
104
104
  }
105
105
  ),
106
106
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
107
- _chunk3B43AHYEcjs.Button,
107
+ _chunkRMB5DVEDcjs.Button,
108
108
  {
109
109
  variant: "outline",
110
110
  size: "small-legacy",
@@ -115,7 +115,7 @@ function FileManagerActionBar({
115
115
  }
116
116
  ),
117
117
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
118
- _chunk3B43AHYEcjs.Button,
118
+ _chunkRMB5DVEDcjs.Button,
119
119
  {
120
120
  variant: "outline",
121
121
  size: "small-legacy",
@@ -125,7 +125,7 @@ function FileManagerActionBar({
125
125
  }
126
126
  ),
127
127
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
128
- _chunk3B43AHYEcjs.Button,
128
+ _chunkRMB5DVEDcjs.Button,
129
129
  {
130
130
  variant: "outline",
131
131
  size: "small-legacy",
@@ -144,7 +144,7 @@ _chunkUC43NICZcjs.init_cn.call(void 0, );
144
144
  // src/components/ui/file-manager/file-manager-table-row.tsx
145
145
 
146
146
 
147
- _chunk3B43AHYEcjs.init_button2.call(void 0, );
147
+ _chunkRMB5DVEDcjs.init_button2.call(void 0, );
148
148
  _chunkUC43NICZcjs.init_cn.call(void 0, );
149
149
 
150
150
  // src/components/ui/file-manager/file-icon.tsx
@@ -184,7 +184,7 @@ function FileIcon({ type, extension, className, size = "md" }) {
184
184
  // src/components/ui/file-manager/file-manager-context-menu.tsx
185
185
 
186
186
 
187
- _chunk3B43AHYEcjs.init_button2.call(void 0, );
187
+ _chunkRMB5DVEDcjs.init_button2.call(void 0, );
188
188
  _chunkUC43NICZcjs.init_cn.call(void 0, );
189
189
 
190
190
  function FileManagerContextMenu({
@@ -230,9 +230,9 @@ function FileManagerContextMenu({
230
230
  }
231
231
  ];
232
232
  const visibleItems = menuItems.filter((item) => item.show);
233
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk3B43AHYEcjs.DropdownMenu, { open, onOpenChange, children: [
234
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.DropdownMenuTrigger, { asChild: true, children: trigger || /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
235
- _chunk3B43AHYEcjs.Button,
233
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkRMB5DVEDcjs.DropdownMenu, { open, onOpenChange, children: [
234
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.DropdownMenuTrigger, { asChild: true, children: trigger || /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
235
+ _chunkRMB5DVEDcjs.Button,
236
236
  {
237
237
  variant: "transparent",
238
238
  size: "small-legacy",
@@ -241,15 +241,15 @@ function FileManagerContextMenu({
241
241
  }
242
242
  ) }),
243
243
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
244
- _chunk3B43AHYEcjs.DropdownMenuContent,
244
+ _chunkRMB5DVEDcjs.DropdownMenuContent,
245
245
  {
246
246
  align: "end",
247
247
  className: _chunkUC43NICZcjs.cn.call(void 0, "w-56", className),
248
248
  onClick: (e) => e.stopPropagation(),
249
249
  children: visibleItems.map((item, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react2.default.Fragment, { children: [
250
- item.separator && index > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.DropdownMenuSeparator, {}),
250
+ item.separator && index > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.DropdownMenuSeparator, {}),
251
251
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
252
- _chunk3B43AHYEcjs.DropdownMenuItem,
252
+ _chunkRMB5DVEDcjs.DropdownMenuItem,
253
253
  {
254
254
  onClick: (e) => {
255
255
  e.stopPropagation();
@@ -314,7 +314,7 @@ function FileManagerTableRow({
314
314
  },
315
315
  children: [
316
316
  showCheckbox && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", "data-no-row-click": true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
317
- _chunk3B43AHYEcjs.Checkbox,
317
+ _chunkRMB5DVEDcjs.Checkbox,
318
318
  {
319
319
  checked: isSelected,
320
320
  onCheckedChange: handleCheckboxChange,
@@ -331,8 +331,8 @@ function FileManagerTableRow({
331
331
  }
332
332
  ),
333
333
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col min-w-0", children: [
334
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm text-ods-text-primary truncate", children: file.name }),
335
- showPath && file.path && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-xs text-ods-text-secondary truncate", children: file.path })
334
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm text-ods-text-primary truncate", title: file.name, children: file.name }),
335
+ showPath && file.path && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-xs text-ods-text-secondary truncate", title: file.path, children: file.path })
336
336
  ] })
337
337
  ] }),
338
338
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-24 shrink-0 pr-4 text-sm text-ods-text-secondary", children: file.size || "" }),
@@ -346,7 +346,7 @@ function FileManagerTableRow({
346
346
  onAction: handleContextAction,
347
347
  fileType: file.type,
348
348
  trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
349
- _chunk3B43AHYEcjs.Button,
349
+ _chunkRMB5DVEDcjs.Button,
350
350
  {
351
351
  variant: "transparent",
352
352
  size: "small-legacy",
@@ -360,7 +360,7 @@ function FileManagerTableRow({
360
360
  }
361
361
  ),
362
362
  file.type === "folder" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
363
- _chunk3B43AHYEcjs.Button,
363
+ _chunkRMB5DVEDcjs.Button,
364
364
  {
365
365
  variant: "transparent",
366
366
  size: "small-legacy",
@@ -379,7 +379,7 @@ function FileManagerTableRow({
379
379
  }
380
380
 
381
381
  // src/components/ui/file-manager/file-manager-empty.tsx
382
- _chunk3B43AHYEcjs.init_button2.call(void 0, );
382
+ _chunkRMB5DVEDcjs.init_button2.call(void 0, );
383
383
  _chunkUC43NICZcjs.init_cn.call(void 0, );
384
384
 
385
385
 
@@ -397,7 +397,7 @@ function FileManagerEmpty({
397
397
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-lg font-medium text-ods-text-primary mb-2", children: message }),
398
398
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-ods-text-secondary text-center max-w-md mb-6", children: description }),
399
399
  action && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
400
- _chunk3B43AHYEcjs.Button,
400
+ _chunkRMB5DVEDcjs.Button,
401
401
  {
402
402
  variant: "accent",
403
403
  size: "small-legacy",
@@ -466,26 +466,26 @@ function FileManagerTable({
466
466
  const skeletonRows = 8;
467
467
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkUC43NICZcjs.cn.call(void 0, "bg-ods-bg border border-ods-border rounded-lg flex flex-col", className), children: [
468
468
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center h-12 px-4 bg-ods-bg-secondary border-b border-ods-border rounded-t-lg", children: [
469
- showCheckboxes && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-5 w-5 rounded" }) }),
469
+ showCheckboxes && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-5 w-5 rounded" }) }),
470
470
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center gap-3 flex-1 min-w-0 text-sm font-medium text-ods-text-secondary", children: "NAME" }),
471
471
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-24 shrink-0 pr-4 text-sm font-medium text-ods-text-secondary", children: "SIZE" }),
472
472
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-36 shrink-0 pl-4 text-sm font-medium text-ods-text-secondary", children: "EDITED" }),
473
473
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-48 shrink-0 pl-4 flex justify-end" })
474
474
  ] }),
475
475
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "divide-y divide-ods-border rounded-b-lg flex-1 overflow-auto", children: Array.from({ length: skeletonRows }).map((_, idx) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-ods-card group flex items-center h-16 px-4 border-ods-border", children: [
476
- showCheckboxes && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-5 w-5 rounded" }) }),
476
+ showCheckboxes && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-5 w-5 rounded" }) }),
477
477
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 flex-1 min-w-0", children: [
478
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-6 w-6 rounded" }),
478
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-6 w-6 rounded" }),
479
479
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col min-w-0", children: [
480
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-4 w-32" }),
481
- isSearchResult && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-3 w-48 mt-1" })
480
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-4 w-32" }),
481
+ isSearchResult && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-3 w-48 mt-1" })
482
482
  ] })
483
483
  ] }),
484
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-24 shrink-0 pr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-4 w-16" }) }),
485
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-36 shrink-0 pl-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-4 w-24" }) }),
484
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-24 shrink-0 pr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-4 w-16" }) }),
485
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-36 shrink-0 pl-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-4 w-24" }) }),
486
486
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-48 shrink-0 pl-4 flex items-center justify-end gap-1", children: [
487
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-8 w-8 rounded" }),
488
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-8 w-8 rounded" })
487
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-8 w-8 rounded" }),
488
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-8 w-8 rounded" })
489
489
  ] })
490
490
  ] }, idx)) })
491
491
  ] });
@@ -502,7 +502,7 @@ function FileManagerTable({
502
502
  children: [
503
503
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center h-12 px-4 bg-ods-bg-secondary border-b border-ods-border rounded-t-lg", children: [
504
504
  showCheckboxes && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
505
- _chunk3B43AHYEcjs.Checkbox,
505
+ _chunkRMB5DVEDcjs.Checkbox,
506
506
  {
507
507
  checked: allSelected || someSelected,
508
508
  onCheckedChange: handleSelectAll,
@@ -666,7 +666,7 @@ function FileManager({
666
666
  )
667
667
  ] }),
668
668
  showSearch && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
669
- _chunk3B43AHYEcjs.Input,
669
+ _chunkRMB5DVEDcjs.Input,
670
670
  {
671
671
  value: searchQuery,
672
672
  onChange: (e) => _optionalChain([onSearch, 'optionalCall', _27 => _27(e.target.value)]),
@@ -706,39 +706,39 @@ function FileManagerSkeleton({
706
706
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col h-full bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 flex flex-col py-6 space-y-6 min-h-0", children: [
707
707
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap items-start justify-between gap-4", children: [
708
708
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 flex items-center gap-2", children: [
709
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-5 w-12" }),
710
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-4 w-4 rounded-full" }),
711
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-5 w-20" }),
712
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-4 w-4 rounded-full" }),
713
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-5 w-24" })
709
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-5 w-12" }),
710
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-4 w-4 rounded-full" }),
711
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-5 w-20" }),
712
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-4 w-4 rounded-full" }),
713
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-5 w-24" })
714
714
  ] }),
715
715
  showActions && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-shrink-0 flex items-center gap-2", children: [
716
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-9 w-24" }),
717
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-9 w-20" }),
718
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-9 w-20" }),
719
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-9 w-28" })
716
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-9 w-24" }),
717
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-9 w-20" }),
718
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-9 w-20" }),
719
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-9 w-28" })
720
720
  ] })
721
721
  ] }),
722
- showSearch && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-10 w-full rounded-lg" }),
722
+ showSearch && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-10 w-full rounded-lg" }),
723
723
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1 min-h-0", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-ods-bg border border-ods-border rounded-lg flex flex-col", children: [
724
724
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center h-12 px-4 bg-ods-bg-secondary border-b border-ods-border rounded-t-lg", children: [
725
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-5 w-5 rounded" }) }),
725
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-5 w-5 rounded" }) }),
726
726
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center gap-3 flex-1 min-w-0 text-sm font-medium text-ods-text-secondary", children: "NAME" }),
727
727
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-24 shrink-0 pr-4 text-sm font-medium text-ods-text-secondary", children: "SIZE" }),
728
728
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-36 shrink-0 pl-4 text-sm font-medium text-ods-text-secondary", children: "EDITED" }),
729
729
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-48 shrink-0 pl-4 flex justify-end" })
730
730
  ] }),
731
731
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "divide-y divide-ods-border rounded-b-lg flex-1 overflow-auto min-h-0", children: rowPlaceholders.map((_, idx) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-ods-card flex items-center h-16 px-4 border-ods-border", children: [
732
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-5 w-5 rounded" }) }),
732
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-5 w-5 rounded" }) }),
733
733
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 flex-1 min-w-0", children: [
734
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-6 w-6 rounded" }),
735
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col min-w-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-4 w-32" }) })
734
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-6 w-6 rounded" }),
735
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col min-w-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-4 w-32" }) })
736
736
  ] }),
737
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-24 shrink-0 pr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-4 w-16" }) }),
738
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-36 shrink-0 pl-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-4 w-24" }) }),
737
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-24 shrink-0 pr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-4 w-16" }) }),
738
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-36 shrink-0 pl-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-4 w-24" }) }),
739
739
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-48 shrink-0 pl-4 flex items-center justify-end gap-1", children: [
740
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-8 w-8 rounded" }),
741
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3B43AHYEcjs.Skeleton, { className: "h-8 w-8 rounded" })
740
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-8 w-8 rounded" }),
741
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRMB5DVEDcjs.Skeleton, { className: "h-8 w-8 rounded" })
742
742
  ] })
743
743
  ] }, idx)) })
744
744
  ] }) })
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/components/ui/file-manager/index.cjs","../../../../src/components/ui/file-manager/file-manager.tsx","../../../../src/components/ui/file-manager/file-manager-breadcrumb.tsx","../../../../src/components/ui/file-manager/file-manager-action-bar.tsx","../../../../src/components/ui/file-manager/file-manager-table.tsx","../../../../src/components/ui/file-manager/file-manager-table-row.tsx","../../../../src/components/ui/file-manager/file-icon.tsx","../../../../src/components/ui/file-manager/file-manager-context-menu.tsx","../../../../src/components/ui/file-manager/file-manager-empty.tsx","../../../../src/components/ui/file-manager/file-manager-skeleton.tsx"],"names":["jsxs","jsx","Copy","Scissors","React","MoreHorizontal","ChevronRight","useState"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/components/ui/file-manager/index.cjs","sourcesContent":[null,"'use client'\n\nimport React, { useMemo } from 'react'\nimport { cn } from '../../../utils/cn'\nimport { Input } from '../input'\nimport { SearchIcon } from '../../icons-v2-generated/interface/search-icon'\nimport { FileManagerBreadcrumb } from './file-manager-breadcrumb'\nimport { FileManagerActionBar } from './file-manager-action-bar'\nimport { FileManagerTable } from './file-manager-table'\nimport type { FileManagerProps, BreadcrumbItem } from './types'\nimport { Loader2 } from 'lucide-react'\n\nexport function FileManager({ \n files,\n currentPath,\n selectedFiles,\n searchQuery,\n loading = false,\n isSearching,\n showCheckboxes = true,\n showSearch = true,\n showActions = true,\n canPaste = false,\n disableSearch = false,\n resultsCount,\n onNavigate,\n onBreadcrumbClick,\n onSearch,\n onSelectFile,\n onSelectAll,\n onFileAction,\n onFileClick,\n onFolderOpen,\n className \n}: FileManagerProps) {\n const breadcrumbItems = useMemo((): BreadcrumbItem[] => {\n const items: BreadcrumbItem[] = []\n \n items.push({ label: 'Root', path: '' })\n \n if (!currentPath || currentPath === '' || currentPath === '/') {\n return items\n }\n \n const isWindowsPath = currentPath.includes('\\\\') || /^[A-Za-z]:/.test(currentPath)\n const separator = isWindowsPath ? '\\\\' : '/'\n \n const parts = currentPath.split(separator).filter(Boolean)\n \n let startIndex = 0\n if (isWindowsPath && parts.length > 0) {\n const driveMatch = parts[0].match(/^([A-Za-z]:)/)\n if (driveMatch) {\n items.push({\n label: driveMatch[1],\n path: driveMatch[1] + separator\n })\n if (parts[0] === driveMatch[1]) {\n startIndex = 1\n } else {\n parts[0] = parts[0].substring(driveMatch[1].length)\n }\n }\n }\n \n let accumulatedPath = ''\n if (isWindowsPath && items.length > 1) {\n accumulatedPath = items[items.length - 1].path\n }\n \n for (let i = startIndex; i < parts.length; i++) {\n const part = parts[i]\n if (!part) continue\n \n if (isWindowsPath) {\n accumulatedPath = accumulatedPath.endsWith(separator) \n ? accumulatedPath + part \n : accumulatedPath + separator + part\n } else {\n accumulatedPath = accumulatedPath === '' || accumulatedPath === '/'\n ? '/' + part \n : accumulatedPath + '/' + part\n }\n \n items.push({\n label: part,\n path: accumulatedPath\n })\n }\n \n return items\n }, [currentPath])\n\n const handleBreadcrumbClick = (path: string) => {\n onBreadcrumbClick?.(path)\n onNavigate?.(path)\n }\n\n const handleFolderOpen = (file: any) => {\n let newPath: string\n \n if (!currentPath || currentPath === '') {\n if (file.name && /^[A-Za-z]:/.test(file.name)) {\n newPath = file.name + (file.name.endsWith('\\\\') ? '' : '\\\\')\n } else {\n newPath = file.name\n }\n } else {\n const separator = currentPath.includes('\\\\') ? '\\\\' : '/'\n \n if (currentPath === '/') {\n newPath = '/' + file.name\n } else if (currentPath.endsWith(separator)) {\n newPath = currentPath + file.name\n } else {\n newPath = currentPath + separator + file.name\n }\n }\n \n onFolderOpen?.(file)\n onNavigate?.(newPath)\n }\n\n const handleSelectAll = (selected: boolean) => {\n onSelectAll?.(selected)\n }\n\n const handleSelectFile = (fileId: string, selected: boolean) => {\n onSelectFile?.(fileId, selected)\n }\n\n return (\n <div className={cn('flex flex-col h-full bg-ods-bg', className)}>\n <div className=\"flex-1 flex flex-col py-2 space-y-6 min-h-0\">\n <div className=\"flex flex-col justify-between gap-4 mb-4 md:flex-row\">\n <FileManagerBreadcrumb\n items={breadcrumbItems}\n onItemClick={handleBreadcrumbClick}\n />\n\n {showActions && (\n <FileManagerActionBar\n canPaste={canPaste}\n hasSelection={selectedFiles.length > 0}\n onNewFolder={() => onFileAction?.('new-folder')}\n onPaste={() => onFileAction?.('paste')}\n onCopy={() => onFileAction?.('copy')}\n onCut={() => onFileAction?.('cut')}\n onUpload={() => onFileAction?.('upload')}\n onSelectAll={() => handleSelectAll(true)}\n />\n )}\n </div>\n \n {showSearch && (\n <Input\n value={searchQuery}\n onChange={(e) => onSearch?.(e.target.value)}\n placeholder=\"Search...\"\n disabled={disableSearch}\n startAdornment={<SearchIcon />}\n loading={isSearching}\n />\n )}\n \n <div className=\"flex-1 min-h-0\">\n <FileManagerTable\n files={files}\n selectedFiles={selectedFiles}\n resultsCount={resultsCount || files.length}\n showCheckboxes={showCheckboxes}\n loading={loading}\n isSearchResult={!!searchQuery}\n onSelectFile={handleSelectFile}\n onSelectAll={handleSelectAll}\n onFileClick={onFileClick}\n onFolderOpen={handleFolderOpen}\n onFileAction={onFileAction}\n />\n </div>\n </div>\n </div>\n )\n}","'use client'\n\nimport React from 'react'\nimport { ChevronRight } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\nimport type { FileManagerBreadcrumbProps } from './types'\n\nexport function FileManagerBreadcrumb({ \n items, \n onItemClick, \n className \n}: FileManagerBreadcrumbProps) {\n return (\n <nav className={cn(\n 'flex flex-wrap items-center gap-x-1 gap-y-1 text-sm break-words',\n className\n )}>\n {items.map((item, index) => (\n <React.Fragment key={item.path}>\n {index > 0 && (\n <ChevronRight className=\"h-4 w-4 text-ods-text-tertiary flex-shrink-0\" />\n )}\n <button\n onClick={() => onItemClick?.(item.path)}\n className={cn(\n 'shrink-0 px-1 py-0.5 rounded hover:bg-ods-bg-secondary transition-colors',\n 'text-ods-text-primary hover:text-ods-accent text-left break-all',\n index === items.length - 1 && 'font-medium'\n )}\n >\n {item.label}\n </button>\n </React.Fragment>\n ))}\n </nav>\n )\n}","'use client'\n\nimport React from 'react'\nimport { FolderPlus, Clipboard, Upload, CheckSquare, Copy, Scissors } from 'lucide-react'\nimport { Button } from '../button'\nimport { cn } from '../../../utils/cn'\nimport type { FileManagerActionBarProps } from './types'\n\nexport function FileManagerActionBar({ \n canPaste = false,\n hasSelection = false,\n onNewFolder,\n onPaste,\n onCopy,\n onCut,\n onUpload,\n onSelectAll,\n className \n}: FileManagerActionBarProps) {\n return (\n <div className={cn('flex items-center gap-4 flex-wrap md:justify-end', className)}>\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n onClick={onNewFolder}\n leftIcon={<FolderPlus className=\"h-4 w-4\" />}\n >\n New Folder\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n onClick={onCopy}\n disabled={!hasSelection}\n leftIcon={<Copy className=\"h-4 w-4\" />}\n >\n Copy\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n onClick={onCut}\n disabled={!hasSelection}\n leftIcon={<Scissors className=\"h-4 w-4\" />}\n >\n Cut\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n onClick={onPaste}\n disabled={!canPaste}\n leftIcon={<Clipboard className=\"h-4 w-4\" />}\n >\n Paste\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n onClick={onUpload}\n leftIcon={<Upload className=\"h-4 w-4\" />}\n >\n Upload\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n onClick={onSelectAll}\n leftIcon={<CheckSquare className=\"h-4 w-4\" />}\n >\n Select All\n </Button>\n </div>\n )\n}","'use client'\n\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport { Checkbox } from '../checkbox'\nimport { Skeleton } from '../skeleton'\nimport { cn } from '../../../utils/cn'\nimport { FileManagerTableRow } from './file-manager-table-row'\nimport { FileManagerEmpty } from './file-manager-empty'\nimport type { FileManagerTableProps } from './types'\n\nexport function FileManagerTable({ \n files,\n selectedFiles,\n showCheckboxes = true,\n loading = false,\n isSearchResult = false,\n onSelectFile,\n onSelectAll,\n onFileClick,\n onFolderOpen,\n onFileAction,\n className \n}: FileManagerTableProps) {\n const allSelected = useMemo(() => {\n return files.length > 0 && selectedFiles.length === files.length\n }, [files.length, selectedFiles.length])\n\n const someSelected = useMemo(() => {\n return selectedFiles.length > 0 && selectedFiles.length < files.length\n }, [files.length, selectedFiles.length])\n\n const containerRef = useRef<HTMLDivElement>(null)\n const [tableHeight, setTableHeight] = useState<number | null>(null)\n\n useLayoutEffect(() => {\n if (loading || files.length === 0) {\n setTableHeight(null)\n return\n }\n\n const handleResize = () => {\n const node = containerRef.current\n if (!node) return\n const rect = node.getBoundingClientRect()\n const availableHeight = window.innerHeight - rect.top\n setTableHeight(availableHeight > 0 ? availableHeight : null)\n }\n\n handleResize()\n\n window.addEventListener('resize', handleResize)\n window.addEventListener('scroll', handleResize, true)\n\n const resizeObserver = new ResizeObserver(handleResize)\n const parent = containerRef.current?.parentElement\n if (parent) {\n resizeObserver.observe(parent)\n } else if (containerRef.current) {\n resizeObserver.observe(containerRef.current)\n }\n\n return () => {\n window.removeEventListener('resize', handleResize)\n window.removeEventListener('scroll', handleResize, true)\n resizeObserver.disconnect()\n }\n }, [loading, files.length])\n\n const handleSelectAll = (checked: boolean) => {\n onSelectAll?.(checked)\n }\n\n if (loading) {\n const skeletonRows = 8\n \n return (\n <div className={cn('bg-ods-bg border border-ods-border rounded-lg flex flex-col', className)}>\n {/* Table header */}\n <div className=\"flex items-center h-12 px-4 bg-ods-bg-secondary border-b border-ods-border rounded-t-lg\">\n {showCheckboxes && (\n <div className=\"mr-4\">\n <Skeleton className=\"h-5 w-5 rounded\" />\n </div>\n )}\n \n <div className=\"flex items-center gap-3 flex-1 min-w-0 text-sm font-medium text-ods-text-secondary\">\n NAME\n </div>\n \n <div className=\"w-24 shrink-0 pr-4 text-sm font-medium text-ods-text-secondary\">\n SIZE\n </div>\n \n <div className=\"w-36 shrink-0 pl-4 text-sm font-medium text-ods-text-secondary\">\n EDITED\n </div>\n \n <div className=\"w-48 shrink-0 pl-4 flex justify-end\">\n {/* Space for action buttons */}\n </div>\n </div>\n \n {/* Skeleton rows */}\n <div className=\"divide-y divide-ods-border rounded-b-lg flex-1 overflow-auto\">\n {Array.from({ length: skeletonRows }).map((_, idx) => (\n <div key={idx} className=\"bg-ods-card group flex items-center h-16 px-4 border-ods-border\">\n {showCheckboxes && (\n <div className=\"mr-4\">\n <Skeleton className=\"h-5 w-5 rounded\" />\n </div>\n )}\n \n {/* File icon and name column */}\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n <Skeleton className=\"h-6 w-6 rounded\" />\n <div className=\"flex flex-col min-w-0\">\n <Skeleton className=\"h-4 w-32\" />\n {isSearchResult && (\n <Skeleton className=\"h-3 w-48 mt-1\" />\n )}\n </div>\n </div>\n \n {/* Size column */}\n <div className=\"w-24 shrink-0 pr-4\">\n <Skeleton className=\"h-4 w-16\" />\n </div>\n \n {/* Modified date column */}\n <div className=\"w-36 shrink-0 pl-4\">\n <Skeleton className=\"h-4 w-24\" />\n </div>\n \n {/* Action buttons column */}\n <div className=\"w-48 shrink-0 pl-4 flex items-center justify-end gap-1\">\n <Skeleton className=\"h-8 w-8 rounded\" />\n <Skeleton className=\"h-8 w-8 rounded\" />\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n }\n\n if (files.length === 0) {\n return <FileManagerEmpty />\n }\n\n return (\n <div\n ref={containerRef}\n className={cn('bg-ods-bg border border-ods-border rounded-lg flex flex-col', className)}\n style={tableHeight ? { height: `${tableHeight}px` } : undefined}\n >\n <div className=\"flex items-center h-12 px-4 bg-ods-bg-secondary border-b border-ods-border rounded-t-lg\">\n {showCheckboxes && (\n <div className=\"mr-4\">\n <Checkbox\n checked={allSelected || someSelected}\n onCheckedChange={handleSelectAll}\n className=\"h-5 w-5\"\n />\n </div>\n )}\n \n <div className=\"flex items-center gap-3 flex-1 min-w-0 text-sm font-medium text-ods-text-secondary\">\n NAME\n </div>\n \n <div className=\"w-24 shrink-0 pr-4 text-sm font-medium text-ods-text-secondary\">\n SIZE\n </div>\n \n <div className=\"w-36 shrink-0 pl-4 text-sm font-medium text-ods-text-secondary\">\n EDITED\n </div>\n \n <div className=\"w-48 shrink-0 pl-4 flex justify-end\">\n {/* Space for action buttons */}\n </div>\n </div>\n \n <div className=\"divide-y divide-ods-border rounded-b-lg flex-1 overflow-auto\">\n {files.map((file) => (\n <FileManagerTableRow\n key={file.id}\n file={file}\n isSelected={selectedFiles.includes(file.id)}\n showCheckbox={showCheckboxes}\n showPath={isSearchResult}\n onSelect={(selected) => onSelectFile?.(file.id, selected)}\n onClick={() => {\n if (isSearchResult) {\n onFileClick?.(file)\n } else if (file.type === 'folder') {\n onFolderOpen?.(file)\n }\n }}\n onDoubleClick={() => {\n if (file.type === 'folder' && !isSearchResult) {\n onFolderOpen?.(file)\n }\n }}\n onActionClick={(action) => onFileAction?.(action, file.id)}\n />\n ))}\n </div>\n </div>\n )\n}","'use client'\n\nimport React, { useState } from 'react'\nimport { ChevronRight, MoreHorizontal } from 'lucide-react'\nimport { Checkbox } from '../checkbox'\nimport { Button } from '../button'\nimport { cn } from '../../../utils/cn'\nimport { FileIcon } from './file-icon'\nimport { FileManagerContextMenu } from './file-manager-context-menu'\nimport type { FileManagerTableRowProps } from './types'\n\nexport function FileManagerTableRow({ \n file,\n isSelected = false,\n showCheckbox = true,\n showPath = false,\n onSelect,\n onClick,\n onDoubleClick,\n onContextMenu,\n onActionClick,\n className \n}: FileManagerTableRowProps) {\n const [contextMenuOpen, setContextMenuOpen] = useState(false)\n \n const handleRowClick = (e: React.MouseEvent) => {\n // Don't trigger row click if clicking on interactive elements\n if ((e.target as HTMLElement).closest('[data-no-row-click]')) {\n return\n }\n onClick?.()\n }\n\n const handleCheckboxChange = (checked: boolean) => {\n onSelect?.(checked)\n }\n\n const handleContextAction = (action: any) => {\n onActionClick?.(action)\n setContextMenuOpen(false)\n }\n\n const fileExtension = file.type === 'file' \n ? file.name.split('.').pop() \n : undefined\n\n return (\n <div\n className={cn(\n 'bg-ods-card group flex items-center h-16 px-4 border-ods-border',\n 'hover:bg-ods-bg-secondary transition-colors cursor-pointer',\n isSelected && 'bg-ods-bg-secondary',\n className\n )}\n onClick={handleRowClick}\n onDoubleClick={onDoubleClick}\n onContextMenu={(e) => {\n e.preventDefault()\n onContextMenu?.(e)\n }}\n >\n {showCheckbox && (\n <div className=\"mr-4\" data-no-row-click>\n <Checkbox\n checked={isSelected}\n onCheckedChange={handleCheckboxChange}\n className=\"h-5 w-5\"\n />\n </div>\n )}\n \n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n <FileIcon \n type={file.type} \n extension={fileExtension}\n size=\"md\" \n />\n <div className=\"flex flex-col min-w-0\">\n <span className=\"text-sm text-ods-text-primary truncate\">\n {file.name}\n </span>\n {showPath && file.path && (\n <span className=\"text-xs text-ods-text-secondary truncate\">\n {file.path}\n </span>\n )}\n </div>\n </div>\n \n <div className=\"w-24 shrink-0 pr-4 text-sm text-ods-text-secondary\">\n {file.size || ''}\n </div>\n \n <div className=\"w-36 shrink-0 pl-4 text-sm text-ods-text-secondary\">\n {file.modified}\n </div>\n \n <div className=\"w-48 shrink-0 pl-4 flex items-center justify-end gap-1\" data-no-row-click>\n <FileManagerContextMenu\n open={contextMenuOpen}\n onOpenChange={setContextMenuOpen}\n onAction={handleContextAction}\n fileType={file.type}\n trigger={\n <Button\n variant=\"transparent\"\n size=\"small-legacy\"\n className=\"h-8 w-8 p-0 opacity-0 group-hover:opacity-100 transition-opacity\"\n onClick={(e) => {\n e.stopPropagation()\n }}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n </Button>\n }\n />\n \n {file.type === 'folder' ? (\n <Button\n variant=\"transparent\"\n size=\"small-legacy\"\n className=\"h-8 w-8 p-0\"\n onClick={(e) => {\n e.stopPropagation()\n onDoubleClick?.()\n }}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n ) : (\n <div className=\"w-8\" /> /* Space to maintain alignment when no chevron */\n )}\n </div>\n </div>\n )\n}","'use client'\n\nimport React from 'react'\nimport { Folder, File, FileText, Image, FileVideo, FileAudio, FileCode, FileArchive } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\nimport type { FileIconProps } from './types'\n\nconst sizeMap = {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6'\n}\n\nconst getFileIcon = (extension?: string) => {\n if (!extension) return File\n \n const ext = extension.toLowerCase()\n \n // Document files\n if (['txt', 'doc', 'docx', 'pdf', 'rtf'].includes(ext)) return FileText\n \n // Image files\n if (['jpg', 'jpeg', 'png', 'gif', 'svg', 'webp', 'bmp'].includes(ext)) return Image\n \n // Video files\n if (['mp4', 'avi', 'mov', 'wmv', 'flv', 'mkv'].includes(ext)) return FileVideo\n \n // Audio files\n if (['mp3', 'wav', 'flac', 'aac', 'ogg', 'wma'].includes(ext)) return FileAudio\n \n // Code files\n if (['js', 'ts', 'jsx', 'tsx', 'py', 'java', 'c', 'cpp', 'cs', 'html', 'css', 'json', 'xml'].includes(ext)) return FileCode\n \n // Archive files\n if (['zip', 'rar', '7z', 'tar', 'gz', 'bz2'].includes(ext)) return FileArchive\n \n return File\n}\n\nexport function FileIcon({ type, extension, className, size = 'md' }: FileIconProps) {\n const Icon = type === 'folder' ? Folder : getFileIcon(extension)\n \n return (\n <Icon \n className={cn(\n sizeMap[size],\n type === 'folder' ? 'text-ods-accent' : 'text-ods-text-secondary',\n className\n )}\n />\n )\n}","'use client'\n\nimport React from 'react'\nimport { Download, Copy, Edit2, Scissors, Archive, Trash2, MoreHorizontal } from 'lucide-react'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../dropdown-menu'\nimport { Button } from '../button'\nimport { cn } from '../../../utils/cn'\nimport type { FileManagerContextMenuProps } from './types'\n\nexport function FileManagerContextMenu({ \n open,\n onOpenChange,\n onAction,\n fileType = 'file',\n hasSelection = false,\n trigger,\n className \n}: FileManagerContextMenuProps) {\n const menuItems = [\n {\n action: 'download' as const,\n label: 'Download',\n icon: Download,\n show: fileType === 'file' || hasSelection\n },\n {\n action: 'copy' as const,\n label: 'Copy',\n icon: Copy,\n show: true\n },\n {\n action: 'rename' as const,\n label: 'Rename',\n icon: Edit2,\n show: !hasSelection\n },\n {\n action: 'cut' as const,\n label: 'Cut',\n icon: Scissors,\n show: true\n },\n {\n action: 'delete' as const,\n label: 'Delete',\n icon: Trash2,\n show: true,\n separator: true\n }\n ]\n\n const visibleItems = menuItems.filter(item => item.show)\n\n return (\n <DropdownMenu open={open} onOpenChange={onOpenChange}>\n <DropdownMenuTrigger asChild>\n {trigger || (\n <Button\n variant=\"transparent\"\n size=\"small-legacy\"\n className=\"h-8 w-8 p-0\"\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n </Button>\n )}\n </DropdownMenuTrigger>\n <DropdownMenuContent \n align=\"end\" \n className={cn('w-56', className)}\n onClick={(e) => e.stopPropagation()}\n >\n {visibleItems.map((item, index) => (\n <React.Fragment key={item.action}>\n {item.separator && index > 0 && <DropdownMenuSeparator />}\n <DropdownMenuItem\n onClick={(e) => {\n e.stopPropagation()\n onAction(item.action)\n }}\n className=\"cursor-pointer\"\n >\n <item.icon className=\"mr-3 h-4 w-4\" />\n <span>{item.label}</span>\n </DropdownMenuItem>\n </React.Fragment>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}","'use client'\n\nimport React from 'react'\nimport { FolderOpen } from 'lucide-react'\nimport { Button } from '../button'\nimport { cn } from '../../../utils/cn'\nimport type { FileManagerEmptyProps } from './types'\n\nexport function FileManagerEmpty({ \n message = 'No files or folders found',\n description = 'This folder is empty. Create a new folder or upload files to get started.',\n action,\n className \n}: FileManagerEmptyProps) {\n return (\n <div className={cn(\n 'flex flex-col items-center justify-center py-20 px-4',\n className\n )}>\n <div className=\"p-4 bg-ods-bg-secondary rounded-full mb-6\">\n <FolderOpen className=\"h-12 w-12 text-ods-text-tertiary\" />\n </div>\n \n <h3 className=\"text-lg font-medium text-ods-text-primary mb-2\">\n {message}\n </h3>\n \n <p className=\"text-sm text-ods-text-secondary text-center max-w-md mb-6\">\n {description}\n </p>\n \n {action && (\n <Button\n variant=\"accent\"\n size=\"small-legacy\"\n onClick={action.onClick}\n >\n {action.label}\n </Button>\n )}\n </div>\n )\n}","'use client'\n\nimport React from 'react'\nimport { Skeleton } from '../skeleton'\n\ninterface FileManagerSkeletonProps {\n rows?: number\n showSearch?: boolean\n showActions?: boolean\n}\n\nexport function FileManagerSkeleton({ \n rows = 8,\n showSearch = true,\n showActions = true\n}: FileManagerSkeletonProps) {\n const rowPlaceholders = Array.from({ length: rows })\n\n return (\n <div className=\"flex flex-col h-full bg-ods-bg\">\n <div className=\"flex-1 flex flex-col py-6 space-y-6 min-h-0\">\n {/* Breadcrumb and Action Bar */}\n <div className=\"flex flex-wrap items-start justify-between gap-4\">\n {/* Breadcrumb skeleton */}\n <div className=\"flex-1 min-w-0 flex items-center gap-2\">\n <Skeleton className=\"h-5 w-12\" />\n <Skeleton className=\"h-4 w-4 rounded-full\" />\n <Skeleton className=\"h-5 w-20\" />\n <Skeleton className=\"h-4 w-4 rounded-full\" />\n <Skeleton className=\"h-5 w-24\" />\n </div>\n \n {/* Action buttons skeleton */}\n {showActions && (\n <div className=\"flex-shrink-0 flex items-center gap-2\">\n <Skeleton className=\"h-9 w-24\" />\n <Skeleton className=\"h-9 w-20\" />\n <Skeleton className=\"h-9 w-20\" />\n <Skeleton className=\"h-9 w-28\" />\n </div>\n )}\n </div>\n \n {/* Search bar skeleton */}\n {showSearch && (\n <Skeleton className=\"h-10 w-full rounded-lg\" />\n )}\n \n {/* Table skeleton */}\n <div className=\"flex-1 min-h-0\">\n <div className=\"bg-ods-bg border border-ods-border rounded-lg flex flex-col\">\n {/* Table header */}\n <div className=\"flex items-center h-12 px-4 bg-ods-bg-secondary border-b border-ods-border rounded-t-lg\">\n {/* Checkbox */}\n <div className=\"mr-4\">\n <Skeleton className=\"h-5 w-5 rounded\" />\n </div>\n \n {/* Column headers */}\n <div className=\"flex items-center gap-3 flex-1 min-w-0 text-sm font-medium text-ods-text-secondary\">\n NAME\n </div>\n \n <div className=\"w-24 shrink-0 pr-4 text-sm font-medium text-ods-text-secondary\">\n SIZE\n </div>\n \n <div className=\"w-36 shrink-0 pl-4 text-sm font-medium text-ods-text-secondary\">\n EDITED\n </div>\n \n <div className=\"w-48 shrink-0 pl-4 flex justify-end\">\n {/* Empty space for actions */}\n </div>\n </div>\n \n {/* Table rows */}\n <div className=\"divide-y divide-ods-border rounded-b-lg flex-1 overflow-auto min-h-0\">\n {rowPlaceholders.map((_, idx) => (\n <div key={idx} className=\"bg-ods-card flex items-center h-16 px-4 border-ods-border\">\n {/* Checkbox */}\n <div className=\"mr-4\">\n <Skeleton className=\"h-5 w-5 rounded\" />\n </div>\n \n {/* File icon and name */}\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n <Skeleton className=\"h-6 w-6 rounded\" />\n <div className=\"flex flex-col min-w-0\">\n <Skeleton className=\"h-4 w-32\" />\n </div>\n </div>\n \n {/* Size */}\n <div className=\"w-24 shrink-0 pr-4\">\n <Skeleton className=\"h-4 w-16\" />\n </div>\n \n {/* Modified date */}\n <div className=\"w-36 shrink-0 pl-4\">\n <Skeleton className=\"h-4 w-24\" />\n </div>\n \n {/* Action buttons */}\n <div className=\"w-48 shrink-0 pl-4 flex items-center justify-end gap-1\">\n <Skeleton className=\"h-8 w-8 rounded\" />\n <Skeleton className=\"h-8 w-8 rounded\" />\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\n"]}
1
+ {"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/components/ui/file-manager/index.cjs","../../../../src/components/ui/file-manager/file-manager.tsx","../../../../src/components/ui/file-manager/file-manager-breadcrumb.tsx","../../../../src/components/ui/file-manager/file-manager-action-bar.tsx","../../../../src/components/ui/file-manager/file-manager-table.tsx","../../../../src/components/ui/file-manager/file-manager-table-row.tsx","../../../../src/components/ui/file-manager/file-icon.tsx","../../../../src/components/ui/file-manager/file-manager-context-menu.tsx","../../../../src/components/ui/file-manager/file-manager-empty.tsx","../../../../src/components/ui/file-manager/file-manager-skeleton.tsx"],"names":["jsxs","jsx","Copy","Scissors","React","MoreHorizontal","ChevronRight","useState"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/components/ui/file-manager/index.cjs","sourcesContent":[null,"'use client'\n\nimport React, { useMemo } from 'react'\nimport { cn } from '../../../utils/cn'\nimport { Input } from '../input'\nimport { SearchIcon } from '../../icons-v2-generated/interface/search-icon'\nimport { FileManagerBreadcrumb } from './file-manager-breadcrumb'\nimport { FileManagerActionBar } from './file-manager-action-bar'\nimport { FileManagerTable } from './file-manager-table'\nimport type { FileManagerProps, BreadcrumbItem } from './types'\nimport { Loader2 } from 'lucide-react'\n\nexport function FileManager({ \n files,\n currentPath,\n selectedFiles,\n searchQuery,\n loading = false,\n isSearching,\n showCheckboxes = true,\n showSearch = true,\n showActions = true,\n canPaste = false,\n disableSearch = false,\n resultsCount,\n onNavigate,\n onBreadcrumbClick,\n onSearch,\n onSelectFile,\n onSelectAll,\n onFileAction,\n onFileClick,\n onFolderOpen,\n className \n}: FileManagerProps) {\n const breadcrumbItems = useMemo((): BreadcrumbItem[] => {\n const items: BreadcrumbItem[] = []\n \n items.push({ label: 'Root', path: '' })\n \n if (!currentPath || currentPath === '' || currentPath === '/') {\n return items\n }\n \n const isWindowsPath = currentPath.includes('\\\\') || /^[A-Za-z]:/.test(currentPath)\n const separator = isWindowsPath ? '\\\\' : '/'\n \n const parts = currentPath.split(separator).filter(Boolean)\n \n let startIndex = 0\n if (isWindowsPath && parts.length > 0) {\n const driveMatch = parts[0].match(/^([A-Za-z]:)/)\n if (driveMatch) {\n items.push({\n label: driveMatch[1],\n path: driveMatch[1] + separator\n })\n if (parts[0] === driveMatch[1]) {\n startIndex = 1\n } else {\n parts[0] = parts[0].substring(driveMatch[1].length)\n }\n }\n }\n \n let accumulatedPath = ''\n if (isWindowsPath && items.length > 1) {\n accumulatedPath = items[items.length - 1].path\n }\n \n for (let i = startIndex; i < parts.length; i++) {\n const part = parts[i]\n if (!part) continue\n \n if (isWindowsPath) {\n accumulatedPath = accumulatedPath.endsWith(separator) \n ? accumulatedPath + part \n : accumulatedPath + separator + part\n } else {\n accumulatedPath = accumulatedPath === '' || accumulatedPath === '/'\n ? '/' + part \n : accumulatedPath + '/' + part\n }\n \n items.push({\n label: part,\n path: accumulatedPath\n })\n }\n \n return items\n }, [currentPath])\n\n const handleBreadcrumbClick = (path: string) => {\n onBreadcrumbClick?.(path)\n onNavigate?.(path)\n }\n\n const handleFolderOpen = (file: any) => {\n let newPath: string\n \n if (!currentPath || currentPath === '') {\n if (file.name && /^[A-Za-z]:/.test(file.name)) {\n newPath = file.name + (file.name.endsWith('\\\\') ? '' : '\\\\')\n } else {\n newPath = file.name\n }\n } else {\n const separator = currentPath.includes('\\\\') ? '\\\\' : '/'\n \n if (currentPath === '/') {\n newPath = '/' + file.name\n } else if (currentPath.endsWith(separator)) {\n newPath = currentPath + file.name\n } else {\n newPath = currentPath + separator + file.name\n }\n }\n \n onFolderOpen?.(file)\n onNavigate?.(newPath)\n }\n\n const handleSelectAll = (selected: boolean) => {\n onSelectAll?.(selected)\n }\n\n const handleSelectFile = (fileId: string, selected: boolean) => {\n onSelectFile?.(fileId, selected)\n }\n\n return (\n <div className={cn('flex flex-col h-full bg-ods-bg', className)}>\n <div className=\"flex-1 flex flex-col py-2 space-y-6 min-h-0\">\n <div className=\"flex flex-col justify-between gap-4 mb-4 md:flex-row\">\n <FileManagerBreadcrumb\n items={breadcrumbItems}\n onItemClick={handleBreadcrumbClick}\n />\n\n {showActions && (\n <FileManagerActionBar\n canPaste={canPaste}\n hasSelection={selectedFiles.length > 0}\n onNewFolder={() => onFileAction?.('new-folder')}\n onPaste={() => onFileAction?.('paste')}\n onCopy={() => onFileAction?.('copy')}\n onCut={() => onFileAction?.('cut')}\n onUpload={() => onFileAction?.('upload')}\n onSelectAll={() => handleSelectAll(true)}\n />\n )}\n </div>\n \n {showSearch && (\n <Input\n value={searchQuery}\n onChange={(e) => onSearch?.(e.target.value)}\n placeholder=\"Search...\"\n disabled={disableSearch}\n startAdornment={<SearchIcon />}\n loading={isSearching}\n />\n )}\n \n <div className=\"flex-1 min-h-0\">\n <FileManagerTable\n files={files}\n selectedFiles={selectedFiles}\n resultsCount={resultsCount || files.length}\n showCheckboxes={showCheckboxes}\n loading={loading}\n isSearchResult={!!searchQuery}\n onSelectFile={handleSelectFile}\n onSelectAll={handleSelectAll}\n onFileClick={onFileClick}\n onFolderOpen={handleFolderOpen}\n onFileAction={onFileAction}\n />\n </div>\n </div>\n </div>\n )\n}","'use client'\n\nimport React from 'react'\nimport { ChevronRight } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\nimport type { FileManagerBreadcrumbProps } from './types'\n\nexport function FileManagerBreadcrumb({ \n items, \n onItemClick, \n className \n}: FileManagerBreadcrumbProps) {\n return (\n <nav className={cn(\n 'flex flex-wrap items-center gap-x-1 gap-y-1 text-sm break-words',\n className\n )}>\n {items.map((item, index) => (\n <React.Fragment key={item.path}>\n {index > 0 && (\n <ChevronRight className=\"h-4 w-4 text-ods-text-tertiary flex-shrink-0\" />\n )}\n <button\n onClick={() => onItemClick?.(item.path)}\n className={cn(\n 'shrink-0 px-1 py-0.5 rounded hover:bg-ods-bg-secondary transition-colors',\n 'text-ods-text-primary hover:text-ods-accent text-left break-all',\n index === items.length - 1 && 'font-medium'\n )}\n >\n {item.label}\n </button>\n </React.Fragment>\n ))}\n </nav>\n )\n}","'use client'\n\nimport React from 'react'\nimport { FolderPlus, Clipboard, Upload, CheckSquare, Copy, Scissors } from 'lucide-react'\nimport { Button } from '../button'\nimport { cn } from '../../../utils/cn'\nimport type { FileManagerActionBarProps } from './types'\n\nexport function FileManagerActionBar({ \n canPaste = false,\n hasSelection = false,\n onNewFolder,\n onPaste,\n onCopy,\n onCut,\n onUpload,\n onSelectAll,\n className \n}: FileManagerActionBarProps) {\n return (\n <div className={cn('flex items-center gap-4 flex-wrap md:justify-end', className)}>\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n onClick={onNewFolder}\n leftIcon={<FolderPlus className=\"h-4 w-4\" />}\n >\n New Folder\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n onClick={onCopy}\n disabled={!hasSelection}\n leftIcon={<Copy className=\"h-4 w-4\" />}\n >\n Copy\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n onClick={onCut}\n disabled={!hasSelection}\n leftIcon={<Scissors className=\"h-4 w-4\" />}\n >\n Cut\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n onClick={onPaste}\n disabled={!canPaste}\n leftIcon={<Clipboard className=\"h-4 w-4\" />}\n >\n Paste\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n onClick={onUpload}\n leftIcon={<Upload className=\"h-4 w-4\" />}\n >\n Upload\n </Button>\n\n <Button\n variant=\"outline\"\n size=\"small-legacy\"\n onClick={onSelectAll}\n leftIcon={<CheckSquare className=\"h-4 w-4\" />}\n >\n Select All\n </Button>\n </div>\n )\n}","'use client'\n\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport { Checkbox } from '../checkbox'\nimport { Skeleton } from '../skeleton'\nimport { cn } from '../../../utils/cn'\nimport { FileManagerTableRow } from './file-manager-table-row'\nimport { FileManagerEmpty } from './file-manager-empty'\nimport type { FileManagerTableProps } from './types'\n\nexport function FileManagerTable({ \n files,\n selectedFiles,\n showCheckboxes = true,\n loading = false,\n isSearchResult = false,\n onSelectFile,\n onSelectAll,\n onFileClick,\n onFolderOpen,\n onFileAction,\n className \n}: FileManagerTableProps) {\n const allSelected = useMemo(() => {\n return files.length > 0 && selectedFiles.length === files.length\n }, [files.length, selectedFiles.length])\n\n const someSelected = useMemo(() => {\n return selectedFiles.length > 0 && selectedFiles.length < files.length\n }, [files.length, selectedFiles.length])\n\n const containerRef = useRef<HTMLDivElement>(null)\n const [tableHeight, setTableHeight] = useState<number | null>(null)\n\n useLayoutEffect(() => {\n if (loading || files.length === 0) {\n setTableHeight(null)\n return\n }\n\n const handleResize = () => {\n const node = containerRef.current\n if (!node) return\n const rect = node.getBoundingClientRect()\n const availableHeight = window.innerHeight - rect.top\n setTableHeight(availableHeight > 0 ? availableHeight : null)\n }\n\n handleResize()\n\n window.addEventListener('resize', handleResize)\n window.addEventListener('scroll', handleResize, true)\n\n const resizeObserver = new ResizeObserver(handleResize)\n const parent = containerRef.current?.parentElement\n if (parent) {\n resizeObserver.observe(parent)\n } else if (containerRef.current) {\n resizeObserver.observe(containerRef.current)\n }\n\n return () => {\n window.removeEventListener('resize', handleResize)\n window.removeEventListener('scroll', handleResize, true)\n resizeObserver.disconnect()\n }\n }, [loading, files.length])\n\n const handleSelectAll = (checked: boolean) => {\n onSelectAll?.(checked)\n }\n\n if (loading) {\n const skeletonRows = 8\n \n return (\n <div className={cn('bg-ods-bg border border-ods-border rounded-lg flex flex-col', className)}>\n {/* Table header */}\n <div className=\"flex items-center h-12 px-4 bg-ods-bg-secondary border-b border-ods-border rounded-t-lg\">\n {showCheckboxes && (\n <div className=\"mr-4\">\n <Skeleton className=\"h-5 w-5 rounded\" />\n </div>\n )}\n \n <div className=\"flex items-center gap-3 flex-1 min-w-0 text-sm font-medium text-ods-text-secondary\">\n NAME\n </div>\n \n <div className=\"w-24 shrink-0 pr-4 text-sm font-medium text-ods-text-secondary\">\n SIZE\n </div>\n \n <div className=\"w-36 shrink-0 pl-4 text-sm font-medium text-ods-text-secondary\">\n EDITED\n </div>\n \n <div className=\"w-48 shrink-0 pl-4 flex justify-end\">\n {/* Space for action buttons */}\n </div>\n </div>\n \n {/* Skeleton rows */}\n <div className=\"divide-y divide-ods-border rounded-b-lg flex-1 overflow-auto\">\n {Array.from({ length: skeletonRows }).map((_, idx) => (\n <div key={idx} className=\"bg-ods-card group flex items-center h-16 px-4 border-ods-border\">\n {showCheckboxes && (\n <div className=\"mr-4\">\n <Skeleton className=\"h-5 w-5 rounded\" />\n </div>\n )}\n \n {/* File icon and name column */}\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n <Skeleton className=\"h-6 w-6 rounded\" />\n <div className=\"flex flex-col min-w-0\">\n <Skeleton className=\"h-4 w-32\" />\n {isSearchResult && (\n <Skeleton className=\"h-3 w-48 mt-1\" />\n )}\n </div>\n </div>\n \n {/* Size column */}\n <div className=\"w-24 shrink-0 pr-4\">\n <Skeleton className=\"h-4 w-16\" />\n </div>\n \n {/* Modified date column */}\n <div className=\"w-36 shrink-0 pl-4\">\n <Skeleton className=\"h-4 w-24\" />\n </div>\n \n {/* Action buttons column */}\n <div className=\"w-48 shrink-0 pl-4 flex items-center justify-end gap-1\">\n <Skeleton className=\"h-8 w-8 rounded\" />\n <Skeleton className=\"h-8 w-8 rounded\" />\n </div>\n </div>\n ))}\n </div>\n </div>\n )\n }\n\n if (files.length === 0) {\n return <FileManagerEmpty />\n }\n\n return (\n <div\n ref={containerRef}\n className={cn('bg-ods-bg border border-ods-border rounded-lg flex flex-col', className)}\n style={tableHeight ? { height: `${tableHeight}px` } : undefined}\n >\n <div className=\"flex items-center h-12 px-4 bg-ods-bg-secondary border-b border-ods-border rounded-t-lg\">\n {showCheckboxes && (\n <div className=\"mr-4\">\n <Checkbox\n checked={allSelected || someSelected}\n onCheckedChange={handleSelectAll}\n className=\"h-5 w-5\"\n />\n </div>\n )}\n \n <div className=\"flex items-center gap-3 flex-1 min-w-0 text-sm font-medium text-ods-text-secondary\">\n NAME\n </div>\n \n <div className=\"w-24 shrink-0 pr-4 text-sm font-medium text-ods-text-secondary\">\n SIZE\n </div>\n \n <div className=\"w-36 shrink-0 pl-4 text-sm font-medium text-ods-text-secondary\">\n EDITED\n </div>\n \n <div className=\"w-48 shrink-0 pl-4 flex justify-end\">\n {/* Space for action buttons */}\n </div>\n </div>\n \n <div className=\"divide-y divide-ods-border rounded-b-lg flex-1 overflow-auto\">\n {files.map((file) => (\n <FileManagerTableRow\n key={file.id}\n file={file}\n isSelected={selectedFiles.includes(file.id)}\n showCheckbox={showCheckboxes}\n showPath={isSearchResult}\n onSelect={(selected) => onSelectFile?.(file.id, selected)}\n onClick={() => {\n if (isSearchResult) {\n onFileClick?.(file)\n } else if (file.type === 'folder') {\n onFolderOpen?.(file)\n }\n }}\n onDoubleClick={() => {\n if (file.type === 'folder' && !isSearchResult) {\n onFolderOpen?.(file)\n }\n }}\n onActionClick={(action) => onFileAction?.(action, file.id)}\n />\n ))}\n </div>\n </div>\n )\n}","'use client'\n\nimport React, { useState } from 'react'\nimport { ChevronRight, MoreHorizontal } from 'lucide-react'\nimport { Checkbox } from '../checkbox'\nimport { Button } from '../button'\nimport { cn } from '../../../utils/cn'\nimport { FileIcon } from './file-icon'\nimport { FileManagerContextMenu } from './file-manager-context-menu'\nimport type { FileManagerTableRowProps } from './types'\n\nexport function FileManagerTableRow({ \n file,\n isSelected = false,\n showCheckbox = true,\n showPath = false,\n onSelect,\n onClick,\n onDoubleClick,\n onContextMenu,\n onActionClick,\n className \n}: FileManagerTableRowProps) {\n const [contextMenuOpen, setContextMenuOpen] = useState(false)\n \n const handleRowClick = (e: React.MouseEvent) => {\n // Don't trigger row click if clicking on interactive elements\n if ((e.target as HTMLElement).closest('[data-no-row-click]')) {\n return\n }\n onClick?.()\n }\n\n const handleCheckboxChange = (checked: boolean) => {\n onSelect?.(checked)\n }\n\n const handleContextAction = (action: any) => {\n onActionClick?.(action)\n setContextMenuOpen(false)\n }\n\n const fileExtension = file.type === 'file' \n ? file.name.split('.').pop() \n : undefined\n\n return (\n <div\n className={cn(\n 'bg-ods-card group flex items-center h-16 px-4 border-ods-border',\n 'hover:bg-ods-bg-secondary transition-colors cursor-pointer',\n isSelected && 'bg-ods-bg-secondary',\n className\n )}\n onClick={handleRowClick}\n onDoubleClick={onDoubleClick}\n onContextMenu={(e) => {\n e.preventDefault()\n onContextMenu?.(e)\n }}\n >\n {showCheckbox && (\n <div className=\"mr-4\" data-no-row-click>\n <Checkbox\n checked={isSelected}\n onCheckedChange={handleCheckboxChange}\n className=\"h-5 w-5\"\n />\n </div>\n )}\n \n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n <FileIcon \n type={file.type} \n extension={fileExtension}\n size=\"md\" \n />\n <div className=\"flex flex-col min-w-0\">\n <span className=\"text-sm text-ods-text-primary truncate\" title={file.name}>\n {file.name}\n </span>\n {showPath && file.path && (\n <span className=\"text-xs text-ods-text-secondary truncate\" title={file.path}>\n {file.path}\n </span>\n )}\n </div>\n </div>\n \n <div className=\"w-24 shrink-0 pr-4 text-sm text-ods-text-secondary\">\n {file.size || ''}\n </div>\n \n <div className=\"w-36 shrink-0 pl-4 text-sm text-ods-text-secondary\">\n {file.modified}\n </div>\n \n <div className=\"w-48 shrink-0 pl-4 flex items-center justify-end gap-1\" data-no-row-click>\n <FileManagerContextMenu\n open={contextMenuOpen}\n onOpenChange={setContextMenuOpen}\n onAction={handleContextAction}\n fileType={file.type}\n trigger={\n <Button\n variant=\"transparent\"\n size=\"small-legacy\"\n className=\"h-8 w-8 p-0 opacity-0 group-hover:opacity-100 transition-opacity\"\n onClick={(e) => {\n e.stopPropagation()\n }}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n </Button>\n }\n />\n \n {file.type === 'folder' ? (\n <Button\n variant=\"transparent\"\n size=\"small-legacy\"\n className=\"h-8 w-8 p-0\"\n onClick={(e) => {\n e.stopPropagation()\n onDoubleClick?.()\n }}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n ) : (\n <div className=\"w-8\" /> /* Space to maintain alignment when no chevron */\n )}\n </div>\n </div>\n )\n}","'use client'\n\nimport React from 'react'\nimport { Folder, File, FileText, Image, FileVideo, FileAudio, FileCode, FileArchive } from 'lucide-react'\nimport { cn } from '../../../utils/cn'\nimport type { FileIconProps } from './types'\n\nconst sizeMap = {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-6 w-6'\n}\n\nconst getFileIcon = (extension?: string) => {\n if (!extension) return File\n \n const ext = extension.toLowerCase()\n \n // Document files\n if (['txt', 'doc', 'docx', 'pdf', 'rtf'].includes(ext)) return FileText\n \n // Image files\n if (['jpg', 'jpeg', 'png', 'gif', 'svg', 'webp', 'bmp'].includes(ext)) return Image\n \n // Video files\n if (['mp4', 'avi', 'mov', 'wmv', 'flv', 'mkv'].includes(ext)) return FileVideo\n \n // Audio files\n if (['mp3', 'wav', 'flac', 'aac', 'ogg', 'wma'].includes(ext)) return FileAudio\n \n // Code files\n if (['js', 'ts', 'jsx', 'tsx', 'py', 'java', 'c', 'cpp', 'cs', 'html', 'css', 'json', 'xml'].includes(ext)) return FileCode\n \n // Archive files\n if (['zip', 'rar', '7z', 'tar', 'gz', 'bz2'].includes(ext)) return FileArchive\n \n return File\n}\n\nexport function FileIcon({ type, extension, className, size = 'md' }: FileIconProps) {\n const Icon = type === 'folder' ? Folder : getFileIcon(extension)\n \n return (\n <Icon \n className={cn(\n sizeMap[size],\n type === 'folder' ? 'text-ods-accent' : 'text-ods-text-secondary',\n className\n )}\n />\n )\n}","'use client'\n\nimport React from 'react'\nimport { Download, Copy, Edit2, Scissors, Archive, Trash2, MoreHorizontal } from 'lucide-react'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../dropdown-menu'\nimport { Button } from '../button'\nimport { cn } from '../../../utils/cn'\nimport type { FileManagerContextMenuProps } from './types'\n\nexport function FileManagerContextMenu({ \n open,\n onOpenChange,\n onAction,\n fileType = 'file',\n hasSelection = false,\n trigger,\n className \n}: FileManagerContextMenuProps) {\n const menuItems = [\n {\n action: 'download' as const,\n label: 'Download',\n icon: Download,\n show: fileType === 'file' || hasSelection\n },\n {\n action: 'copy' as const,\n label: 'Copy',\n icon: Copy,\n show: true\n },\n {\n action: 'rename' as const,\n label: 'Rename',\n icon: Edit2,\n show: !hasSelection\n },\n {\n action: 'cut' as const,\n label: 'Cut',\n icon: Scissors,\n show: true\n },\n {\n action: 'delete' as const,\n label: 'Delete',\n icon: Trash2,\n show: true,\n separator: true\n }\n ]\n\n const visibleItems = menuItems.filter(item => item.show)\n\n return (\n <DropdownMenu open={open} onOpenChange={onOpenChange}>\n <DropdownMenuTrigger asChild>\n {trigger || (\n <Button\n variant=\"transparent\"\n size=\"small-legacy\"\n className=\"h-8 w-8 p-0\"\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n </Button>\n )}\n </DropdownMenuTrigger>\n <DropdownMenuContent \n align=\"end\" \n className={cn('w-56', className)}\n onClick={(e) => e.stopPropagation()}\n >\n {visibleItems.map((item, index) => (\n <React.Fragment key={item.action}>\n {item.separator && index > 0 && <DropdownMenuSeparator />}\n <DropdownMenuItem\n onClick={(e) => {\n e.stopPropagation()\n onAction(item.action)\n }}\n className=\"cursor-pointer\"\n >\n <item.icon className=\"mr-3 h-4 w-4\" />\n <span>{item.label}</span>\n </DropdownMenuItem>\n </React.Fragment>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}","'use client'\n\nimport React from 'react'\nimport { FolderOpen } from 'lucide-react'\nimport { Button } from '../button'\nimport { cn } from '../../../utils/cn'\nimport type { FileManagerEmptyProps } from './types'\n\nexport function FileManagerEmpty({ \n message = 'No files or folders found',\n description = 'This folder is empty. Create a new folder or upload files to get started.',\n action,\n className \n}: FileManagerEmptyProps) {\n return (\n <div className={cn(\n 'flex flex-col items-center justify-center py-20 px-4',\n className\n )}>\n <div className=\"p-4 bg-ods-bg-secondary rounded-full mb-6\">\n <FolderOpen className=\"h-12 w-12 text-ods-text-tertiary\" />\n </div>\n \n <h3 className=\"text-lg font-medium text-ods-text-primary mb-2\">\n {message}\n </h3>\n \n <p className=\"text-sm text-ods-text-secondary text-center max-w-md mb-6\">\n {description}\n </p>\n \n {action && (\n <Button\n variant=\"accent\"\n size=\"small-legacy\"\n onClick={action.onClick}\n >\n {action.label}\n </Button>\n )}\n </div>\n )\n}","'use client'\n\nimport React from 'react'\nimport { Skeleton } from '../skeleton'\n\ninterface FileManagerSkeletonProps {\n rows?: number\n showSearch?: boolean\n showActions?: boolean\n}\n\nexport function FileManagerSkeleton({ \n rows = 8,\n showSearch = true,\n showActions = true\n}: FileManagerSkeletonProps) {\n const rowPlaceholders = Array.from({ length: rows })\n\n return (\n <div className=\"flex flex-col h-full bg-ods-bg\">\n <div className=\"flex-1 flex flex-col py-6 space-y-6 min-h-0\">\n {/* Breadcrumb and Action Bar */}\n <div className=\"flex flex-wrap items-start justify-between gap-4\">\n {/* Breadcrumb skeleton */}\n <div className=\"flex-1 min-w-0 flex items-center gap-2\">\n <Skeleton className=\"h-5 w-12\" />\n <Skeleton className=\"h-4 w-4 rounded-full\" />\n <Skeleton className=\"h-5 w-20\" />\n <Skeleton className=\"h-4 w-4 rounded-full\" />\n <Skeleton className=\"h-5 w-24\" />\n </div>\n \n {/* Action buttons skeleton */}\n {showActions && (\n <div className=\"flex-shrink-0 flex items-center gap-2\">\n <Skeleton className=\"h-9 w-24\" />\n <Skeleton className=\"h-9 w-20\" />\n <Skeleton className=\"h-9 w-20\" />\n <Skeleton className=\"h-9 w-28\" />\n </div>\n )}\n </div>\n \n {/* Search bar skeleton */}\n {showSearch && (\n <Skeleton className=\"h-10 w-full rounded-lg\" />\n )}\n \n {/* Table skeleton */}\n <div className=\"flex-1 min-h-0\">\n <div className=\"bg-ods-bg border border-ods-border rounded-lg flex flex-col\">\n {/* Table header */}\n <div className=\"flex items-center h-12 px-4 bg-ods-bg-secondary border-b border-ods-border rounded-t-lg\">\n {/* Checkbox */}\n <div className=\"mr-4\">\n <Skeleton className=\"h-5 w-5 rounded\" />\n </div>\n \n {/* Column headers */}\n <div className=\"flex items-center gap-3 flex-1 min-w-0 text-sm font-medium text-ods-text-secondary\">\n NAME\n </div>\n \n <div className=\"w-24 shrink-0 pr-4 text-sm font-medium text-ods-text-secondary\">\n SIZE\n </div>\n \n <div className=\"w-36 shrink-0 pl-4 text-sm font-medium text-ods-text-secondary\">\n EDITED\n </div>\n \n <div className=\"w-48 shrink-0 pl-4 flex justify-end\">\n {/* Empty space for actions */}\n </div>\n </div>\n \n {/* Table rows */}\n <div className=\"divide-y divide-ods-border rounded-b-lg flex-1 overflow-auto min-h-0\">\n {rowPlaceholders.map((_, idx) => (\n <div key={idx} className=\"bg-ods-card flex items-center h-16 px-4 border-ods-border\">\n {/* Checkbox */}\n <div className=\"mr-4\">\n <Skeleton className=\"h-5 w-5 rounded\" />\n </div>\n \n {/* File icon and name */}\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n <Skeleton className=\"h-6 w-6 rounded\" />\n <div className=\"flex flex-col min-w-0\">\n <Skeleton className=\"h-4 w-32\" />\n </div>\n </div>\n \n {/* Size */}\n <div className=\"w-24 shrink-0 pr-4\">\n <Skeleton className=\"h-4 w-16\" />\n </div>\n \n {/* Modified date */}\n <div className=\"w-36 shrink-0 pl-4\">\n <Skeleton className=\"h-4 w-24\" />\n </div>\n \n {/* Action buttons */}\n <div className=\"w-48 shrink-0 pl-4 flex items-center justify-end gap-1\">\n <Skeleton className=\"h-8 w-8 rounded\" />\n <Skeleton className=\"h-8 w-8 rounded\" />\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n}\n\n"]}
@@ -10,7 +10,7 @@ import {
10
10
  Input,
11
11
  Skeleton,
12
12
  init_button2 as init_button
13
- } from "../../../chunk-55HF462A.js";
13
+ } from "../../../chunk-CPXLQ57U.js";
14
14
  import {
15
15
  cn,
16
16
  init_cn
@@ -331,8 +331,8 @@ function FileManagerTableRow({
331
331
  }
332
332
  ),
333
333
  /* @__PURE__ */ jsxs4("div", { className: "flex flex-col min-w-0", children: [
334
- /* @__PURE__ */ jsx5("span", { className: "text-sm text-ods-text-primary truncate", children: file.name }),
335
- showPath && file.path && /* @__PURE__ */ jsx5("span", { className: "text-xs text-ods-text-secondary truncate", children: file.path })
334
+ /* @__PURE__ */ jsx5("span", { className: "text-sm text-ods-text-primary truncate", title: file.name, children: file.name }),
335
+ showPath && file.path && /* @__PURE__ */ jsx5("span", { className: "text-xs text-ods-text-secondary truncate", title: file.path, children: file.path })
336
336
  ] })
337
337
  ] }),
338
338
  /* @__PURE__ */ jsx5("div", { className: "w-24 shrink-0 pr-4 text-sm text-ods-text-secondary", children: file.size || "" }),