@flamingo-stack/openframe-frontend-core 0.0.296-snapshot.20260621021605 → 0.0.296
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -9
- package/dist/chunk-26PKDALD.js +2379 -0
- package/dist/chunk-26PKDALD.js.map +1 -0
- package/dist/chunk-3MCHAFHB.js +89 -0
- package/dist/chunk-3MCHAFHB.js.map +1 -0
- package/dist/{chunk-PI4WSYQV.js → chunk-3ZXUQQL4.js} +2 -2
- package/dist/{chunk-WMSTJAZT.cjs → chunk-5E2HOSSH.cjs} +51 -913
- package/dist/chunk-5E2HOSSH.cjs.map +1 -0
- package/dist/{chunk-IL47XWV5.js → chunk-5P3B2LZW.js} +14 -8
- package/dist/{chunk-IL47XWV5.js.map → chunk-5P3B2LZW.js.map} +1 -1
- package/dist/chunk-66AANIOC.cjs +619 -0
- package/dist/chunk-66AANIOC.cjs.map +1 -0
- package/dist/{chunk-AD6C23QY.js → chunk-6GCI7JOE.js} +7 -8
- package/dist/{chunk-AD6C23QY.js.map → chunk-6GCI7JOE.js.map} +1 -1
- package/dist/chunk-6JINAOI7.cjs +311 -0
- package/dist/chunk-6JINAOI7.cjs.map +1 -0
- package/dist/{chunk-2QG57XOJ.js → chunk-7RIYT7ZH.js} +205 -1067
- package/dist/chunk-7RIYT7ZH.js.map +1 -0
- package/dist/{chunk-L6PSSIUQ.cjs → chunk-AQOWFSMB.cjs} +1 -1
- package/dist/chunk-AQOWFSMB.cjs.map +1 -0
- package/dist/chunk-BOCFIKYS.cjs +3009 -0
- package/dist/chunk-BOCFIKYS.cjs.map +1 -0
- package/dist/{chunk-54KNMC2R.cjs → chunk-D3LEFMOA.cjs} +3 -3
- package/dist/{chunk-54KNMC2R.cjs.map → chunk-D3LEFMOA.cjs.map} +1 -1
- package/dist/chunk-D652TJBQ.js +3009 -0
- package/dist/chunk-D652TJBQ.js.map +1 -0
- package/dist/{chunk-PWQUAVA3.js → chunk-E4XABBSU.js} +98 -338
- package/dist/chunk-E4XABBSU.js.map +1 -0
- package/dist/{chunk-JALO4TAZ.js → chunk-EL6QLAWX.js} +55 -357
- package/dist/chunk-EL6QLAWX.js.map +1 -0
- package/dist/{chunk-6C526VNN.cjs → chunk-EYEW6PTA.cjs} +118 -358
- package/dist/chunk-EYEW6PTA.cjs.map +1 -0
- package/dist/chunk-FQJK446R.js +1606 -0
- package/dist/chunk-FQJK446R.js.map +1 -0
- package/dist/{chunk-4PSQS3SW.cjs → chunk-GLLDTKZK.cjs} +9 -7
- package/dist/chunk-GLLDTKZK.cjs.map +1 -0
- package/dist/{chunk-FQOTC3UU.cjs → chunk-IE6OU3WQ.cjs} +16 -318
- package/dist/chunk-IE6OU3WQ.cjs.map +1 -0
- package/dist/chunk-J54Z3OCR.cjs +1606 -0
- package/dist/chunk-J54Z3OCR.cjs.map +1 -0
- package/dist/{chunk-PC746XCO.js → chunk-K2PFPBMF.js} +5563 -15048
- package/dist/chunk-K2PFPBMF.js.map +1 -0
- package/dist/chunk-KXCRGTRN.cjs +2379 -0
- package/dist/chunk-KXCRGTRN.cjs.map +1 -0
- package/dist/{chunk-IZ7JSBFP.js → chunk-LCNMR277.js} +1 -1
- package/dist/chunk-LCNMR277.js.map +1 -0
- package/dist/chunk-LFGGF7OT.cjs +449 -0
- package/dist/chunk-LFGGF7OT.cjs.map +1 -0
- package/dist/chunk-M2OCXTNT.js +311 -0
- package/dist/chunk-M2OCXTNT.js.map +1 -0
- package/dist/{chunk-L7ULJKG7.js → chunk-MBFWU2EM.js} +10 -6
- package/dist/{chunk-L7ULJKG7.js.map → chunk-MBFWU2EM.js.map} +1 -1
- package/dist/chunk-ME4EVDFP.js +619 -0
- package/dist/chunk-ME4EVDFP.js.map +1 -0
- package/dist/chunk-OQ6X7ZOC.js +449 -0
- package/dist/chunk-OQ6X7ZOC.js.map +1 -0
- package/dist/{chunk-4TLE6VLU.js → chunk-OY7OF7E7.js} +24 -30
- package/dist/chunk-OY7OF7E7.js.map +1 -0
- package/dist/chunk-POKKCWKF.js +354 -0
- package/dist/chunk-POKKCWKF.js.map +1 -0
- package/dist/{chunk-GUTS7HGA.cjs → chunk-QHIXS3W2.cjs} +2514 -11999
- package/dist/chunk-QHIXS3W2.cjs.map +1 -0
- package/dist/chunk-TFSYSWPS.cjs +89 -0
- package/dist/chunk-TFSYSWPS.cjs.map +1 -0
- package/dist/{chunk-53FUMSZ5.cjs → chunk-W6M2FLLT.cjs} +46 -40
- package/dist/chunk-W6M2FLLT.cjs.map +1 -0
- package/dist/{chunk-3JIQVE7T.js → chunk-WHMATDVP.js} +15 -9
- package/dist/{chunk-3JIQVE7T.js.map → chunk-WHMATDVP.js.map} +1 -1
- package/dist/{chunk-YBYI62OE.cjs → chunk-X647HY3F.cjs} +37 -33
- package/dist/chunk-X647HY3F.cjs.map +1 -0
- package/dist/{chunk-UNVE2SDJ.cjs → chunk-X6BV7MB7.cjs} +31 -37
- package/dist/chunk-X6BV7MB7.cjs.map +1 -0
- package/dist/{chunk-7OVGB2DQ.cjs → chunk-XREEV72C.cjs} +25 -19
- package/dist/chunk-XREEV72C.cjs.map +1 -0
- package/dist/chunk-YETA25JW.cjs +354 -0
- package/dist/chunk-YETA25JW.cjs.map +1 -0
- package/dist/{chunk-FCDQNTDG.cjs → chunk-YIGPRLQY.cjs} +20 -21
- package/dist/chunk-YIGPRLQY.cjs.map +1 -0
- package/dist/{chunk-X4DOXQRT.js → chunk-ZP4AVIZP.js} +6 -4
- package/dist/{chunk-X4DOXQRT.js.map → chunk-ZP4AVIZP.js.map} +1 -1
- package/dist/components/chat/index.cjs +18 -8
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.js +85 -75
- package/dist/components/contact/index.cjs +15 -8
- package/dist/components/contact/index.cjs.map +1 -1
- package/dist/components/contact/index.js +14 -7
- package/dist/components/docs/doc-viewer.d.ts +2 -39
- package/dist/components/docs/doc-viewer.d.ts.map +1 -1
- package/dist/components/docs/index.cjs +9 -17
- package/dist/components/docs/index.cjs.map +1 -1
- package/dist/components/docs/index.d.ts +0 -4
- package/dist/components/docs/index.d.ts.map +1 -1
- package/dist/components/docs/index.js +8 -16
- package/dist/components/docs/use-document-tree.d.ts.map +1 -1
- package/dist/components/embeds/embed-iframe.d.ts.map +1 -1
- package/dist/components/embeds/index.cjs +15 -38
- package/dist/components/embeds/index.cjs.map +1 -1
- package/dist/components/embeds/index.d.ts +0 -8
- package/dist/components/embeds/index.d.ts.map +1 -1
- package/dist/components/embeds/index.js +17 -40
- package/dist/components/faq/index.cjs +16 -9
- package/dist/components/faq/index.cjs.map +1 -1
- package/dist/components/faq/index.js +15 -8
- package/dist/components/features/index.cjs +16 -8
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.js +32 -24
- package/dist/components/index.cjs +452 -257
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +976 -781
- package/dist/components/index.js.map +1 -1
- package/dist/components/layout/page-layout.d.ts +1 -10
- package/dist/components/layout/page-layout.d.ts.map +1 -1
- package/dist/components/layout/title-block.d.ts +1 -17
- package/dist/components/layout/title-block.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +15 -7
- package/dist/components/navigation/index.cjs.map +1 -1
- package/dist/components/navigation/index.js +17 -9
- package/dist/components/onboarding-guides/index.cjs +36 -35
- package/dist/components/onboarding-guides/index.cjs.map +1 -1
- package/dist/components/onboarding-guides/index.js +14 -13
- package/dist/components/onboarding-guides/index.js.map +1 -1
- package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts +1 -1
- package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
- package/dist/components/related-content/index.cjs +16 -9
- package/dist/components/related-content/index.cjs.map +1 -1
- package/dist/components/related-content/index.js +15 -8
- package/dist/components/shared/dev-section/dev-section-page.d.ts +0 -9
- package/dist/components/shared/dev-section/dev-section-page.d.ts.map +1 -1
- package/dist/components/shared/dev-section/dev-section-view.d.ts.map +1 -1
- package/dist/components/shared/dev-section/index.d.ts +1 -1
- package/dist/components/shared/dev-section/index.d.ts.map +1 -1
- package/dist/components/shared/doc-search/use-doc-search.d.ts.map +1 -1
- package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
- package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
- package/dist/components/tickets/index.cjs +112 -100
- package/dist/components/tickets/index.cjs.map +1 -1
- package/dist/components/tickets/index.js +32 -20
- package/dist/components/tickets/index.js.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +52 -50
- package/dist/components/ui/file-manager/index.cjs.map +1 -1
- package/dist/components/ui/file-manager/index.js +6 -4
- package/dist/components/ui/file-manager/index.js.map +1 -1
- package/dist/components/ui/index.cjs +19 -13
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.d.ts +0 -2
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +139 -133
- package/dist/components/ui/release-changelog-section.d.ts +2 -6
- package/dist/components/ui/release-changelog-section.d.ts.map +1 -1
- package/dist/components/ui/simple-markdown-renderer.d.ts +8 -2
- package/dist/components/ui/simple-markdown-renderer.d.ts.map +1 -1
- package/dist/contexts/chat-runtime-context.d.ts +0 -14
- package/dist/contexts/chat-runtime-context.d.ts.map +1 -1
- package/dist/contexts/index.cjs +3 -3
- package/dist/contexts/index.js +5 -5
- package/dist/embed-shims/index.cjs +3 -3
- package/dist/embed-shims/index.cjs.map +1 -1
- package/dist/embed-shims/index.js +4 -4
- package/dist/hooks/index.cjs +9 -4
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.js +11 -6
- package/dist/index.cjs +20 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +364 -358
- package/dist/types/doc-source.d.ts +1 -31
- package/dist/types/doc-source.d.ts.map +1 -1
- package/dist/utils/index.cjs +0 -4
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -4
- package/dist/utils/index.js.map +1 -1
- package/package.json +1 -7
- package/src/components/chat/embeddable-chat.tsx +1 -1
- package/src/components/docs/doc-viewer.tsx +19 -111
- package/src/components/docs/index.ts +0 -17
- package/src/components/docs/use-document-tree.ts +0 -21
- package/src/components/embeds/embed-iframe.tsx +9 -7
- package/src/components/embeds/index.ts +0 -30
- package/src/components/embeds/og-link-preview.tsx +13 -13
- package/src/components/layout/page-layout.tsx +1 -14
- package/src/components/layout/title-block.tsx +62 -40
- package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +3 -3
- package/src/components/shared/dev-section/dev-section-page.tsx +1 -9
- package/src/components/shared/dev-section/dev-section-view.tsx +9 -14
- package/src/components/shared/dev-section/index.ts +1 -1
- package/src/components/shared/doc-search/use-doc-search.ts +3 -7
- package/src/components/shared/legal-document/legal-document-page.tsx +2 -2
- package/src/components/shared/product-release/release-detail-page.tsx +4 -6
- package/src/components/ui/index.ts +0 -2
- package/src/components/ui/release-changelog-section.tsx +2 -7
- package/src/components/ui/simple-markdown-renderer.tsx +11 -7
- package/src/contexts/chat-runtime-context.tsx +0 -14
- package/src/types/doc-source.ts +1 -33
- package/src/utils/index.ts +0 -1
- package/dist/chunk-2QG57XOJ.js.map +0 -1
- package/dist/chunk-4PSQS3SW.cjs.map +0 -1
- package/dist/chunk-4TLE6VLU.js.map +0 -1
- package/dist/chunk-53FUMSZ5.cjs.map +0 -1
- package/dist/chunk-6C526VNN.cjs.map +0 -1
- package/dist/chunk-7OVGB2DQ.cjs.map +0 -1
- package/dist/chunk-F5OB2YAL.cjs +0 -144
- package/dist/chunk-F5OB2YAL.cjs.map +0 -1
- package/dist/chunk-FBWXMMRB.cjs +0 -2
- package/dist/chunk-FBWXMMRB.cjs.map +0 -1
- package/dist/chunk-FCDQNTDG.cjs.map +0 -1
- package/dist/chunk-FQOTC3UU.cjs.map +0 -1
- package/dist/chunk-GUTS7HGA.cjs.map +0 -1
- package/dist/chunk-GZ4C3XW6.js +0 -2
- package/dist/chunk-GZ4C3XW6.js.map +0 -1
- package/dist/chunk-IZ7JSBFP.js.map +0 -1
- package/dist/chunk-JALO4TAZ.js.map +0 -1
- package/dist/chunk-L6PSSIUQ.cjs.map +0 -1
- package/dist/chunk-PC746XCO.js.map +0 -1
- package/dist/chunk-PWQUAVA3.js.map +0 -1
- package/dist/chunk-SA2WPJVO.js +0 -144
- package/dist/chunk-SA2WPJVO.js.map +0 -1
- package/dist/chunk-UNVE2SDJ.cjs.map +0 -1
- package/dist/chunk-WMSTJAZT.cjs.map +0 -1
- package/dist/chunk-YBYI62OE.cjs.map +0 -1
- package/dist/components/case-studies/index.cjs +0 -126
- package/dist/components/case-studies/index.cjs.map +0 -1
- package/dist/components/case-studies/index.d.ts +0 -2
- package/dist/components/case-studies/index.d.ts.map +0 -1
- package/dist/components/case-studies/index.js +0 -126
- package/dist/components/case-studies/index.js.map +0 -1
- package/dist/components/case-studies/share-experience-section.d.ts +0 -48
- package/dist/components/case-studies/share-experience-section.d.ts.map +0 -1
- package/dist/components/docs/docs-hub-page.d.ts +0 -46
- package/dist/components/docs/docs-hub-page.d.ts.map +0 -1
- package/dist/components/docs/skeletons.d.ts +0 -32
- package/dist/components/docs/skeletons.d.ts.map +0 -1
- package/dist/components/docs/use-docs-resolve-link.d.ts +0 -20
- package/dist/components/docs/use-docs-resolve-link.d.ts.map +0 -1
- package/dist/components/embeds/embed-container.d.ts +0 -37
- package/dist/components/embeds/embed-container.d.ts.map +0 -1
- package/dist/components/embeds/file-download-card.d.ts +0 -18
- package/dist/components/embeds/file-download-card.d.ts.map +0 -1
- package/dist/components/embeds/linkedin-embed-client.d.ts +0 -8
- package/dist/components/embeds/linkedin-embed-client.d.ts.map +0 -1
- package/dist/components/embeds/markdown-image.d.ts +0 -5
- package/dist/components/embeds/markdown-image.d.ts.map +0 -1
- package/dist/components/embeds/reddit-embed-client.d.ts +0 -7
- package/dist/components/embeds/reddit-embed-client.d.ts.map +0 -1
- package/dist/components/embeds/rich-markdown-runtime.d.ts +0 -46
- package/dist/components/embeds/rich-markdown-runtime.d.ts.map +0 -1
- package/dist/components/embeds/twitter-embed-client.d.ts +0 -8
- package/dist/components/embeds/twitter-embed-client.d.ts.map +0 -1
- package/dist/components/layout/page-header.d.ts +0 -78
- package/dist/components/layout/page-header.d.ts.map +0 -1
- package/dist/components/layout/page-with-header.d.ts +0 -67
- package/dist/components/layout/page-with-header.d.ts.map +0 -1
- package/dist/components/ui/rich-markdown-renderer.d.ts +0 -34
- package/dist/components/ui/rich-markdown-renderer.d.ts.map +0 -1
- package/dist/utils/page-header-constants.d.ts +0 -15
- package/dist/utils/page-header-constants.d.ts.map +0 -1
- package/dist/utils/social-embed-cache.d.ts +0 -29
- package/dist/utils/social-embed-cache.d.ts.map +0 -1
- package/src/components/case-studies/index.ts +0 -4
- package/src/components/case-studies/share-experience-section.tsx +0 -185
- package/src/components/docs/docs-hub-page.tsx +0 -149
- package/src/components/docs/skeletons.tsx +0 -138
- package/src/components/docs/use-docs-resolve-link.ts +0 -52
- package/src/components/embeds/embed-container.tsx +0 -80
- package/src/components/embeds/file-download-card.tsx +0 -54
- package/src/components/embeds/linkedin-embed-client.tsx +0 -100
- package/src/components/embeds/markdown-image.tsx +0 -88
- package/src/components/embeds/reddit-embed-client.tsx +0 -550
- package/src/components/embeds/rich-markdown-runtime.tsx +0 -79
- package/src/components/embeds/twitter-embed-client.tsx +0 -308
- package/src/components/layout/page-header.tsx +0 -182
- package/src/components/layout/page-with-header.tsx +0 -110
- package/src/components/ui/rich-markdown-renderer.tsx +0 -1203
- package/src/utils/page-header-constants.ts +0 -15
- package/src/utils/social-embed-cache.ts +0 -391
- /package/dist/{chunk-PI4WSYQV.js.map → chunk-3ZXUQQL4.js.map} +0 -0
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
var _chunk6JINAOI7cjs = require('../../../chunk-6JINAOI7.cjs');
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
|
|
@@ -10,7 +11,8 @@
|
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
|
|
15
|
+
var _chunkIE6OU3WQcjs = require('../../../chunk-IE6OU3WQ.cjs');
|
|
14
16
|
require('../../../chunk-WBR7H6E3.cjs');
|
|
15
17
|
|
|
16
18
|
|
|
@@ -56,7 +58,7 @@ function FileManagerBreadcrumb({
|
|
|
56
58
|
}
|
|
57
59
|
|
|
58
60
|
// src/components/ui/file-manager/file-manager-action-bar.tsx
|
|
59
|
-
|
|
61
|
+
_chunkIE6OU3WQcjs.init_button2.call(void 0, );
|
|
60
62
|
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
61
63
|
|
|
62
64
|
|
|
@@ -73,7 +75,7 @@ function FileManagerActionBar({
|
|
|
73
75
|
}) {
|
|
74
76
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkFIG2RKZFcjs.cn.call(void 0, "flex items-center gap-4 flex-wrap md:justify-end", className), children: [
|
|
75
77
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
76
|
-
|
|
78
|
+
_chunkIE6OU3WQcjs.Button,
|
|
77
79
|
{
|
|
78
80
|
variant: "outline",
|
|
79
81
|
size: "small-legacy",
|
|
@@ -83,7 +85,7 @@ function FileManagerActionBar({
|
|
|
83
85
|
}
|
|
84
86
|
),
|
|
85
87
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
86
|
-
|
|
88
|
+
_chunkIE6OU3WQcjs.Button,
|
|
87
89
|
{
|
|
88
90
|
variant: "outline",
|
|
89
91
|
size: "small-legacy",
|
|
@@ -94,7 +96,7 @@ function FileManagerActionBar({
|
|
|
94
96
|
}
|
|
95
97
|
),
|
|
96
98
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
97
|
-
|
|
99
|
+
_chunkIE6OU3WQcjs.Button,
|
|
98
100
|
{
|
|
99
101
|
variant: "outline",
|
|
100
102
|
size: "small-legacy",
|
|
@@ -105,7 +107,7 @@ function FileManagerActionBar({
|
|
|
105
107
|
}
|
|
106
108
|
),
|
|
107
109
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
108
|
-
|
|
110
|
+
_chunkIE6OU3WQcjs.Button,
|
|
109
111
|
{
|
|
110
112
|
variant: "outline",
|
|
111
113
|
size: "small-legacy",
|
|
@@ -116,7 +118,7 @@ function FileManagerActionBar({
|
|
|
116
118
|
}
|
|
117
119
|
),
|
|
118
120
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
119
|
-
|
|
121
|
+
_chunkIE6OU3WQcjs.Button,
|
|
120
122
|
{
|
|
121
123
|
variant: "outline",
|
|
122
124
|
size: "small-legacy",
|
|
@@ -126,7 +128,7 @@ function FileManagerActionBar({
|
|
|
126
128
|
}
|
|
127
129
|
),
|
|
128
130
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
129
|
-
|
|
131
|
+
_chunkIE6OU3WQcjs.Button,
|
|
130
132
|
{
|
|
131
133
|
variant: "outline",
|
|
132
134
|
size: "small-legacy",
|
|
@@ -145,7 +147,7 @@ _chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
|
145
147
|
// src/components/ui/file-manager/file-manager-table-row.tsx
|
|
146
148
|
|
|
147
149
|
|
|
148
|
-
|
|
150
|
+
_chunkIE6OU3WQcjs.init_button2.call(void 0, );
|
|
149
151
|
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
150
152
|
|
|
151
153
|
// src/components/ui/file-manager/file-icon.tsx
|
|
@@ -185,7 +187,7 @@ function FileIcon({ type, extension, className, size = "md" }) {
|
|
|
185
187
|
// src/components/ui/file-manager/file-manager-context-menu.tsx
|
|
186
188
|
|
|
187
189
|
|
|
188
|
-
|
|
190
|
+
_chunkIE6OU3WQcjs.init_button2.call(void 0, );
|
|
189
191
|
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
190
192
|
|
|
191
193
|
function FileManagerContextMenu({
|
|
@@ -231,9 +233,9 @@ function FileManagerContextMenu({
|
|
|
231
233
|
}
|
|
232
234
|
];
|
|
233
235
|
const visibleItems = menuItems.filter((item) => item.show);
|
|
234
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
235
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
236
|
-
|
|
236
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIE6OU3WQcjs.DropdownMenu, { open, onOpenChange, children: [
|
|
237
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIE6OU3WQcjs.DropdownMenuTrigger, { asChild: true, children: trigger || /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
238
|
+
_chunkIE6OU3WQcjs.Button,
|
|
237
239
|
{
|
|
238
240
|
variant: "transparent",
|
|
239
241
|
size: "small-legacy",
|
|
@@ -242,15 +244,15 @@ function FileManagerContextMenu({
|
|
|
242
244
|
}
|
|
243
245
|
) }),
|
|
244
246
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
245
|
-
|
|
247
|
+
_chunkIE6OU3WQcjs.DropdownMenuContent,
|
|
246
248
|
{
|
|
247
249
|
align: "end",
|
|
248
250
|
className: _chunkFIG2RKZFcjs.cn.call(void 0, "w-56", className),
|
|
249
251
|
onClick: (e) => e.stopPropagation(),
|
|
250
252
|
children: visibleItems.map((item, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react2.default.Fragment, { children: [
|
|
251
|
-
item.separator && index > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
253
|
+
item.separator && index > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIE6OU3WQcjs.DropdownMenuSeparator, {}),
|
|
252
254
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
253
|
-
|
|
255
|
+
_chunkIE6OU3WQcjs.DropdownMenuItem,
|
|
254
256
|
{
|
|
255
257
|
onClick: (e) => {
|
|
256
258
|
e.stopPropagation();
|
|
@@ -315,7 +317,7 @@ function FileManagerTableRow({
|
|
|
315
317
|
},
|
|
316
318
|
children: [
|
|
317
319
|
showCheckbox && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", "data-no-row-click": true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
318
|
-
|
|
320
|
+
_chunk6JINAOI7cjs.Checkbox,
|
|
319
321
|
{
|
|
320
322
|
checked: isSelected,
|
|
321
323
|
onCheckedChange: handleCheckboxChange,
|
|
@@ -347,7 +349,7 @@ function FileManagerTableRow({
|
|
|
347
349
|
onAction: handleContextAction,
|
|
348
350
|
fileType: file.type,
|
|
349
351
|
trigger: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
350
|
-
|
|
352
|
+
_chunkIE6OU3WQcjs.Button,
|
|
351
353
|
{
|
|
352
354
|
variant: "transparent",
|
|
353
355
|
size: "small-legacy",
|
|
@@ -361,7 +363,7 @@ function FileManagerTableRow({
|
|
|
361
363
|
}
|
|
362
364
|
),
|
|
363
365
|
file.type === "folder" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
364
|
-
|
|
366
|
+
_chunkIE6OU3WQcjs.Button,
|
|
365
367
|
{
|
|
366
368
|
variant: "transparent",
|
|
367
369
|
size: "small-legacy",
|
|
@@ -380,7 +382,7 @@ function FileManagerTableRow({
|
|
|
380
382
|
}
|
|
381
383
|
|
|
382
384
|
// src/components/ui/file-manager/file-manager-empty.tsx
|
|
383
|
-
|
|
385
|
+
_chunkIE6OU3WQcjs.init_button2.call(void 0, );
|
|
384
386
|
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
385
387
|
|
|
386
388
|
|
|
@@ -398,7 +400,7 @@ function FileManagerEmpty({
|
|
|
398
400
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-lg font-medium text-ods-text-primary mb-2", children: message }),
|
|
399
401
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-sm text-ods-text-secondary text-center max-w-md mb-6", children: description }),
|
|
400
402
|
action && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
401
|
-
|
|
403
|
+
_chunkIE6OU3WQcjs.Button,
|
|
402
404
|
{
|
|
403
405
|
variant: "accent",
|
|
404
406
|
size: "small-legacy",
|
|
@@ -467,26 +469,26 @@ function FileManagerTable({
|
|
|
467
469
|
const skeletonRows = 8;
|
|
468
470
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkFIG2RKZFcjs.cn.call(void 0, "bg-ods-bg border border-ods-border rounded-lg flex flex-col", className), children: [
|
|
469
471
|
/* @__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: [
|
|
470
|
-
showCheckboxes && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
472
|
+
showCheckboxes && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-5 w-5 rounded" }) }),
|
|
471
473
|
/* @__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" }),
|
|
472
474
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-24 shrink-0 pr-4 text-sm font-medium text-ods-text-secondary", children: "SIZE" }),
|
|
473
475
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-36 shrink-0 pl-4 text-sm font-medium text-ods-text-secondary", children: "EDITED" }),
|
|
474
476
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-48 shrink-0 pl-4 flex justify-end" })
|
|
475
477
|
] }),
|
|
476
478
|
/* @__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: [
|
|
477
|
-
showCheckboxes && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
479
|
+
showCheckboxes && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-5 w-5 rounded" }) }),
|
|
478
480
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 flex-1 min-w-0", children: [
|
|
479
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
481
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-6 w-6 rounded" }),
|
|
480
482
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col min-w-0", children: [
|
|
481
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
482
|
-
isSearchResult && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
483
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-4 w-32" }),
|
|
484
|
+
isSearchResult && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-3 w-48 mt-1" })
|
|
483
485
|
] })
|
|
484
486
|
] }),
|
|
485
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-24 shrink-0 pr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
486
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-36 shrink-0 pl-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
487
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-24 shrink-0 pr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-4 w-16" }) }),
|
|
488
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-36 shrink-0 pl-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-4 w-24" }) }),
|
|
487
489
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-48 shrink-0 pl-4 flex items-center justify-end gap-1", children: [
|
|
488
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
489
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
490
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-8 w-8 rounded" }),
|
|
491
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-8 w-8 rounded" })
|
|
490
492
|
] })
|
|
491
493
|
] }, idx)) })
|
|
492
494
|
] });
|
|
@@ -503,7 +505,7 @@ function FileManagerTable({
|
|
|
503
505
|
children: [
|
|
504
506
|
/* @__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: [
|
|
505
507
|
showCheckboxes && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
506
|
-
|
|
508
|
+
_chunk6JINAOI7cjs.Checkbox,
|
|
507
509
|
{
|
|
508
510
|
checked: allSelected || someSelected,
|
|
509
511
|
onCheckedChange: handleSelectAll,
|
|
@@ -667,7 +669,7 @@ function FileManager({
|
|
|
667
669
|
)
|
|
668
670
|
] }),
|
|
669
671
|
showSearch && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
670
|
-
|
|
672
|
+
_chunk6JINAOI7cjs.Input,
|
|
671
673
|
{
|
|
672
674
|
value: searchQuery,
|
|
673
675
|
onChange: (e) => _optionalChain([onSearch, 'optionalCall', _27 => _27(e.target.value)]),
|
|
@@ -707,39 +709,39 @@ function FileManagerSkeleton({
|
|
|
707
709
|
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: [
|
|
708
710
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap items-start justify-between gap-4", children: [
|
|
709
711
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 flex items-center gap-2", children: [
|
|
710
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
711
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
712
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
713
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
714
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
712
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-5 w-12" }),
|
|
713
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-4 w-4 rounded-full" }),
|
|
714
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-5 w-20" }),
|
|
715
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-4 w-4 rounded-full" }),
|
|
716
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-5 w-24" })
|
|
715
717
|
] }),
|
|
716
718
|
showActions && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-shrink-0 flex items-center gap-2", children: [
|
|
717
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
718
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
719
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
720
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
719
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-9 w-24" }),
|
|
720
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-9 w-20" }),
|
|
721
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-9 w-20" }),
|
|
722
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-9 w-28" })
|
|
721
723
|
] })
|
|
722
724
|
] }),
|
|
723
|
-
showSearch && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
725
|
+
showSearch && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-10 w-full rounded-lg" }),
|
|
724
726
|
/* @__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: [
|
|
725
727
|
/* @__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: [
|
|
726
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
728
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-5 w-5 rounded" }) }),
|
|
727
729
|
/* @__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" }),
|
|
728
730
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-24 shrink-0 pr-4 text-sm font-medium text-ods-text-secondary", children: "SIZE" }),
|
|
729
731
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-36 shrink-0 pl-4 text-sm font-medium text-ods-text-secondary", children: "EDITED" }),
|
|
730
732
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-48 shrink-0 pl-4 flex justify-end" })
|
|
731
733
|
] }),
|
|
732
734
|
/* @__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: [
|
|
733
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
735
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-5 w-5 rounded" }) }),
|
|
734
736
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 flex-1 min-w-0", children: [
|
|
735
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
736
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col min-w-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
737
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-6 w-6 rounded" }),
|
|
738
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col min-w-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-4 w-32" }) })
|
|
737
739
|
] }),
|
|
738
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-24 shrink-0 pr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
739
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-36 shrink-0 pl-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
740
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-24 shrink-0 pr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-4 w-16" }) }),
|
|
741
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-36 shrink-0 pl-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-4 w-24" }) }),
|
|
740
742
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-48 shrink-0 pl-4 flex items-center justify-end gap-1", children: [
|
|
741
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
742
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
743
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-8 w-8 rounded" }),
|
|
744
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk6JINAOI7cjs.Skeleton, { className: "h-8 w-8 rounded" })
|
|
743
745
|
] })
|
|
744
746
|
] }, idx)) })
|
|
745
747
|
] }) })
|
|
@@ -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\" 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"]}
|
|
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"]}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
|
-
Button,
|
|
4
3
|
Checkbox,
|
|
4
|
+
Input,
|
|
5
|
+
Skeleton
|
|
6
|
+
} from "../../../chunk-M2OCXTNT.js";
|
|
7
|
+
import {
|
|
8
|
+
Button,
|
|
5
9
|
DropdownMenu,
|
|
6
10
|
DropdownMenuContent,
|
|
7
11
|
DropdownMenuItem,
|
|
8
12
|
DropdownMenuSeparator,
|
|
9
13
|
DropdownMenuTrigger,
|
|
10
|
-
Input,
|
|
11
|
-
Skeleton,
|
|
12
14
|
init_button2 as init_button
|
|
13
|
-
} from "../../../chunk-
|
|
15
|
+
} from "../../../chunk-EL6QLAWX.js";
|
|
14
16
|
import "../../../chunk-OHPI2HRK.js";
|
|
15
17
|
import {
|
|
16
18
|
cn,
|